畢業(yè)論文(操作系統(tǒng)進(jìn)程管理演示系統(tǒng)開發(fā)(生產(chǎn)者-消費者))(共85頁)_第1頁
畢業(yè)論文(操作系統(tǒng)進(jìn)程管理演示系統(tǒng)開發(fā)(生產(chǎn)者-消費者))(共85頁)_第2頁
畢業(yè)論文(操作系統(tǒng)進(jìn)程管理演示系統(tǒng)開發(fā)(生產(chǎn)者-消費者))(共85頁)_第3頁
畢業(yè)論文(操作系統(tǒng)進(jìn)程管理演示系統(tǒng)開發(fā)(生產(chǎn)者-消費者))(共85頁)_第4頁
畢業(yè)論文(操作系統(tǒng)進(jìn)程管理演示系統(tǒng)開發(fā)(生產(chǎn)者-消費者))(共85頁)_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、浙江林學(xué)院天目學(xué)院本科生畢業(yè)設(shè)計(論文)PAGE PAGE 29 本 科 生 畢 業(yè) 設(shè) 計(論文(lnwn))( 2008 屆)工程技術(shù)系題 目: 操作系統(tǒng)進(jìn)程(jnchng)管理演示系統(tǒng)開發(fā)(生產(chǎn)者-消費者) 學(xué)生(xu sheng)姓名: 學(xué) 號: 專業(yè)名稱: 班 級: 指導(dǎo)教師 姓名: 系(部): 信息工程學(xué)院 職稱: 副教授 2008年 5 月 16 日操作系統(tǒng)(xtng)進(jìn)程管理演示系統(tǒng)的研究與實現(xiàn)摘要(zhiyo):操作系統(tǒng)是計算機(jī)專業(yè)最重要(zhngyo)的基礎(chǔ)課程之一,其中同步問題是最難的部分。本文通過分析操作系統(tǒng)進(jìn)程同步與互斥的問題,然后利用P,V操作實現(xiàn)進(jìn)程同步與互斥,并

2、利用該算法設(shè)計了生產(chǎn)者-消費者模擬演示系統(tǒng)。通過該演示系統(tǒng)展現(xiàn)進(jìn)程的管理(生產(chǎn)者-消費者)可以用于操作系統(tǒng)的教學(xué)中。關(guān)鍵詞:生產(chǎn)者-消費者問題;進(jìn)程;同步;互斥Research and Implementation of Process Management System DemonstrationAbstract: Computer operating system is one of the most important basic courses, and synchronization is one of the most difficult part. This paper will

3、 analyze the process of the operating system simultaneously with the problem of mutual exclusion, and then using P, V synchronization achieving the operation about the process of mutually exclusive, and using the algorithm design of the producers - consumers mock demonstration system. Through the de

4、monstration system about the process of management (producers - consumers) can be used for the teaching of the operating system.Key words: producers; consumers; the process of synchronization,;mutex目錄(ml) TOC o 1-4 h z u HYPERLINK l _Toc199329677 1 引言(ynyn) PAGEREF _Toc199329677 h 1 HYPERLINK l _Toc

5、199329678 1.1 選題(xun t)的意義 PAGEREF _Toc199329678 h 1 HYPERLINK l _Toc199329679 1.1.1 開發(fā)系統(tǒng)的背景 PAGEREF _Toc199329679 h 1 HYPERLINK l _Toc199329680 1.1.2開發(fā)系統(tǒng)的目的 PAGEREF _Toc199329680 h 1 HYPERLINK l _Toc199329682 1.1.3 開發(fā)系統(tǒng)的意義 PAGEREF _Toc199329682 h 2 HYPERLINK l _Toc199329683 1.2 P,V操作的簡介 PAGEREF _To

6、c199329683 h 2 HYPERLINK l _Toc199329684 1.2.1 P,V操作的介紹 PAGEREF _Toc199329684 h 2 HYPERLINK l _Toc199329685 1.2.2 進(jìn)程同步的實現(xiàn) PAGEREF _Toc199329685 h 3 HYPERLINK l _Toc199329686 1.2.3 進(jìn)程互斥的實現(xiàn) PAGEREF _Toc199329686 h 3 HYPERLINK l _Toc199329687 1.3 生產(chǎn)者-消費者問題的描述 PAGEREF _Toc199329687 h 3 HYPERLINK l _Toc1

7、99329688 1.3.1 問題的描述 PAGEREF _Toc199329688 h 4 HYPERLINK l _Toc199329689 1.3.2 模型分析 PAGEREF _Toc199329689 h 4 HYPERLINK l _Toc199329691 2 系統(tǒng)需求分析 PAGEREF _Toc199329691 h 7 HYPERLINK l _Toc199329692 2.1 任務(wù)概述 PAGEREF _Toc199329692 h 7 HYPERLINK l _Toc199329693 2.1.1 目標(biāo) PAGEREF _Toc199329693 h 7 HYPERLI

8、NK l _Toc199329694 2.1.2 運行環(huán)境 PAGEREF _Toc199329694 h 7 HYPERLINK l _Toc199329695 2.1.3 編程工具 PAGEREF _Toc199329695 h 7 HYPERLINK l _Toc199329696 2.2 演示系統(tǒng)的分析 PAGEREF _Toc199329696 h 7 HYPERLINK l _Toc199329697 2.2.1 功能需求分析 PAGEREF _Toc199329697 h 7 HYPERLINK l _Toc199329698 2.2.2 系統(tǒng)功能模塊劃分 PAGEREF _To

9、c199329698 h 7 HYPERLINK l _Toc199329699 2.2.3 系統(tǒng)流程分析 PAGEREF _Toc199329699 h 7 HYPERLINK l _Toc199329700 3 系統(tǒng)(xtng)實現(xiàn) PAGEREF _Toc199329700 h 10 HYPERLINK l _Toc199329701 3.1 程序結(jié)構(gòu) PAGEREF _Toc199329701 h 10 HYPERLINK l _Toc199329702 3.1.1生產(chǎn)者模擬函數(shù)(hnsh)代碼 PAGEREF _Toc199329702 h 10 HYPERLINK l _Toc19

10、9329704 3.1.2 消費者模擬(mn)函數(shù)代碼 PAGEREF _Toc199329704 h 11 HYPERLINK l _Toc199329705 3.2 MFC界面的設(shè)計 PAGEREF _Toc199329705 h 12 HYPERLINK l _Toc199329706 3.2.1 MFC的介紹 PAGEREF _Toc199329706 h 12 HYPERLINK l _Toc199329707 3.2.2 MFC界面效果 PAGEREF _Toc199329707 h 14 HYPERLINK l _Toc199329709 3.3 系統(tǒng)功能的實現(xiàn) PAGEREF

11、_Toc199329709 h 17 HYPERLINK l _Toc199329710 4 系統(tǒng)演示 PAGEREF _Toc199329710 h 19 HYPERLINK l _Toc199329711 4.1 系統(tǒng)演示的準(zhǔn)備 PAGEREF _Toc199329711 h 19 HYPERLINK l _Toc199329712 4.2 系統(tǒng)演示的效果 PAGEREF _Toc199329712 h 19 HYPERLINK l _Toc199329713 4.2.1 單生產(chǎn)者-單消費者模擬效果 PAGEREF _Toc199329713 h 19 HYPERLINK l _Toc19

12、9329714 4.2.2 多生產(chǎn)者-多消費者模擬效果 PAGEREF _Toc199329714 h 20 HYPERLINK l _Toc199329717 4.3 系統(tǒng)演示結(jié)論 PAGEREF _Toc199329717 h 22 HYPERLINK l _Toc199329718 5 總結(jié) PAGEREF _Toc199329718 h 23浙江林學(xué)院天目學(xué)院本科生畢業(yè)設(shè)計(論文)1 引言(ynyn)1.1 選題(xun t)的意義 操作系統(tǒng)(co zu x tn)(簡稱OS-operating system)是高等教育計算機(jī)應(yīng)用專業(yè)教學(xué)計劃中一門重要的專業(yè)基礎(chǔ)課程。眾所周知,計算機(jī)是

13、各種信息系統(tǒng)的核心,CPU被喻為計算機(jī)系統(tǒng)的心臟,OS 被喻為計算機(jī)系統(tǒng)的大腦,是用戶與計算機(jī)系統(tǒng)打交道的環(huán)境界面,心臟和大腦的緊密配合,才使計算機(jī)系統(tǒng)成為電子時代、信息社會無所不在的基礎(chǔ)設(shè)施1。OS是在計算機(jī)原理與數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上的一門提高性課程,是了解和掌握計算機(jī)應(yīng)用系統(tǒng)的基礎(chǔ)。其任務(wù)是了解操作系統(tǒng)的基本概念,理解計算機(jī)系統(tǒng)的資源(軟件資源和硬件資源)如何組織,OS 如何有效地管理這些系統(tǒng)資源,用戶如何通過OS與計算機(jī)系統(tǒng)打交道。通過學(xué)習(xí)OS可以進(jìn)一步理解在計算機(jī)系統(tǒng)上運行的其他各類OS并懂得在OS支持下建立自己的應(yīng)用系統(tǒng),因此OS是計算機(jī)應(yīng)用的基礎(chǔ)2。進(jìn)程同步包括進(jìn)程的互斥和進(jìn)程的同步兩

14、個方面,是操作系統(tǒng)管理共享資源的一種手段.也是操作系統(tǒng)學(xué)習(xí)中的難點。操作系統(tǒng)教學(xué)中有最經(jīng)典的四個同步、互斥問題為: 生產(chǎn)者消費者問題、哲學(xué)家進(jìn)餐問題、理發(fā)師在空閑中的睡眠問題、讀者作者問題, 深入地分析和理解這些問題, 對全面掌握同步、互斥問題大有益處,對學(xué)校操作系統(tǒng)這門課也有很重要的意義。1.1.1 開發(fā)系統(tǒng)的背景有關(guān)操作系統(tǒng)的教材大多注重理論,而絕大多數(shù)學(xué)習(xí)者一生都不可能參于操作系統(tǒng)的研究工作,他們需要的是對理論的理解和對實用系統(tǒng)的靈活應(yīng)用。進(jìn)程同步與互斥的實現(xiàn)是操作系統(tǒng)中的重點內(nèi)容,也是學(xué)習(xí)的難點部分。生產(chǎn)者-消費者問題是經(jīng)典同步問題之一,不但在操作系統(tǒng)中很重要, 而且在分布式應(yīng)用開發(fā)、

15、實時數(shù)據(jù)庫管理系統(tǒng)、CIMS 網(wǎng)絡(luò)工程中都會遇到。但是以往人們只能從原理上加以理解, 沒有直觀的認(rèn)識, 因而無法實際使用它。在現(xiàn)代操作系統(tǒng)UNIX、Windows 多進(jìn)程環(huán)境下,我們將利用C語言實現(xiàn)多個生產(chǎn)者-消費者可視化同步運行。開發(fā)(kif)系統(tǒng)的目的操作系統(tǒng)是計算機(jī)學(xué)科(xuk)中的一門重要課程。對于學(xué)習(xí)者來說, 進(jìn)程(jnchng)的同步與互斥問題是個令人頭痛的問題, 尤其是進(jìn)程同步與互斥算法的實現(xiàn), 更讓人往往不知如何下手。本文通過具體實例, 給出了利用、操作解決進(jìn)程同步與互斥問題的簡單方法。在操作系統(tǒng)教學(xué)過程中,因為部分教科書中對生產(chǎn)者和消費者問題的解釋不夠全面,學(xué)生在理解應(yīng)用過程

16、中經(jīng)常出現(xiàn)一些問題。所以本文對生產(chǎn)者和消費者問題算法進(jìn)行描述,利用操作系統(tǒng)進(jìn)程管理演示系統(tǒng)(生產(chǎn)者-消費者)進(jìn)行模擬演示。1.1.3 開發(fā)系統(tǒng)的意義采用信號量機(jī)制與PV操作來協(xié)調(diào)進(jìn)程的同步, 一直是操作系統(tǒng)教學(xué)中的一個難點問題, 而且由它引出的一系列問題, 如: 生產(chǎn)者與消費者、讀者與寫者、哲學(xué)家進(jìn)餐、理發(fā)師等問題都是很典型的進(jìn)程同步與互斥問題。這類題型變化多、實例多,又與實際生活中的問題有著緊密聯(lián)系3。“進(jìn)程調(diào)度”涉及到操作系統(tǒng)的內(nèi)核操作,原理性較強(qiáng),也較為抽象,如只是依靠書本的文字和圖形,學(xué)生理解起來會很吃力。在操作系統(tǒng)課教學(xué)中,就引入了可視化設(shè)計幫助學(xué)生理解。操作系統(tǒng)進(jìn)程管理演示系統(tǒng)(生

17、產(chǎn)者-消費者)可以可視化的向?qū)W生展示進(jìn)程調(diào)度,便于教學(xué)工作,提高學(xué)生的學(xué)習(xí)效率。1.2 P,V操作的簡介1.2.1 P,V操作的介紹在操作系統(tǒng)中P,V操作是一種原語操作, 是不可分割的操作, 它要么執(zhí)行完畢, 要么就不執(zhí)行, 也就是說P,V操作一旦執(zhí)行就不允許被中斷, 直到執(zhí)行完成為止。P,V操作主要通過對信號量的操作來實現(xiàn)對資源的控制, 從而控制進(jìn)程的執(zhí)行。信號量是和特定資源相對應(yīng)的數(shù)據(jù)結(jié)構(gòu), 由整型數(shù)值和指針兩部分所組成, 其中整型數(shù)值表示資源情況,只能由P,V操作來改變, 它有三種值:S0 表示當(dāng)前可用資源(zyun)的數(shù)量;S0 其絕對值表示當(dāng)前等待該類資源(zyun)的進(jìn)程數(shù)量;=0

18、 表示(biosh)當(dāng)前沒有可用資源也沒進(jìn)程等待該類資源。P 操作相當(dāng)于申請資源, 進(jìn)程在使用資源之前, 應(yīng)先調(diào)用操作申請所須資源, 若資源申請被滿足, 則進(jìn)程可以繼續(xù)執(zhí)行, 否則進(jìn)程將調(diào)用阻塞原語阻塞自己。P(S)的具體執(zhí)行過程如下:S=S-1;若S0, 則進(jìn)程繼續(xù)執(zhí)行;若S0, 則進(jìn)程繼續(xù)執(zhí)行;若S0, 則調(diào)用喚醒原語喚醒等待該資源的進(jìn)程, 原進(jìn)程繼續(xù)執(zhí)行。 1.2.2 進(jìn)程同步的實現(xiàn)進(jìn)程同步是指為了共同完成某項任務(wù), 具有伙伴關(guān)系的進(jìn)程在執(zhí)行時間次序上必須遵循確定的規(guī)律。多個進(jìn)程為了共同完成任務(wù), 須要按照一定的次序去執(zhí)行, 各個進(jìn)程在執(zhí)行時在時間上具有明顯的先后次序, 即進(jìn)程必須按照一

19、定的順序去執(zhí)行。這和進(jìn)程互斥明顯不同。實現(xiàn)進(jìn)程同步的關(guān)鍵在于當(dāng)一個進(jìn)程執(zhí)行以后, 確定下一個將要執(zhí)行的進(jìn)程, 并用V操作使該進(jìn)程可以執(zhí)行。在實現(xiàn)時, 我們可以在各進(jìn)程中完成特定功能的程序段兩端加上P操作和V操作, 它們分別使用不同的信號量, 用以在各進(jìn)程間傳遞信息。通常, 能夠最先執(zhí)行的進(jìn)程中, P操作中所使用的信號量的初值大于, 而其它進(jìn)程中, 第一個P操作所對應(yīng)的信號量的初值為零。這樣, 在執(zhí)行時,第一個進(jìn)程先執(zhí)行, 執(zhí)行完V操作后, 使另一個進(jìn)程可以執(zhí)行, 依次傳遞下去, 就可以實現(xiàn)各個進(jìn)程按照一定的順序執(zhí)行了。1.2.3 進(jìn)程(jnchng)互斥的實現(xiàn)進(jìn)程(jnchng)互斥是進(jìn)程間由

20、于競爭資源而產(chǎn)生的相互(xingh)制約關(guān)系。對于多個使用同一資源的進(jìn)程, 它們對于資源的競爭導(dǎo)致它們在執(zhí)行時的異步性特征。競爭到資源的進(jìn)程可以立即投入運行, 而沒有競爭到資源的進(jìn)程只能阻塞自己以等待資源。進(jìn)程中用以訪問這種被競爭的獨占資源(臨界資源)的程序段叫做臨界區(qū)。要使多個進(jìn)程不會同時訪問臨界資源, 只需要讓它們在執(zhí)行時不會同時執(zhí)行臨界區(qū)內(nèi)的代碼就可以了。因此我們可以在各進(jìn)程的臨界區(qū)的兩端分別加入對于同一個初值為的1信號量的P,V操作, 就可以實現(xiàn)當(dāng)一個進(jìn)程進(jìn)人臨界區(qū)后, 其它進(jìn)程不能夠再進(jìn)入臨界區(qū), 直到先前進(jìn)人臨界區(qū)的進(jìn)程退出臨界區(qū)后,通過V操作喚醒其它某個等待進(jìn)程后, 才會有進(jìn)程再

21、次訪問臨界資源, 從而實現(xiàn)多個進(jìn)程對于臨界資源的互斥訪問。1.3 生產(chǎn)者-消費者問題的描述1.3.1 問題的描述設(shè)有若干個生產(chǎn)者進(jìn)程P1, P2, P3,Pl; 若干個消費者進(jìn)程C1, C2, C3,Cm, 它們通過一個由n 個緩沖區(qū)組成的有界緩沖池聯(lián)系起來。每個緩沖區(qū)存放一個“產(chǎn)品”, 生產(chǎn)者進(jìn)程不斷地生產(chǎn)產(chǎn)品, 并把它們放入緩沖池內(nèi), 消費者進(jìn)程不斷地從緩沖池內(nèi)取產(chǎn)品并消費之。這里既要求同步, 也需要恰當(dāng)?shù)鼗コ?。同步存在于p、c 兩類進(jìn)程之間: 當(dāng)緩沖池已放滿了產(chǎn)品(供過于求) , 生產(chǎn)者進(jìn)程必須等待; 當(dāng)緩沖池已空( 供不應(yīng)求) , 消費者應(yīng)等待?;コ獯嬖谟谒羞M(jìn)程之間, 各自需要獨占地

22、使用緩沖區(qū)。1.3.2 模型(mxng)分析1單緩沖區(qū)的單生產(chǎn)者-單消費者問題模型限制條件:整個(zhngg)系統(tǒng)僅有唯一的一個緩沖區(qū),活動進(jìn)程僅有一個生產(chǎn)者Producer 和一個(y )消費者Consumer。進(jìn)程關(guān)系分析:同步關(guān)系:只有在Producer 向緩沖區(qū)放入物品后,Consumer 才能夠從緩沖區(qū)中取出物品消費;因此存在Consumer 對于Producer 的同步依賴。(2)只有在Consumer 從緩沖區(qū)取出物品后,Producer 才能夠繼續(xù)向緩沖區(qū)中放入新生產(chǎn)的物品;因此存在Producer 對于Consumer 的同步依賴?;コ怅P(guān)系:Producer 放入物品的同時,

23、Consumer 是不能從緩沖區(qū)中取出物品的;反之亦然。因此存在Producer 和Consumer 之間的互斥關(guān)系。2單緩沖區(qū)的多生產(chǎn)者-多消費者問題模型限制條件:整個系統(tǒng)僅有唯一的一個緩沖區(qū),活動進(jìn)程有n 個生產(chǎn)者Producer 和m 個消費者Consumer。進(jìn)程關(guān)系分析同步關(guān)系:(1)對于任意的i(1in),j(1jm),只有在ProducerI 向緩沖區(qū)放入物品后,ConsumerJ才能夠從緩沖區(qū)中取出物品消費;因此存在ConsumerJ 對于ProducerI的同步依賴。 (2)對于任意的i(1in),j(1jm),只有在ConsumerJ從緩沖區(qū)取出物品后,ProducerI才

24、能夠繼續(xù)向緩沖區(qū)中放入新生產(chǎn)的物品;因此存在ProducerI 對于ConsumerJ 的同步依賴?;コ怅P(guān)系:(1)對于任意的i(1in),j(1jm),ProducerI 放入物品的同時,ConsumerJ是不能從緩沖區(qū)中取出物品的;反之亦然。因此存在ProducerI 和ConsumerJ之間的互斥關(guān)系。 (2)對于任意的i(1in),j(1jn),ij,ProducerI 放入物品的同時, ProducerJ是不能放入物品的。因此存在ProducerI 和ProducerJ 之間的互斥關(guān)系。(3)對于(duy)任意的i(1im),j(1jm),ij, ConsumerI 從緩沖區(qū)中取出物

25、品(wpn)的同時,ConsumerJ 是不能從緩沖區(qū)中取出物品的。因此(ync)存在ConsumerI 和ConsumerJ 之間的互斥關(guān)系。3多緩沖區(qū)的單生產(chǎn)者-單消費者問題模型限制條件:整個系統(tǒng)有K 個緩沖區(qū),活動進(jìn)程僅有一個生產(chǎn)者Producer 和一個消費者Consumer。進(jìn)程關(guān)系分析同步關(guān)系:(1)只有在Producer 向緩沖區(qū)放入物品后,Consumer 才能夠從緩沖區(qū)中取出物品消費;因此存在Consumer 對于Producer 的同步依賴。(2)只有在Consumer 從緩沖區(qū)取出物品后,Producer 才能夠繼續(xù)向緩沖區(qū)中放入新生產(chǎn)的物品;因此存在Producer 對

26、于Consumer 的同步依賴?;コ怅P(guān)系:(1)對于任意的i(1iK),j(1jK),ij,Producer 向空閑緩沖區(qū)BufferKi放入物品的同時,Consumer 可以從滿緩沖區(qū)BufferKj中取出物品;反之亦然。因此Producer 和Consumer 之間不存在針對緩沖區(qū)的互斥關(guān)系。(2) 盡管Producer 和Consumer 之間不存在針對緩沖區(qū)的互斥關(guān)系,但由于Producer和Consumer 都需要在操作緩沖區(qū)的同時對緩沖區(qū)隊列進(jìn)行維護(hù),緩沖區(qū)隊列也就成為兩者間新的臨界資源,因此Producer 和Consumer 之間出現(xiàn)了針對緩沖區(qū)隊列的互斥關(guān)系。4多緩沖區(qū)的多生

27、產(chǎn)者-多消費者問題模型限制條件:整個系統(tǒng)有K 個緩沖區(qū),活動進(jìn)程有n 個生產(chǎn)者Producer 和m 個消費者Consumer。進(jìn)程(jnchng)關(guān)系分析同步(tngb)關(guān)系:(1)對于(duy)任意的i(1 i n),j(1jm),只有在ProducerI 向緩沖區(qū)放入物品后,ConsumerJ 才能夠從緩沖區(qū)中取出物品消費;因此存在ConsumerJ 對于ProducerI 的同步依賴。(2)對于任意的i(1in),j(1jm),只有在ConsumerJ 從緩沖區(qū)取出物品后,ProducerI 才能夠繼續(xù)向緩沖區(qū)中放入新生產(chǎn)的物品;因此存在ProducerI 對于ConsumerJ 的同

28、步依賴?;コ怅P(guān)系:(1)對于任意的i(1in),j(1jm),s(1sK),t(1tK),st,ProducerI 向空閑緩沖區(qū)BufferKs放入物品的同時,ConsumerJ 可以從滿緩沖區(qū)BufferKt中取出物品;反之亦然。因此ProducerI 和ConsumerJ 之間不存在針對緩沖區(qū)的互斥關(guān)系。(2)對于任意的i(1in),j(1jn),ij,s(1sK),t(1tK),st,ProducerI 向空閑緩沖區(qū)BufferKs放入物品的同時,ProducerJ 是可以向另一空閑緩沖區(qū)BufferKt放入物品的。因此ProducerI 和ProducerJ 之間不存在針對緩沖區(qū)的互斥

29、關(guān)系。(3)對于任意的i(1im),j(1jm),ij,s(1sK),t(1tK),st,ConsumerI 從空閑緩沖區(qū)BufferKs中取出物品的同時,ConsumerJ 是可以從另一空閑緩沖區(qū)BufferKt 中取出物品的。因此ConsumerI 和ConsumerJ 之間不存在針對緩沖區(qū)的互斥關(guān)系。(4)對于任意的i(1in),j(1jn),ij,s(1sm),t(1tm),st,盡管ProducerI 和ProducerJ 之間、ConsumerS 和ConsumerT 之間、ProducerI 和ConsumerS 之間不存在針對緩沖區(qū)的互斥關(guān)系,但由于ProducerI、Prod

30、ucerJ、ConsumerS 和ConsumerT 都需要在操作緩沖區(qū)的同時對緩沖區(qū)隊列進(jìn)行維護(hù),緩沖區(qū)隊列成為所有進(jìn)程間的新的臨界資源,因此ProducerI 和ProducerJ 之間、ConsumerS 和ConsumerT 之間、ProducerI 和ConsumerS 之間出現(xiàn)了針對緩沖區(qū)隊列的互斥關(guān)系。以上(yshng)這四種情形是逐個包含關(guān)系,所以我們只要設(shè)計出能完成第四種條件下的生產(chǎn)者-消費者模擬系統(tǒng)。2 系統(tǒng)(xtng)需求分析2.1 任務(wù)(rn wu)概述2.1.1 目標(biāo)學(xué)生通過該演示系統(tǒng)能形象的看到進(jìn)程的調(diào)度,以便能更加透徹的理解操作系統(tǒng)中消費者-生產(chǎn)者的同步互斥問題。

31、2.1.2 運行環(huán)境操作系統(tǒng):WINDOWS 98/2000/XP。2.1.3 編程工具編程工具:microsoft visual c+。 Visual C+是一個功能強(qiáng)大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出Visual C+1.0后,隨著其新版本的不斷問世,Visual C+已成為專業(yè)程序員進(jìn)行軟件開發(fā)的首選工具。Visual C+6.0不僅是一個C+編譯器,而且是一個基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境(integrated development environment,IDE)。Visual C+6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)p

32、pWizard、類向?qū)lass Wizard等開發(fā)工具。 這些組件通過一個名為Developer Studio的組件集成為和諧的開發(fā)環(huán)境。2.2 演示(ynsh)系統(tǒng)的分析2.2.1 功能需求(xqi)分析1. 操作系統(tǒng)進(jìn)程管理(gunl)演示系統(tǒng)是采用動畫和交互的方式對生產(chǎn)者-消費者問題進(jìn)行演示、教學(xué)。2. 學(xué)生可以輸入生產(chǎn)者,消費者的數(shù)量來進(jìn)行不同情形的的演示。 2.2.2 系統(tǒng)功能模塊劃分 系統(tǒng)已經(jīng)設(shè)定一個大小固定的緩沖池(緩沖池大小11),緩沖池可以實時的顯示生產(chǎn)者生產(chǎn)情況和消費者的消費情況,同時用戶可以設(shè)定生產(chǎn)者的數(shù)目來進(jìn)行生產(chǎn)(生產(chǎn)者數(shù)目1-10);設(shè)定消費者的數(shù)目來進(jìn)行消費(消

33、費者數(shù)目1-10),由此系統(tǒng)可以模擬上面所描述的四種生產(chǎn)者-消費者模型,同時用戶可以實時的停止生產(chǎn)者及消費者的動作,做到分步展示的效果,有效率的起到教學(xué)的作用。 2.2.3 系統(tǒng)流程分析1.算法的設(shè)計 P,V原語是操作系統(tǒng)中定義的,通過對信號量控制從而實現(xiàn)進(jìn)程間同步的最基本操作。采用P、V 原語解決生產(chǎn)者-消費者問題的算法描述4。采用P、V 原語解決生產(chǎn)者/ 消費者問題的算法如下: (1)信號量和互斥量的設(shè)置:設(shè)代表緩沖池中空白緩沖區(qū)和滿緩沖區(qū)的信號量分別為Empty 和Full ,Empty 和Full 的初值分別為n (緩沖池中緩沖區(qū)數(shù)) 和0 。設(shè)兩個互斥量MuxProducer 和Mu

34、xCustomer ,它們的初值都為1。(2) 生產(chǎn)者算法:采集生成數(shù)據(jù); P( Empty) 申請一個空白緩沖;P (MuxPro2ducer)申請對空白緩沖資源獨占使用;找出一空白緩沖區(qū),把數(shù)據(jù)拷貝到緩沖區(qū);V(MuxPro2ducer)釋放對空白緩沖資源獨占使用;V(Full)產(chǎn)生一個滿緩沖區(qū)。消費者算法(sun f):做好接收(jishu)準(zhǔn)備;P( Full)申請(shnqng)一個滿緩沖;P(MuxCustomer)申請對滿緩沖資源獨占使用。找出一滿緩沖區(qū);把滿緩沖區(qū)中數(shù)據(jù)拷貝到用戶數(shù)據(jù)區(qū)。V (MuxCustomer) 釋放對滿緩沖資源獨占使用;V(Empty)產(chǎn)生一個空白緩沖區(qū)

35、進(jìn)行數(shù)據(jù)處理。2.算法流程圖入 口sem=sem-1 sem=sem-1S=0喚醒等待隊列中的一個進(jìn)程式返回或轉(zhuǎn)進(jìn)程調(diào)度 返回否是 圖2.1 P操作流程圖入 口sem=sem-1 sem=sem-1Sm_Parent; int temp=0;int t=0;while(pDlg-m_continue) DWORD temp=WaitForMultipleObjects(SIZE_OF_BUFFER,pDlg-m_hEmptySemaphore,FALSE,INFINITE);pDlg-m_PArraytemp=1;pDlg-m_PStrtemp=this-m_name;pDlg-Invalid

36、ateRect(CRect(17+temp*40,17,20+(temp+1)*40,200);srand( (unsigned)time( NULL ) ); t=rand()%5;t+=1;Sleep(t*750+500);pDlg-m_Arraytemp=1;pDlg-m_PArraytemp=0;pDlg-m_PStrtemp=;pDlg-InvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200);srand( (unsigned)time( NULL ) ); t=rand()%10;t+=10;ReleaseSemaphore(pD

37、lg-m_hFullSemaphoretemp,1,NULL);Sleep(t*100); this-ExitInstance();return CWinThread:Run();3.1.2 消費者模擬(mn)函數(shù)代碼int CConsumerThread:Run() / TODO: Add your specialized code here and/or call the base classCPCDlg *pDlg;pDlg=(CPCDlg*)this-m_Parent; int temp=0;int t=0;CString str;while(pDlg-m_continue) DWOR

38、D temp=WaitForMultipleObjects(SIZE_OF_BUFFER,pDlg-m_hFullSemaphore,FALSE,INFINITE);pDlg-m_CArraytemp=1;pDlg-m_CStrtemp=this-m_name;pDlg-InvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200);srand( (unsigned)time( NULL ) ); t=rand()%5;t+=1;Sleep(t*750+500);pDlg-m_Arraytemp=0;pDlg-m_CArraytemp=0;pDlg

39、-m_CStrtemp=;pDlg-InvalidateRect(CRect(17+temp*40,17,20+(temp+1)*40,200);srand( (unsigned)time( NULL ) ); t=rand()%10;t+=10;ReleaseSemaphore(pDlg-m_hEmptySemaphoretemp,1,NULL);Sleep(t*100); this-ExitInstance();return CWinThread:Run();3.2 MFC界面(jimin)的設(shè)計3.2.1 MFC的介紹(jisho)MFC (Microsoft Foundation Cl

40、ass Library)中的各種類結(jié)合起來構(gòu)成了一個應(yīng)用程序框架,它的目的就是讓程序員在此基礎(chǔ)上來建立Windows下的應(yīng)用程序,這是一種相對SDK來說更為簡單的方法。因為總體上,MFC框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標(biāo)準(zhǔn)實現(xiàn)方法,程序員所要做的就是通過預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個輪廓。Microsoft Visual C+提供了相應(yīng)的工具來完成這個工作:AppWizard可以用來生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設(shè)計用戶接口;ClassWizard用來協(xié)助(xizh)添加代碼到框架文件;最后,編譯,則通過類庫實現(xiàn)了應(yīng)用程序特定的邏輯。1封

41、裝 構(gòu)成MFC框架的是MFC類庫。MFC類庫是C+類庫。這些類或者封裝了Win32應(yīng)用程序編程接口,或者封裝了應(yīng)用程序的概念,或者封裝了OLE特性,或者封裝了ODBC和DAO數(shù)據(jù)訪問的功能,等等,分述如下。(1)對Win32應(yīng)用程序編程接口的封裝用一個C+ Object來包裝一個Windows Object。例如:class CWnd是一個C+ window object,它把Windows window(HWND)和Windows window有關(guān)的API函數(shù)封裝在C+ window object的成員函數(shù)內(nèi),后者的成員變量m_hWnd就是前者的窗口句柄。(2)對應(yīng)用程序概念(ginin)的

42、封裝使用SDK編寫Windows應(yīng)用程序時,總要定義窗口過程,登記Windows Class,創(chuàng)建窗口,等等。MFC把許多類似的處理封裝起來,替程序員完成這些工作(gngzu)。另外,MFC提出了以文檔-視圖為中心的編程模式,MFC類庫封裝了對它的支持。文檔是用戶操作的數(shù)據(jù)對象,視圖是數(shù)據(jù)操作的窗口,用戶通過它處理、查看數(shù)據(jù)。(3)對COM/OLE特性(txng)的封裝OLE建立在COM模型之上,由于支持OLE的應(yīng)用程序必須實現(xiàn)一系列的接口(Interface),因而相當(dāng)繁瑣。MFC的OLE類封裝了OLE API大量的復(fù)雜工作,這些類提供了實現(xiàn)OLE的更高級接口。(4)對ODBC功能的封裝以少

43、量的能提供與ODBC之間更高級接口的C+類,封裝了ODBC API的大量的復(fù)雜的工作,提供了一種數(shù)據(jù)庫編程模式。2繼承 首先,MFC抽象出眾多類的共同特性,設(shè)計出一些基類作為實現(xiàn)其他類的基礎(chǔ)。這些類中,最重要的類是CObject和CCmdTarget。CObject是MFC的根類,絕大多數(shù)MFC類是其派生的,包括CCmdTarget。CObject 實現(xiàn)了一些重要的特性,包括動態(tài)類信息、動態(tài)創(chuàng)建、對象序列化、對程序調(diào)試的支持,等等。所有從CObject派生的類都將具備或者可以具備CObject所擁有的特性。CCmdTarget通過封裝一些屬性和方法,提供了消息處理的架構(gòu)。MFC中,任何可以處理

44、消息的類都從CCmdTarget派生。針對每種不同的對象,MFC都設(shè)計了一組類對這些對象進(jìn)行封裝,每一組類都有一個基類,從基類派生出眾多更具體的類。這些對象包括以下種類:窗口對象,基類是CWnd;應(yīng)用程序?qū)ο?,基類是CwinThread;文檔對象,基類是Cdocument,等等。程序員將結(jié)合自己的實際,從適當(dāng)?shù)腗FC類中派生出自己的類,實現(xiàn)特定的功能,達(dá)到自己的編程目的。3虛擬函數(shù)和動態(tài)約束 MFC以“C+”為基礎(chǔ),自然支持虛擬函數(shù)和動態(tài)約束。但是作為一個編程框架,有一個問題必須解決:如果僅僅通過虛擬函數(shù)來支持動態(tài)約束,必然導(dǎo)致虛擬函數(shù)表過于臃腫,消耗內(nèi)存,效率低下。例如,CWnd封裝 Win

45、dows窗口對象時,每一條Windows消息對應(yīng)一個成員函數(shù),這些成員函數(shù)為派生類所繼承。如果這些函數(shù)都設(shè)計成虛擬函數(shù),由于數(shù)量太多,實現(xiàn)起來不現(xiàn)實。于是,MFC建立了消息映射機(jī)制,以一種富有效率、便于使用的手段解決消息處理函數(shù)的動態(tài)約束問題。這樣,通過虛擬函數(shù)和消息映射,MFC類提供了豐富的編程接口。程序員繼承基類的同時,把自己實現(xiàn)的虛擬函數(shù)和消息處理函數(shù)嵌入MFC的編程框架。MFC編程框架將在適當(dāng)?shù)臅r候、適當(dāng)?shù)牡胤絹碚{(diào)用程序的代碼。本書將充分的展示MFC調(diào)用虛擬函數(shù)和消息處理函數(shù)的內(nèi)幕,讓讀者對MFC的編程接口有清晰的理解。4MFC的宏觀(hnggun)框架體系 如前所述,MFC實現(xiàn)了對應(yīng)

46、用程序概念的封裝,把類、類的繼承、動態(tài)約束、類的關(guān)系和相互作用等封裝起來(q li)。這樣封裝的結(jié)果對程序員來說,是一套開發(fā)模板(或者說模式)。針對不同的應(yīng)用和目的,程序員采用不同的模板。例如,SDI應(yīng)用程序的模板,MDI應(yīng)用程序的模板,規(guī)則DLL應(yīng)用程序的模板,擴(kuò)展DLL應(yīng)用程序的模板,OLE/ACTIVEX應(yīng)用程序的模板,等等。為了支持(zhch)對應(yīng)用程序概念的封裝,MFC內(nèi)部必須作大量的工作。例如,為了實現(xiàn)消息映射機(jī)制,MFC編程框架必須要保證首先得到消息,然后按既定的方法進(jìn)行處理。又如,為了實現(xiàn)對DLL編程的支持和多線程編程的支持,MFC內(nèi)部使用了特別的處理方法,使用模塊狀態(tài)、線程狀

47、態(tài)等來管理一些重要信息。雖然,這些內(nèi)部處理對程序員來說是透明的,但是,懂得和理解MFC內(nèi)部機(jī)制有助于寫出功能靈活而強(qiáng)大的程序??傊?,MFC封裝了Win32 API,OLE API,ODBC API等底層函數(shù)的功能,并提供更高一層的接口,簡化了Windows編程。同時,MFC支持對底層API的直接調(diào)用。MFC提供了一個Windows應(yīng)用程序開發(fā)模式,對程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,預(yù)定義或?qū)崿F(xiàn)了許多事件和消息處理,等等??蚣芑蛘哂善浔旧硖幚硎录?,不依賴程序員的代碼;或者調(diào)用程序員的代碼來處理應(yīng)用程序特定的事件。MFC是C+類庫,程序員就是通過使用、繼承和擴(kuò)展

48、適當(dāng)?shù)念悂韺崿F(xiàn)特定的目的。例如,繼承時,應(yīng)用程序特定的事件由程序員的派生類來處理,不感興趣的由基類處理。實現(xiàn)這種功能的基礎(chǔ)是C+對繼承的支持,對虛擬函數(shù)的支持,以及MFC實現(xiàn)的消息映射機(jī)制13。3.2.2 MFC界面(jimin)效果這是系統(tǒng)(xtng)界面設(shè)計的截圖: 圖3.1 MFC界面(jimin)界面上有2個靜態(tài)文本,2個編輯框和7個按紐組成:1. 啟動生產(chǎn)者按紐的代碼:void CPCDlg:OnPstar() UpdateData(true);this-m_continue=true;this-SetTimer(100,1000,NULL);if( this-m_np0&this-

49、m_np11) m_sp.EnableWindow(false); CString str; for( unsigned i=0; im_np;i+) str.Format(P%d,i);this-m_PTi =new CProducerThread(this,str);this-m_PTi-CreateThread(CREATE_SUSPENDED);VERIFY(this-m_PTi-SetThreadPriority(THREAD_PRIORITY_IDLE);this-m_PTi-ResumeThread(); else MessageBox(生產(chǎn)者數(shù)目必須(bx)在1-10之間,出錯

50、了);2. 啟動(qdng)消費者按紐的代碼:void CPCDlg:OnStartc() UpdateData(true); this-m_continue=true;if( this-m_nc0&this-m_nc11) m_sc.EnableWindow(false); CString str; for( unsigned i=0; im_nc;i+) str.Format(C%d,i);this-m_CTi =new CConsumerThread(this,str);this-m_CTi-CreateThread(CREATE_SUSPENDED);VERIFY(this-m_CTi

51、-SetThreadPriority(THREAD_PRIORITY_IDLE);this-m_CTi-ResumeThread(); else MessageBox(消費者數(shù)目必須(bx)在1-10之間,出錯了);3. 初始狀態(tài)按紐的代碼(di m):void CPCDlg:OnRefresh() / TODO: Add your control notification handler code herem_continue=false;for( int i=0;iSIZE_OF_BUFFER;i+)m_hFullSemaphorei=CreateSemaphore(NULL,0,1,NU

52、LL);m_hEmptySemaphorei=CreateSemaphore(NULL,1,1,NULL);m_Arrayi=0;m_CArrayi=0;m_PArrayi=0;m_CStri=;m_PStri=; Invalidate();m_sc.EnableWindow(true);m_sp.EnableWindow(true);4. 退出(tuch)按紐的代碼:void CPCDlg:OnExit() EndDialog(0);3.3 系統(tǒng)功能的實現(xiàn)程序中共有6 個線程, 兩個生產(chǎn)者線程, 兩個消費者線程,另外兩個線程則根據(jù)相同概率改變身份來模擬生產(chǎn)者或者消費者, 以便構(gòu)建任意多個生產(chǎn)

53、者- 消費者的可視化環(huán)境。為方便觀察生產(chǎn)和消費進(jìn)展情況, 設(shè)置了兩個時間控制變量控制生產(chǎn)者和消費者的生產(chǎn)和消費周期( 即: 線程的run 方法) , 它們是用兩個文本輸入框分別實現(xiàn)數(shù)據(jù)輸入的。生產(chǎn)者和消費者問題需要的界面效果是, 生產(chǎn)者在消費者前面不停地生產(chǎn), 而消費者則在生產(chǎn)者后面不停的消費, 呈現(xiàn)追趕的態(tài)勢。但是不能約定推進(jìn)順序和速度。因此, 用了11個正方形方框代表11個緩沖區(qū) 。生產(chǎn)者放一個產(chǎn)品, 就在生產(chǎn)者當(dāng)前指針位置的方框用紅色填充, 指針順時針前進(jìn)一格, 指向下一個可以放產(chǎn)品的緩沖區(qū); 如果當(dāng)前沒有空緩沖區(qū)位置可以放貨, 就進(jìn)入等待狀態(tài), 等待消費者消費并讓出監(jiān)控器。以后當(dāng)消費者

54、消費后喚醒它。消費者則在生產(chǎn)者后面, 消費掉消費者指針當(dāng)前位置緩沖區(qū)內(nèi)的產(chǎn)品, 方框重新改變?yōu)榘咨?然后消費者指針也順時針前進(jìn)一格, 指向下一個存放了產(chǎn)品的緩沖區(qū); 如果當(dāng)前沒有產(chǎn)品可以消費, 則等待生產(chǎn)者放產(chǎn)品并讓出監(jiān)控器, 當(dāng)生產(chǎn)者放了貨物后喚醒它14。 4 系統(tǒng)(xtng)演示4.1 系統(tǒng)(xtng)演示(ynsh)的準(zhǔn)備 為了驗證上述生產(chǎn)者-消費者問題實現(xiàn)方案的正確性,系統(tǒng)將演示模擬效果。由于系統(tǒng)緩沖區(qū)的大小已經(jīng)設(shè)定,所以我們將演示下面兩種情況的模擬效果。1. 單生產(chǎn)者-單消費者問題模型。2. 多生產(chǎn)者-多消費者問題模型。4.2 系統(tǒng)演示的效果4.2.1 單生產(chǎn)者-單消費者模擬效果首先

55、設(shè)定緩沖區(qū)全紅,既緩沖區(qū)為滿的情況。此類問題較簡單,對于生產(chǎn)者進(jìn)程,他的活動過程如下:首先判斷該單緩沖區(qū)是否為空,如果不是,則生產(chǎn)者進(jìn)程自我阻塞;反之,生產(chǎn)者就可以把生產(chǎn)出來的數(shù)據(jù)放入該緩沖區(qū)塊中,然后判斷當(dāng)前阻塞隊列中是否有消費者進(jìn)程阻塞,如果有則將其喚醒。消費者進(jìn)程的活動為:先判斷該單緩沖區(qū)中是否有數(shù)據(jù)(即是否滿) ,如果沒有,那么它就自我阻塞;反之,消費者從該緩沖區(qū)塊中取出數(shù)據(jù)消費,然后再判斷阻塞隊列中是否有生產(chǎn)者進(jìn)程需要被喚醒。 圖4.1消費者進(jìn)入(jnr)緩沖區(qū)當(dāng)消費(xiofi)者C0消費掉第一個緩沖區(qū)后,生產(chǎn)者P0產(chǎn)品進(jìn)入第一個緩沖區(qū),如圖4.2圖4.2 生產(chǎn)者產(chǎn)品(chnpn)

56、進(jìn)入緩沖區(qū)4.2.2 多生產(chǎn)者-多消費者模擬(mn)效果(xiogu)上面分析了較簡單的單緩沖區(qū)的情形,但是在實際的問題中,更一般的情況是在生產(chǎn)者和消費者之間存在多個緩沖區(qū),生產(chǎn)者可以將生產(chǎn)出來的數(shù)據(jù)放入緩沖區(qū)的不同緩沖區(qū)塊中,只要該緩沖區(qū)塊空閑;消費者也可以從緩沖區(qū)中已存有數(shù)據(jù)的緩沖區(qū)塊中取數(shù)消費。但要注意,不論是生產(chǎn)者之間,消費者之間,還是生產(chǎn)者與消費者之間,他們對于臨界資源緩沖區(qū)的訪問必須是互斥的,也就是說,在1個生產(chǎn)者或消費者線程訪問完該緩沖區(qū)之前,是決不允許其它的生產(chǎn)者或消費者線程訪問的。這就是基于多緩沖區(qū)的生產(chǎn)者與消費者問題。再多生產(chǎn)者-多消費者模擬演示時設(shè)置生產(chǎn)者數(shù)目為3,而消費

57、者數(shù)目為4,這樣更有利于觀察系統(tǒng)模擬的準(zhǔn)確性。圖 4.3 3個生產(chǎn)者生產(chǎn)情況圖4.4 4個消費者消費的4個緩沖(hunchng)池內(nèi)的產(chǎn)品4.3 系統(tǒng)(xtng)演示結(jié)論(jiln)單生產(chǎn)者-單消費者模擬:從結(jié)果可以看出,生產(chǎn)者和消費者線程是在并發(fā)的執(zhí)行。在單緩沖區(qū)中沒有數(shù)據(jù)的情況下,如果有消費者到達(dá),這時該消費者阻塞。只有當(dāng)生產(chǎn)者將數(shù)據(jù)放入單緩沖區(qū)后,才可以喚醒1個消費者取數(shù)消費。如果已經(jīng)有生產(chǎn)者將數(shù)據(jù)放入了單緩沖區(qū)中,這時其它的生產(chǎn)者只能阻塞,直到有消費者將數(shù)據(jù)提走后才允許某一個生產(chǎn)者放數(shù)17。多生產(chǎn)者-多消費者模擬:當(dāng)循環(huán)緩沖區(qū)隊列空時,消費者線程阻塞; 當(dāng)循環(huán)緩沖區(qū)滿時,生產(chǎn)者線程阻塞

58、。當(dāng)有1個生產(chǎn)者線程往循環(huán)緩沖區(qū)中放了數(shù)據(jù)后,它會查看阻塞隊列中是否有消費者線程需要被喚醒;同樣,當(dāng)有1個消費者線程從循環(huán)緩沖區(qū)中取走1個數(shù)據(jù)后,它會喚醒阻塞著的生產(chǎn)者線程。系統(tǒng)準(zhǔn)確的模擬了在多緩沖區(qū)下的單生產(chǎn)者-單消費者及多生產(chǎn)者-多消費者問題的模擬情況,停止按紐的功能讓模擬系統(tǒng)實時的反映生產(chǎn)者-消費者模擬的情況,實現(xiàn)了教學(xué)演示的要求。5 總結(jié)(zngji)本文(bnwn)從P,V操作實現(xiàn)進(jìn)程同步與互斥出發(fā),研究了操作系統(tǒng)中經(jīng)典的同步問題生產(chǎn)者-消費者問題,提出了解決此問題的模型及解決方案,并設(shè)計(shj)了基于microsoft visual c+而開發(fā),在WINDOWS 98/2000/

59、XP上運行的操作系統(tǒng)進(jìn)程管理演示系統(tǒng)(生產(chǎn)者-消費者)。通過可視化設(shè)計,使我們很快地就理解并掌握了操作系統(tǒng)中生產(chǎn)者-消費者進(jìn)程調(diào)度的原理及算法,并通過設(shè)計驗證了進(jìn)程調(diào)度;同時,在設(shè)計中,我的程序設(shè)計能力大大提高了,鞏固了數(shù)據(jù)結(jié)構(gòu)、計算機(jī)算法等知識。在計算機(jī)專業(yè)教學(xué)中,可視化設(shè)計將會用得越來越多,效果將會越來越明顯,將是計算機(jī)教學(xué)發(fā)展的主要方向之一。參考文獻(xiàn)1 楊貴和. 操作系統(tǒng)課中進(jìn)程調(diào)度(diod)的可視化設(shè)計J. 中國科教(k jio)創(chuàng)新導(dǎo)刊, 2007,072 謝印寶,田愛奎,謝印智. 關(guān)于(guny)操作系統(tǒng)生產(chǎn)者消費者問題J. 淄博學(xué)院學(xué)報(自然科學(xué)與工程版),2001,033 宋

60、新麗,何永強(qiáng). 用信號量機(jī)制與PV 操作解決進(jìn)程同步互斥問題的方法J. 河南紡織高等??茖W(xué)校學(xué)報,20054 張賢達(dá). 現(xiàn)代信號處理(第二版)M.北京:清華大學(xué)出版社,2002.5 胡小龍,等. Windows 操作系統(tǒng)進(jìn)程通信機(jī)制J.計算機(jī)應(yīng)用研究,2002 ,19 (12)6 賈廣雷.多線程技術(shù)及其在串口通信(tng xn)中的應(yīng)用J.計算機(jī)工程(gngchng),2003 ,29 (1)7 陳周造.精通(jngtng)C + Builder 5 程序設(shè)計高級教程M.中國青年出版社,2001.8 帖 軍,陳幼均.進(jìn)程同步中的生產(chǎn)者消費者模型分析J.武漢科技學(xué)院學(xué)報2007,049 帖軍.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論