操作系統(tǒng)課程設(shè)計(jì)--資源管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  課程設(shè)計(jì)(論文)任務(wù)書(shū)</p><p>  一、課程設(shè)計(jì)(論文)題目 資源管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)   </p><p>  二、課程設(shè)計(jì)(論文)工作自 年 月 日起至 年 月 日止。</p><p>  三、課程設(shè)計(jì)(論文) 地點(diǎn):

2、 </p><p>  四、課程設(shè)計(jì)(論文)內(nèi)容要求:</p><p>  1.本課程設(shè)計(jì)的目的</p><p> ?。?)本課程設(shè)計(jì)的目的是綜合應(yīng)用學(xué)生所學(xué)知識(shí),通過(guò)實(shí)驗(yàn)環(huán)節(jié),加深學(xué)生對(duì)操作系統(tǒng)基本原理和工作過(guò)程的理解,提高學(xué)生獨(dú)立分析問(wèn)題、解決問(wèn)題的能力,增強(qiáng)學(xué)生的動(dòng)手能力。</p><p&

3、gt;  (2)銀行家算法是避免死鎖的一種重要方法。通過(guò)編寫(xiě)一個(gè)模擬動(dòng)態(tài)資源分配的銀行家算法程序,進(jìn)一步深入理解死鎖、產(chǎn)生死鎖的必要條件、安全狀態(tài)等重要概念,并掌握避免死鎖的具體實(shí)施方法。并且了解銀行家算法的特點(diǎn),掌握避免死鎖的方法。</p><p>  (3)為配合《計(jì)算機(jī)操作系統(tǒng)》課程的教學(xué),通過(guò)學(xué)習(xí)操作系統(tǒng)原理和模擬操作系統(tǒng)的</p><p>  功能實(shí)現(xiàn),使學(xué)生能更深刻地領(lǐng)會(huì)操作系

4、統(tǒng)工作原理和理解操作系統(tǒng)的實(shí)現(xiàn)方法,并可</p><p><b>  練習(xí)程序設(shè)計(jì)。 </b></p><p>  2.課程設(shè)計(jì)的任務(wù)及要求</p><p><b>  1)基本要求:</b></p><p>  用VC編程實(shí)現(xiàn)一個(gè)資源管理系統(tǒng),該系統(tǒng)必須包括資源的添加、刪除和修改等功能,并且允許其

5、它進(jìn)程來(lái)申請(qǐng)這里的資源,任何一個(gè)進(jìn)程來(lái)申請(qǐng)資源時(shí),必須先登記該進(jìn)程對(duì)資源的申請(qǐng)要求,然后由系統(tǒng)檢查當(dāng)前資源的狀況,并用銀行家算法和安全性算法來(lái)檢查是否允許分配資源給進(jìn)程。</p><p>  每個(gè)進(jìn)程申請(qǐng)資源的情況必須進(jìn)行記錄,并且作為課程設(shè)計(jì)報(bào)告的一部分?jǐn)?shù)據(jù)。</p><p>  課程設(shè)計(jì)論文編寫(xiě)要求</p><p>  (1)要按照書(shū)稿的規(guī)格打印謄寫(xiě)畢業(yè)論文&l

6、t;/p><p> ?。?)論文包括目錄、緒論、正文、小結(jié)、參考文獻(xiàn)、謝辭、附錄等</p><p> ?。?)課程設(shè)計(jì)報(bào)告裝訂按學(xué)校的統(tǒng)一要求完成</p><p>  3)答辯與評(píng)分標(biāo)準(zhǔn): </p><p> ?。?)完成原理分析:20分; </p><p> ?。?)完成設(shè)計(jì)過(guò)程:30分; </p><

7、;p> ?。?)完成調(diào)試:30分;</p><p> ?。?)回答問(wèn)題:20分。</p><p><b>  4)參考文獻(xiàn):</b></p><p> ?。?)湯子瀛《計(jì)算機(jī)操作系統(tǒng)》(第三版)西安電子科技大學(xué)出版社 2007</p><p>  (2)張堯?qū)W 史美林 《計(jì)算機(jī)操作系統(tǒng)教程》實(shí)驗(yàn)指導(dǎo) 清華大學(xué)出版社

8、 2000</p><p> ?。?)錢(qián)哨 李繼哲 李揮劍《 C# WinForm上機(jī)實(shí)訓(xùn)指導(dǎo)》 中國(guó)水利水電出版社 2010</p><p>  內(nèi)容 天數(shù)      地點(diǎn)</p><p>  構(gòu)思及收集資料 1       圖書(shū)館</p><p>  程序?qū)崿F(xiàn)與調(diào)試

9、 2       實(shí)驗(yàn)室</p><p>  撰寫(xiě)論文 2       圖書(shū)館、實(shí)驗(yàn)室</p><p>  學(xué)生簽名: </p><p>  2012 年 12月 30 日</p><p>  課程設(shè)計(jì)(論文)評(píng)審意見(jiàn)</p><p> ?。?)完成原

10、理分析(20分):優(yōu)( )、良(?。⒅校ā。⒁话悖ā。?、差( ); </p><p> ?。?)設(shè)計(jì)分析 ?。?0分):優(yōu)( )、良( )、中( )、一般( )、差(?。?</p><p> ?。?)完成調(diào)試  (30分):優(yōu)(?。?、良(?。?、中(?。?、一般( )、差( );</p><p> ?。?)回答問(wèn)題  (20分):優(yōu)(?。?、良( )、中( )、一般

11、(?。⒉睿ā。?lt;/p><p> ?。?)格式規(guī)范性及考勤是否降等級(jí):是( )、否(?。?lt;/p><p>  評(píng)閱人:   職稱: </p><p>  2012 年 12 月 30 日</p><p><b>  目錄</b></p><p

12、><b>  第一章 引言1</b></p><p>  1.1 資源管理系統(tǒng)的提出1</p><p>  1.2 課程設(shè)計(jì)的目的和意義2</p><p>  1.3課程設(shè)計(jì)的任務(wù)及要求3</p><p>  第二章 資源管理系統(tǒng)概要設(shè)計(jì)4</p><p>  2.1 開(kāi)發(fā)工具與相

13、關(guān)技術(shù)4</p><p>  2.1.1 面向?qū)ο缶幊陶Z(yǔ)言C#4</p><p>  2.1.2 面向?qū)ο缶幊陶Z(yǔ)言C++5</p><p>  2.2 銀行家算法6</p><p>  2.3銀行家算法流程圖8</p><p>  第三章 基于銀行家算法的資源管理系統(tǒng)詳細(xì)設(shè)計(jì)10</p>&l

14、t;p>  3.1 資源管理系統(tǒng)的設(shè)計(jì)思路10</p><p>  3.1.1功能描述10</p><p>  3.1.2全局化描述11</p><p>  3.2 n資源n進(jìn)程編程思路12</p><p>  3.2.1 函數(shù)分析12</p><p>  3.2.2 實(shí)例分析14</p

15、><p>  3.3 3資源3進(jìn)程圖形界面編程思路15</p><p>  3.3.1 函數(shù)分析15</p><p>  3.3.2 實(shí)例分析16</p><p>  第四章 資源管理系統(tǒng)的功能分析17</p><p>  4.1資源管理系統(tǒng)的使用流程17</p><p>  4.2

16、 結(jié)果分析22</p><p>  第五章 實(shí)驗(yàn)心得體會(huì)23</p><p><b>  參考文獻(xiàn)24</b></p><p><b>  附錄24</b></p><p>  n進(jìn)程n資源核心代碼24</p><p>  3資源3進(jìn)程圖形界面核心代碼26<

17、/p><p><b>  第一章 引言</b></p><p>  1.1 資源管理系統(tǒng)的提出</p><p>  雖然進(jìn)程在運(yùn)行過(guò)程中,可能發(fā)生死鎖,但死鎖的發(fā)生也必須具備一定的條件,死鎖的發(fā)生必須具備以下四個(gè)必要條件。 </p><p> ?。?)互斥條件:指進(jìn)程對(duì)所分配到的資源進(jìn)行排它性使用,即在一段時(shí)間內(nèi)某資源只由一

18、個(gè)進(jìn)程占用。</p><p> ?。?)占有且等待:指進(jìn)程已經(jīng)保持至少一個(gè)資源,但又提出了新的資源請(qǐng)求,而該資源已被其它進(jìn)程占有,此時(shí)請(qǐng)求進(jìn)程阻塞,但又對(duì)自己已獲得的其它資源保持不放。 </p><p> ?。?)非剝奪:指進(jìn)程已獲得的資源,在未使用完之前,不能被其他進(jìn)程強(qiáng)行剝奪。 </p><p> ?。?)循環(huán)等待:在系統(tǒng)中存在一個(gè)由若干進(jìn)程形成的環(huán)形請(qǐng)求鏈,其

19、中的每一個(gè)進(jìn)程均占有一些資源,同時(shí)又申請(qǐng)請(qǐng)求鏈中下一個(gè)進(jìn)程所咱有的資源,如圖1-1.</p><p>  互斥,占有且等待,非剝奪這三個(gè)條件是死鎖產(chǎn)生的必要條件,但不是充分條件?;コ鈼l件是臨界資源固有的屬性,保證進(jìn)程胡此訪問(wèn)臨界資源是必要的,不能因?yàn)榛コ鈺?huì)導(dǎo)致死鎖而禁止互斥。循環(huán)等待是前3個(gè)條件可能產(chǎn)生的結(jié)果,只有存在互斥,占有且等待與非剝奪三個(gè)條件時(shí),才可能出現(xiàn)循環(huán)等待。只要系統(tǒng)出現(xiàn)了循環(huán)等待,則一定出現(xiàn)死鎖。

20、</p><p>  圖1-1 進(jìn)程循環(huán)等待:死鎖</p><p>  銀行家算法是最有代表性的避免死鎖的算法,由于該算法能用于銀行系統(tǒng)現(xiàn)金貸款的發(fā)放而得名。其實(shí)現(xiàn)思想是:允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,系統(tǒng)在每次實(shí)施資源分配之前,先計(jì)算資源分配的安全性,若此次資源分配安全(即資源分配后,系統(tǒng)能按某種順序來(lái)為每個(gè)進(jìn)程分配其所需的資源,直至最大需求,使每個(gè)進(jìn)程都可以順利地完成),便將資源分配給進(jìn)程,

21、否則不分配資源,讓進(jìn)程等待。</p><p>  此次課程設(shè)計(jì)實(shí)現(xiàn)了銀行家算法的模擬,即實(shí)現(xiàn)資源管理系統(tǒng)。</p><p>  1.2 課程設(shè)計(jì)的目的和意義 </p><p>  銀行家算法是避免死鎖的一種重要方法。通過(guò)編寫(xiě)一個(gè)模擬動(dòng)態(tài)資源分配的銀行家算法程序,進(jìn)一步深入理解死鎖、產(chǎn)生死鎖的必要條件、安全狀態(tài)等重要概念,并掌握避免死鎖的具體實(shí)施方法。并且了解銀行家算

22、法的特點(diǎn),掌握避免死鎖的方法。銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,但系統(tǒng)在進(jìn)行資源分配之前,應(yīng)先計(jì)算此次分配資源的安全性,若分配不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配,否則等待。為實(shí)現(xiàn)銀行家算法,系統(tǒng)必須設(shè)置若干數(shù)據(jù)結(jié)構(gòu)。所以,通過(guò)編寫(xiě)一個(gè)模擬動(dòng)態(tài)資源分配的銀行家算法程序,進(jìn)一步深入理解死鎖、產(chǎn)生死鎖的必要條件、安全狀態(tài)等重要概念,并掌握避免死鎖的具體實(shí)施方法。</p><

23、p>  操作系統(tǒng)是計(jì)算機(jī)系統(tǒng)的核心系統(tǒng)軟件,它負(fù)責(zé)控制和管理整個(gè)系統(tǒng)的資源并組織用戶協(xié)調(diào)使用這些資源,使計(jì)算機(jī)高效的工作。《操作系統(tǒng)課程設(shè)計(jì)》是《操作系統(tǒng)》理論課的必要補(bǔ)充,是復(fù)習(xí)和檢驗(yàn)所學(xué)課程的重要手段,本課程設(shè)計(jì)的目的是綜合應(yīng)用學(xué)生所學(xué)知識(shí),通過(guò)實(shí)驗(yàn)環(huán)節(jié),加深學(xué)生對(duì)操作系統(tǒng)基本原理和工作過(guò)程的理解,提高學(xué)生獨(dú)立分析問(wèn)題、解決問(wèn)題的能力,增強(qiáng)學(xué)生的動(dòng)手能力。</p><p>  1.3課程設(shè)計(jì)的任務(wù)及要求

24、</p><p><b>  1)課程設(shè)計(jì)任務(wù)</b></p><p>  1.分析設(shè)計(jì)內(nèi)容,給出解決方案(要說(shuō)明設(shè)計(jì)實(shí)現(xiàn)的原理,采用的數(shù)據(jù)結(jié)構(gòu))。</p><p>  2.畫(huà)出程序的基本結(jié)構(gòu)框圖和流程圖。</p><p>  3.對(duì)程序的每一部分要有詳細(xì)的設(shè)計(jì)分析說(shuō)明。</p><p>  4.

25、源代碼格式要規(guī)范。</p><p>  5.設(shè)計(jì)合適的測(cè)試用例,對(duì)得到的運(yùn)行結(jié)果要有分析。</p><p>  6.設(shè)計(jì)中遇到的問(wèn)題,設(shè)計(jì)的心得體會(huì)。</p><p>  7.按期提交完整的程序代碼、可執(zhí)行程序和課程設(shè)計(jì)報(bào)告。</p><p><b>  2)課程設(shè)計(jì)要求</b></p><p>

26、  用VC編程實(shí)現(xiàn)一個(gè)資源管理系統(tǒng),該系統(tǒng)必須包括資源的添加、刪除和修改等功能,并且允許其它進(jìn)程來(lái)申請(qǐng)這里的資源,任何一個(gè)進(jìn)程來(lái)申請(qǐng)資源時(shí),必須先登記該進(jìn)程對(duì)資源的申請(qǐng)要求,然后由系統(tǒng)檢查當(dāng)前資源的狀況,并用銀行家算法和安全性算法來(lái)檢查是否允許分配資源給進(jìn)程。</p><p>  每個(gè)進(jìn)程申請(qǐng)資源的情況必須進(jìn)行記錄,并作為課程設(shè)計(jì)報(bào)告的一部分?jǐn)?shù)據(jù)。</p><p><b>  3

27、)自主要求設(shè)計(jì)</b></p><p> ?。?)掌握銀行家算法的概念和工作原理;</p><p>  (2)熟練掌握C#語(yǔ)言和c++語(yǔ)言的編程原理;</p><p> ?。?)實(shí)現(xiàn)基于銀行家算法的字符系統(tǒng)并且調(diào)用界面操作;</p><p> ?。?)運(yùn)行程序,并合理分析實(shí)驗(yàn)結(jié)果。</p><p>  資源

28、管理系統(tǒng)概要設(shè)計(jì)</p><p>  2.1 開(kāi)發(fā)工具與相關(guān)技術(shù)</p><p>  銀行家算法是避免死鎖的一種重要方法,在本次課程設(shè)計(jì)中用C++和C#語(yǔ)言編寫(xiě)一個(gè)資源管理系統(tǒng),并要用銀行家算法和安全性算法檢查是否允許分配資源給進(jìn)程,避免死鎖。通過(guò)課程設(shè)計(jì),加深了我對(duì)有關(guān)資源申請(qǐng)、避免死鎖等概念的了解,并且對(duì)銀行家算法和安全性算法有了更深一步的認(rèn)識(shí),進(jìn)而提高了我的分析、解決問(wèn)題的能力。下面

29、就開(kāi)發(fā)工具介紹。</p><p>  2.1.1 面向?qū)ο缶幊陶Z(yǔ)言C#</p><p>  C Sharp(音標(biāo) [∫a:p] )(又被簡(jiǎn)稱為"C#")是微軟公司在2000年6月發(fā)布的一種新的編程語(yǔ)言,并定于在微軟職業(yè)開(kāi)發(fā)者論壇(PDC)上登臺(tái)亮相。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#看起來(lái)與Java有著驚人的相似;它包括了諸如單一繼承、

30、界面、與Java幾乎同樣的語(yǔ)法,和編譯成中間代碼再運(yùn)行的過(guò)程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個(gè)特點(diǎn),與COM(組件對(duì)象模型)是直接集成的,而且它是微軟公司.NET windows網(wǎng)絡(luò)框架的主角。概括起來(lái),C#開(kāi)發(fā)有如下幾點(diǎn)優(yōu)勢(shì)。</p><p>  ① 快速應(yīng)用開(kāi)發(fā)(RAD)功能</p><p>  支持快速應(yīng)用開(kāi)發(fā)(Rapid Application Deve

31、lopment,RAD)可以說(shuō)是目前開(kāi)發(fā)語(yǔ)言最為重要的一大功能,這也正是C/C++的致命傷。網(wǎng)絡(luò)時(shí)代應(yīng)用系統(tǒng)的開(kāi)發(fā)必須按照網(wǎng)絡(luò)時(shí)代的速度來(lái)進(jìn)行。支持快速開(kāi)發(fā)可以使得開(kāi)發(fā)人員的開(kāi)發(fā)效率倍增,從而使得他們可以從繁重的重復(fù)性勞動(dòng)中解放出來(lái)。C#的RAD功能之一是垃圾收集機(jī)制,它將減輕開(kāi)發(fā)人員對(duì)內(nèi)存的管理負(fù)擔(dān)。利用C#的這些功能,可以使開(kāi)發(fā)者通過(guò)較少的代碼來(lái)實(shí)現(xiàn)更強(qiáng)大的應(yīng)用程序,并且能夠更好地避免錯(cuò)誤發(fā)生,從而縮短應(yīng)用系統(tǒng)的開(kāi)發(fā)周期。</

32、p><p><b> ?、?語(yǔ)言的自由性</b></p><p>  用C#編寫(xiě)的程序能最大程度地和任何支持.NET的語(yǔ)言互相交換信息。能夠繼承和使用任何語(yǔ)言所編寫(xiě)的程序可以稱得上是知識(shí)的繼承,這樣做的好處是節(jié)省了大量的工作,而不必把COBOL等語(yǔ)言強(qiáng)行改成另一種語(yǔ)言,.NET讓各種語(yǔ)言真正地互相交流了。C#和其他.NET語(yǔ)言有著最好的協(xié)作,這點(diǎn)對(duì)開(kāi)發(fā)人員非常重要。全球從

33、事編寫(xiě)軟件的人當(dāng)中,大約有50%以Visual Basic作為基本的編程工具。在跨入.NET編程時(shí)代的時(shí)候,這些人輕松地使用了VB.NET開(kāi)發(fā)Web上的應(yīng)用程序。想想以后你居然可以和你的那些只懂VB的同事真正在一起共同開(kāi)發(fā).NET的應(yīng)用程序,這是不是一件讓人輕松和高興的事情呢?</p><p>  ③ 強(qiáng)大的Web服務(wù)器端組件</p><p>  在C#的Web編程中,最讓人興奮的是Web

34、服務(wù)器端的組件,它們不僅包括傳統(tǒng)組件,還包括那些能夠自動(dòng)連接五花八門(mén)服務(wù)的可編程組件。你可以用C#編寫(xiě)自己的服務(wù)器端組件。服務(wù)器端組件和標(biāo)準(zhǔn)的HTML提供的服務(wù)自然是不一樣的,使用它們可以更自由、更容易地進(jìn)行數(shù)據(jù)綁定。更多服務(wù)器組件很快會(huì)出現(xiàn),有了這些強(qiáng)大的組件,我們可以設(shè)計(jì)出功能更加強(qiáng)大的企業(yè)級(jí)分布式應(yīng)用系統(tǒng)。</p><p><b>  ④ 支持跨平臺(tái)</b></p>&l

35、t;p>  隨著互聯(lián)網(wǎng)應(yīng)用程序的應(yīng)用越來(lái)越廣泛,人們逐漸意識(shí)到由于網(wǎng)絡(luò)系統(tǒng)錯(cuò)綜復(fù)雜,使用的硬件設(shè)備和軟件系統(tǒng)各不相同,因此開(kāi)發(fā)人員所設(shè)計(jì)的應(yīng)用程序必須具有強(qiáng)大的跨平臺(tái)性。C#編寫(xiě)的應(yīng)用程序就具有強(qiáng)大的跨平臺(tái)性,這種跨平臺(tái)性也包括了C#程序的客戶端可以運(yùn)行在不同類(lèi)型的客戶端上,比如PDA、手機(jī)等非PC裝置中。</p><p><b> ?、?與XML的融合</b></p>

36、<p>  由于XML技術(shù)真正融入到了.NET和C#之中,C#的編程變成了真正意義上的網(wǎng)絡(luò)編程,甚至可以說(shuō).NET和C#是專(zhuān)為XML而設(shè)計(jì)的。使用C#的程序員可以輕松地用C#內(nèi)含的類(lèi)來(lái)使用XML技術(shù)。就這方面而言,C#給程序員提供了更多的自由和更好的性能來(lái)使用XML。</p><p><b>  ⑥ 對(duì)C++的繼承</b></p><p>  C#繼承并保留

37、了C++的強(qiáng)大功能,例如, C#保留了類(lèi)型安全的檢測(cè)和重載功能,C#還提供了一些新功能取代了一些原來(lái)的ANSI C預(yù)處理程序的功能,提高了語(yǔ)言的類(lèi)型安全等安全性。</p><p>  2.1.2 面向?qū)ο缶幊陶Z(yǔ)言C++</p><p>  C++設(shè)計(jì)成靜態(tài)類(lèi)型、和C同樣高效且可移植的多用途程序設(shè)計(jì)語(yǔ)言。</p><p>  C++設(shè)計(jì)成直接的和廣泛的支持多種程序設(shè)計(jì)

38、風(fēng)格(程序化程序設(shè)計(jì)、資料抽象化、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì))。</p><p>  C++設(shè)計(jì)成給程序設(shè)計(jì)者更多的選擇,即使可能導(dǎo)致程序設(shè)計(jì)者選擇錯(cuò)誤,而且盡可能與C兼容,籍此提供一個(gè)從C到C++的平滑過(guò)渡。</p><p>  C++避免平臺(tái)限定或沒(méi)有普遍用途的特性,而且?guī)в胁皇褂脮?huì)帶來(lái)額外開(kāi)銷(xiāo)的特性。</p><p>  C++設(shè)計(jì)成無(wú)需復(fù)雜的程序設(shè)計(jì)環(huán)境

39、,出于保證語(yǔ)言的簡(jiǎn)潔和運(yùn)行高效等方面的考慮,C++的很多特性都是以庫(kù)(如STL)或其他的形式提供的,而沒(méi)有直接添加到語(yǔ)言本身里。</p><p><b>  2.2 銀行家算法</b></p><p><b>  銀行家算法的思路</b></p><p>  我們可以把操作系統(tǒng)看作是銀行家,操作系統(tǒng)管理的資源相當(dāng)于銀行家管

40、理的資金,進(jìn)程向操作系統(tǒng)請(qǐng)求分配資源相當(dāng)于用戶向銀行家貸款。 </p><p>  為保證資金的安全,銀行家規(guī)定: </p><p>  (1) 當(dāng)一個(gè)顧客對(duì)資金的最大需求量不超過(guò)銀行家現(xiàn)有的資金時(shí)就可接納該顧客; </p><p>  (2) 顧客可以分歧貸款,但貸款的總數(shù)不能超過(guò)最大需求量; </p><p>  (3) 當(dāng)銀行家現(xiàn)有的資

41、金不能滿足顧客尚需的貸款數(shù)額時(shí),對(duì)顧客的貸款可推遲支付,但總能使顧客在有限的時(shí)間里得到貸款; </p><p>  (4) 當(dāng)顧客得到所需的全部資金后,一定能在有限的時(shí)間里歸還所有的資金. </p><p>  操作系統(tǒng)按照銀行家制定的規(guī)則為進(jìn)程分配資源,當(dāng)進(jìn)程首次申請(qǐng)資源時(shí),要測(cè)試該進(jìn)程對(duì)資源的最大需求量,如果系統(tǒng)現(xiàn)存的資源可以滿足它的最大需求量則按當(dāng)前的申請(qǐng)量分配資源,否則就推遲分配。

42、當(dāng)進(jìn)程在執(zhí)行中繼續(xù)申請(qǐng)資源時(shí),先測(cè)試該進(jìn)程已占用的資源數(shù)與本次申請(qǐng)的資源數(shù)之和是否超過(guò)了該進(jìn)程對(duì)資源的最大需求量。若超過(guò)則拒絕分配資源,若沒(méi)有超過(guò)則再測(cè)試系統(tǒng)現(xiàn)存的資源能否滿足該進(jìn)程尚需的最大資源量,若能滿足則按當(dāng)前的申請(qǐng)量分配資源,否則也要推遲分配。</p><p>  先對(duì)用戶提出的請(qǐng)求進(jìn)行合法性檢查,即檢查請(qǐng)求的是不大于需要的,是否不大于可利用的。若請(qǐng)求合法,則進(jìn)行試分配。最后對(duì)試分配后的狀態(tài)調(diào)用安全性檢查

43、算法進(jìn)行安全性檢查。若安全,則分配,否則,不分配,恢復(fù)原來(lái)狀態(tài),拒絕申請(qǐng)。</p><p>  2.銀行家算法中用到的主要數(shù)據(jù)結(jié)構(gòu)</p><p>  可利用資源向量 int Available[j] j為資源的種類(lèi)。</p><p>  最大需求矩陣 int Max[i][j] i為進(jìn)程的數(shù)量。</p><p>

44、  分配矩陣 int Allocation[i][j] </p><p>  需求矩陣 int need[i][j]= Max[i][j]- Allocation[i][j]</p><p>  申請(qǐng)各類(lèi)資源數(shù)量 int Request i[j] i進(jìn)程申請(qǐng)j資源的數(shù)量</p><p>  工作向量 int

45、 Work[x] int Finish[y] </p><p>  3.銀行家算法bank()</p><p>  進(jìn)程i發(fā)出請(qǐng)求申請(qǐng)k個(gè)j資源,Request i[j]=k </p><p>  (1)檢查申請(qǐng)量是否不大于需求量:Request i[j]<=need[i,j],若條件不符重新輸入,不允許申請(qǐng)大于需求量。</p><p

46、>  (2)檢查申請(qǐng)量是否小于系統(tǒng)中的可利用資源數(shù)量:Request i[j]<=available[i,j],若條件不符就申請(qǐng)失敗,阻塞該進(jìn)程,用goto語(yǔ)句跳轉(zhuǎn)到重新申請(qǐng)資源。</p><p>  (3)若以上兩個(gè)條件都滿足,則系統(tǒng)試探著將資源分配給申請(qǐng)的進(jìn)程,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:</p><p>  Available[i,j]= Available[i,j]-

47、Request i[j];</p><p>  Allocation[i][j]= Allocation[i][j]+ Request i[j];</p><p>  need[i][j]= need[i][j]- Request i[j];</p><p>  (4)試分配后,執(zhí)行安全性檢查,調(diào)用safe()函數(shù)檢查此次資源分配后系統(tǒng)是否處于安全狀態(tài)。若安全,才正

48、式將資源分配給進(jìn)程;否則本次試探分配作廢,恢復(fù)原來(lái)的資源分配狀態(tài),讓該進(jìn)程等待。</p><p>  (5)用do{…}while 循環(huán)語(yǔ)句實(shí)現(xiàn)輸入字符y/n判斷是否繼續(xù)進(jìn)行資源申請(qǐng)。</p><p>  4.安全性檢查算法(safe()函數(shù))</p><p>  (1)設(shè)置兩個(gè)向量:</p><p>  工作向量Work,它表示系統(tǒng)可提供給

49、進(jìn)程繼續(xù)運(yùn)行所需的各類(lèi)資源數(shù)目,在執(zhí)行安全性算法開(kāi)始時(shí),Work= Available。</p><p>  Finish,它表示系統(tǒng)是否有足夠的資源分配給進(jìn)程,使之運(yùn)行完成。開(kāi)始時(shí)先做Finish[i]=0;當(dāng)有足夠的資源分配給進(jìn)程時(shí),再令Finish[i]=1。</p><p>  (2)在進(jìn)程中查找符合以下條件的進(jìn)程:</p><p>  條件1:Finish

50、[i]=0;</p><p>  條件2:need[i][j]<=Work[j]</p><p>  若找到,則執(zhí)行步驟(3)否則,執(zhí)行步驟(4)</p><p>  (3)當(dāng)進(jìn)程獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應(yīng)執(zhí)行:</p><p>  Work[j]= Work[j]+ Allocation[i][j]

51、;</p><p>  Finish[i]=1;</p><p>  goto step 2;</p><p>  如果所有的Finish[i]=1都滿足,則表示系統(tǒng)處于安全狀態(tài),否則,處于不安全狀態(tài)。</p><p>  2.3銀行家算法流程圖</p><p>  2.3.a 請(qǐng)求資源分配算法圖 </p>

52、<p>  2.3.b 安全性算法圖 </p><p>  第三章 基于銀行家算法的資源管理系統(tǒng)詳細(xì)設(shè)計(jì)</p><p>  3.1 資源管理系統(tǒng)的設(shè)計(jì)思路</p><p><b>  3.1.1功能描述</b></p><p>  n資源n進(jìn)程doc界面功能</p><p>  

53、用VC編程實(shí)現(xiàn)一個(gè)資源管理系統(tǒng),該系統(tǒng)必須包括資源的添加、刪除和修改等功能,并且允許其它進(jìn)程來(lái)申請(qǐng)這里的資源,任何一個(gè)進(jìn)程來(lái)申請(qǐng)資源時(shí),必須先登記該進(jìn)程對(duì)資源的申請(qǐng)要求,然后由系統(tǒng)檢查當(dāng)前資源的狀況,并用銀行家算法和安全性算法來(lái)檢查是否允許分配資源給進(jìn)程。每個(gè)進(jìn)程申請(qǐng)資源的情況必須進(jìn)行記錄,并作為課程設(shè)計(jì)報(bào)告的一部分?jǐn)?shù)據(jù)。</p><p>  該分系統(tǒng)的功能主要包含7個(gè)模塊,分別為系統(tǒng)增加資源 ,系統(tǒng)刪除資源,系

54、統(tǒng)修改資源,進(jìn)程請(qǐng)求分配資源,添加進(jìn)程,顯示當(dāng)前進(jìn)程和資源關(guān)系和退出。</p><p>  1)系統(tǒng)增加資源 :當(dāng)系統(tǒng)有新的資源時(shí),添加資源種類(lèi)的數(shù)目,然后輸入各種資源的名稱及其相應(yīng)的數(shù)量;</p><p>  2)系統(tǒng)刪除資源:當(dāng)系統(tǒng)需要?jiǎng)h除某些不要用的資源時(shí),根據(jù)提示輸入需要?jiǎng)h除的資源名稱;</p><p>  3)系統(tǒng)修改資源:當(dāng)系統(tǒng)資源的數(shù)目有變化時(shí),可以

55、根據(jù)需要重新設(shè)置系統(tǒng)的可用資源;</p><p>  4)進(jìn)程請(qǐng)求分配資源:當(dāng)有新的作業(yè)到來(lái)或則正在執(zhí)行的進(jìn)程申請(qǐng)資源時(shí),系統(tǒng)可以根據(jù)系統(tǒng)資源的情況適當(dāng)?shù)姆峙洌?lt;/p><p>  5)添加進(jìn)程:當(dāng)有新的進(jìn)程到來(lái)時(shí),必須按照要求輸入該作業(yè)對(duì)系統(tǒng)資源的最打需求量。</p><p>  6)顯示當(dāng)前進(jìn)程和資源關(guān)系 :用于顯示當(dāng)前的進(jìn)程已經(jīng)分配的資源。</p>

56、<p>  7)退出:退出系統(tǒng).</p><p> ?。?)3資源3進(jìn)程圖像界面功能</p><p>  用C#編程實(shí)現(xiàn)一個(gè)資源管理系統(tǒng),介于界面的和諧,采用固定的資源類(lèi)數(shù)和進(jìn)程數(shù)量,但是每個(gè)進(jìn)程分配的數(shù)量,以及系統(tǒng)對(duì)應(yīng)類(lèi)別數(shù)量可以自己設(shè)定,任個(gè)進(jìn)程來(lái)申請(qǐng)資源時(shí),必須先登記該進(jìn)程對(duì)資源的申請(qǐng)要求,然后由系統(tǒng)檢查當(dāng)前資源的狀況。</p><p>  該分

57、系統(tǒng)的功能主要包含2個(gè)模塊,分別為安全性算法來(lái)檢查和請(qǐng)求資源檢查。</p><p>  1)安全性算法來(lái)檢查 :對(duì)當(dāng)前的資源分配給出安全序列;</p><p>  2)請(qǐng)求資源檢查:響應(yīng)某個(gè)進(jìn)程的資源分配請(qǐng)求;</p><p>  3.1.2全局化描述</p><p> ?。?)doc界面調(diào)用圖形界面</p><p>

58、  對(duì)于doc界面調(diào)用圖形界面只需要使用如下函數(shù)即可:</p><p>  void jiemianshiliMenu()</p><p><b>  {</b></p><p>  system("cls");</p><p>  system("F:\\oskeshezhongying\

59、\caozhuoxitong\\caozhuoxitong\\bin\\Debug\\caozhuoxitong.exe");//系統(tǒng)調(diào)用exe</p><p>  system("cls");</p><p><b>  }</b></p><p><b>  界面切換</b></p&

60、gt;<p>  對(duì)于界面切換只需要使用如下函數(shù)即可:</p><p>  cout<<"\t請(qǐng)選擇:";</p><p>  cin>>choice;</p><p>  switch(choice)</p><p><b>  { </b></p>

61、<p>  case '1': threeMenu();break;</p><p>  case '2': renyiMenu();break;</p><p>  case '3': jiemianshiliMenu();break;</p><p>  case '4': jiemi

62、anduoMenu();break;</p><p>  case '0': system("cls"); choice=0;break;</p><p>  default: cout<<"請(qǐng)正確選擇功能號(hào)(0-4)!"<<endl;break;</p><p><b>  

63、}</b></p><p>  3.2 n資源n進(jìn)程編程思路</p><p>  3.2.1 函數(shù)分析</p><p>  在程序中設(shè)計(jì)五個(gè)進(jìn)程,分別為0, 1, 2, 3, 4。共享三類(lèi)資源A,B,C。在這個(gè)資源管理系統(tǒng)中對(duì)進(jìn)程的所需最大資源(Max)、已分配給當(dāng)前進(jìn)程資源(Allocation)和系統(tǒng)可用資源(Available)分別進(jìn)行

64、了初始化了值。進(jìn)程可動(dòng)態(tài)地申請(qǐng)資源和釋放資源,系統(tǒng)按各進(jìn)程的申請(qǐng)動(dòng)態(tài)地分配資源。要求程序具有顯示和打印各進(jìn)程的某一時(shí)刻的資源分配表和安全序列,若分配不安全,則釋放分配的資源,防止使系統(tǒng)進(jìn)入不安全狀態(tài)。顯示和打印各進(jìn)程依次要求申請(qǐng)的資源號(hào)以及為某進(jìn)程分配資源后的有關(guān)資源數(shù)據(jù)。程序還可以實(shí)現(xiàn)對(duì)系統(tǒng)資源的增加,修改,刪除;</p><p>  在程序設(shè)計(jì)當(dāng)中,涉及到8個(gè)子函數(shù),分別為showdata() , chang

65、edata (), share() , safe(), chang ereso urces(), addresources (), delresouces(), addprocess();各個(gè)函數(shù)的具體功能如下:</p><p>  Showdata()函數(shù):此函數(shù)用來(lái)顯示目前系統(tǒng)可用資源的數(shù)量Avaiable,和各個(gè)進(jìn)程對(duì)系統(tǒng)資源的最大需求量Max,已經(jīng)申請(qǐng)的資源量Allocation及還需要的資源良Ne

66、ed.</p><p>  Changedata()函數(shù):此函數(shù)主要是用來(lái)改變系統(tǒng)可供資源Available向量和進(jìn)程的分配向量Allocation及需求向量Need.</p><p>  Share()函數(shù):此函數(shù)的功能是用來(lái)實(shí)現(xiàn)銀行家算法,當(dāng)某個(gè)進(jìn)程Pi發(fā)出資源請(qǐng)求向量時(shí),首先檢查Request[i]是否小于等于Need[i][j],正確的話再判斷Request[i]是否小于等于Ava

67、ilable[j],否則提示所申請(qǐng)的值大于它所求的資源數(shù)量或則申請(qǐng)的值大于系統(tǒng)可提供資源的數(shù)量.</p><p>  Safe()函數(shù):此函數(shù)是用來(lái)實(shí)現(xiàn)安全性算法,用來(lái)對(duì)資源的分配進(jìn)行安全性檢測(cè)。首先設(shè)置兩個(gè)向量:工作向量Work和Finish,Work表示系統(tǒng)可提供給進(jìn)程繼續(xù)運(yùn)行所需的各類(lèi)資源數(shù)目,初始值為Available;Finish表示系統(tǒng)是否有足夠的資源分配給進(jìn)程,使之運(yùn)行完成。然后從進(jìn)程集合中找到一個(gè)

68、滿足條件為Finish[i]=false和Need[i][j]<=Work[j]的進(jìn)程,如找到了,當(dāng)進(jìn)程Pi獲得資源后,可順利完成,并釋放出分配給它的資源;如果所有進(jìn)程的Finish[i]=true,則表示系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不安全狀態(tài).</p><p>  Changeresources()函數(shù):此函數(shù)是用來(lái)修改系統(tǒng)可利用資源的數(shù)量,開(kāi)始輸出目前系統(tǒng)可用資源的數(shù)量,然后要求輸入新的.</

69、p><p>  Addresources()函數(shù):此函數(shù)是用來(lái)增加系統(tǒng)新資源,按照要求輸入需要添加資源的數(shù)量,然后按照其提示一一輸入資源的名稱和數(shù)量.</p><p>  Delresources()函數(shù):此函數(shù)是用來(lái)刪除系統(tǒng)某些不需要的資源.</p><p>  Addprocess()函數(shù):此函數(shù)是用來(lái)添加新的作業(yè),添加時(shí),要求輸入該作業(yè)的最大資源需求良Max.&l

70、t;/p><p>  3.2.a n資源n進(jìn)程的流程圖</p><p>  3.2.2 實(shí)例分析</p><p>  n資源n進(jìn)程安全性算法舉例:</p><p>  int safe()//安全性算法</p><p><b>  {</b></p><p>  int i,

71、k=0,m,apply,Finish[100]={0};</p><p><b>  int j;</b></p><p>  int flag=0;</p><p>  Work[0]=Avaliable[0];</p><p>  Work[1]=Avaliable[1];</p><p> 

72、 Work[2]=Avaliable[2];</p><p>  for(i=0;i<M;i++){ </p><p><b>  apply=0;</b></p><p>  for(j=0;j<N;j++){</p><p>  if (Finish[i]==False&&Need[i][

73、j]<=Work[j]){ </p><p><b>  apply++;</b></p><p>  if(apply==N){</p><p>  for(m=0;m<N;m++)</p><p>  Work[m]=Work[m]+Allocation[i][m];//變分配數(shù)</p>

74、<p>  Finish[i]=True;</p><p>  temp[k]=i;</p><p><b>  i=-1; </b></p><p><b>  k++;</b></p><p><b>  flag++;</b></p><p

75、><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  3.3 3資源3進(jìn)程圖形界面編程思路</p><p> 

76、 3.3.1 函數(shù)分析</p><p>  在程序中設(shè)計(jì)五個(gè)進(jìn)程,分別為0, 1, 2。共享三類(lèi)資源a,b,c。在這個(gè)資源管理系統(tǒng)中對(duì)進(jìn)程的所需最大資源(Max)、已分配給當(dāng)前進(jìn)程資源(Allocation)和系統(tǒng)可用資源(Available)分別進(jìn)行了初始化了值。進(jìn)程可動(dòng)態(tài)地申請(qǐng)資源和釋放資源,系統(tǒng)按各進(jìn)程的申請(qǐng)動(dòng)態(tài)地分配資源。要求程序具有顯示和打印各進(jìn)程的某一時(shí)刻的資源分配表和安全序列,若分配不安全,則釋

77、放分配的資源,防止使系統(tǒng)進(jìn)入不安全狀態(tài)。顯示和打印分配序列,各進(jìn)程請(qǐng)求資源是否允許,當(dāng)前系統(tǒng)資源剩余量。在程序設(shè)計(jì)當(dāng)中,涉及到8個(gè)子函數(shù),分別為sharefuzhi(), changedata (), share() , safe(), xianshikeyong(), fuzhi(), yuzhishu(), yuzhishu2();各個(gè)函數(shù)的具體功能如下:</p><p>  sharefuzhi()

78、函數(shù):此函數(shù)用來(lái)對(duì)進(jìn)程號(hào)p和request[i]進(jìn)行賦值操作</p><p>  Changedata()函數(shù):此函數(shù)主要是用來(lái)改變系統(tǒng)可供資源Available向量和進(jìn)程的分配向量Allocation及需求向量Need.</p><p>  Share()函數(shù):此函數(shù)的功能是用來(lái)實(shí)現(xiàn)銀行家算法,當(dāng)某個(gè)進(jìn)程Pi發(fā)出資源請(qǐng)求向量時(shí),首先檢查Request[i]是否小于等于Need[i][j]

79、,正確的話再判斷Request[i]是否小于等于Available[j],否則提示所申請(qǐng)的值大于它所求的資源數(shù)量或則申請(qǐng)的值大于系統(tǒng)可提供資源的數(shù)量.</p><p>  Safe()函數(shù):此函數(shù)是用來(lái)實(shí)現(xiàn)安全性算法,用來(lái)對(duì)資源的分配進(jìn)行安全性檢測(cè)。首先設(shè)置兩個(gè)向量:工作向量Work和Finish,Work表示系統(tǒng)可提供給進(jìn)程繼續(xù)運(yùn)行所需的各類(lèi)資源數(shù)目,初始值為Available;Finish表示系統(tǒng)是否有足夠的

80、資源分配給進(jìn)程,使之運(yùn)行完成。然后從進(jìn)程集合中找到一個(gè)滿足條件為Finish[i]=false和Need[i][j]<=Work[j]的進(jìn)程,如找到了,當(dāng)進(jìn)程Pi獲得資源后,可順利完成,并釋放出分配給它的資源;如果所有進(jìn)程的Finish[i]=true,則表示系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不安全狀態(tài).</p><p>  xianshikeyong()函數(shù):此函數(shù)是用來(lái)顯示系統(tǒng)可利用資源available

81、的數(shù)量,并且顯示到相應(yīng)的界面.</p><p>  fuzhi()函數(shù):此函數(shù)是用來(lái)對(duì)系統(tǒng)初值available,進(jìn)程所需要的最大資源量max,進(jìn)程已經(jīng)分配的資源量allocation,進(jìn)程還需要的資源量need進(jìn)行賦值.</p><p>  yuzhishu()函數(shù):此函數(shù)是用來(lái)對(duì)界面資源控件顯示第一類(lèi)初值.</p><p>  yuzhishu2()函數(shù):此函數(shù)

82、是用來(lái)對(duì)界面資源控件顯示第二類(lèi)初值.</p><p>  3.3.2 實(shí)例分析</p><p>  3資源3進(jìn)程安全性算法舉例:</p><p>  public void share( )</p><p><b>  {</b></p><p>  int j; int d = 0;</p

83、><p>  for (j = 0; j < 3; j++)</p><p><b>  {</b></p><p>  if (request[j] > need[p, j])</p><p><b>  {</b></p><p>  MessageBox.Sho

84、w("申請(qǐng)的資源大于它需要的資源,不分配");</p><p><b>  d = 1;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b>&l

85、t;/p><p><b>  {</b></p><p>  if (request[j] > available[j])</p><p><b>  {</b></p><p>  MessageBox.Show("申請(qǐng)資源大于系統(tǒng)現(xiàn)在可利用的資源,不分配");</p&

86、gt;<p><b>  d=1;</b></p><p><b>  break;}}</b></p><p><b>  }</b></p><p><b>  if(d==0)</b></p><p>  //MessageBox.Sh

87、ow("成功分配");</p><p>  if (d == 0)</p><p><b>  {</b></p><p>  MessageBox.Show("數(shù)量上可以分配");</p><p><b>  int t;</b></p>&l

88、t;p>  for (t = 0; t < 3; t++)</p><p><b>  {</b></p><p>  available[t] = available[t] - request[t];</p><p><b>  }</b></p><p><b>  key

89、 = 0;</b></p><p><b>  safe();</b></p><p>  if (key == 0)</p><p><b>  {</b></p><p>  for (t = 0; t < 3; t++)</p><p>  { ava

90、ilable[t] = available[t] + request[t]; }</p><p>  MessageBox.Show("數(shù)量上可以分配,但不安全不分配");</p><p><b>  }</b></p><p><b>  else</b></p><p>  

91、MessageBox.Show("成功分配"); } }</p><p>  第四章 資源管理系統(tǒng)的功能分析</p><p>  4.1資源管理系統(tǒng)的使用流程</p><p>  以下是資源管理系統(tǒng)的登錄之后的操作主界面:</p><p>  4 .1.b 資源管理系統(tǒng)的操作主界面</p><p&g

92、t;  以下是資源管理系統(tǒng)的操作主界面選擇指定3類(lèi)資源界面算法:</p><p>  4 .1.c 資源管理系統(tǒng)的指定3類(lèi)資源界面</p><p>  以下是資源管理系統(tǒng)的操作主界面選擇指定3類(lèi)資源界面算法繼續(xù):</p><p>  4 .1.d 資源管理系統(tǒng)的指定3類(lèi)資源界面</p><p>  以下是資源管理系統(tǒng)的操作主界面選擇任意

93、資源任意進(jìn)程界面算法:</p><p>  4 .1.e 資源管理系統(tǒng)的任意資源任意進(jìn)程界面</p><p>  以下是資源管理系統(tǒng)的操作主界面選擇任意資源任意進(jìn)程界面算法繼續(xù):</p><p>  4 .1.f 資源管理系統(tǒng)的任意資源任意進(jìn)程界面</p><p>  以下是資源管理系統(tǒng)的操作主界面選擇任意資源任意進(jìn)程添加資源界面算法:

94、</p><p>  4 .1.g 資源管理系統(tǒng)的添加資源界面</p><p>  以下是資源管理系統(tǒng)的操作主界面選擇任意資源任意進(jìn)程修改資源界面算法:</p><p>  4 .1.h 資源管理系統(tǒng)的修改資源界面</p><p>  以下是資源管理系統(tǒng)的操作主界面選擇3資源3進(jìn)程界面安全算法:</p><p> 

95、 4 .1.i 資源管理系統(tǒng)的3資源3進(jìn)程安全算法界面</p><p>  以下是資源管理系統(tǒng)的操作主界面選擇3資源3進(jìn)程界面安全算法繼續(xù):</p><p>  改變分配參數(shù),得到不同的分配序列:</p><p>  4 .1.j 資源管理系統(tǒng)的3資源3進(jìn)程安全算法界面</p><p>  以下是資源管理系統(tǒng)的操作主界面選擇3資源3進(jìn)程

96、界面分配算法:</p><p><b>  如圖可知:</b></p><p>  當(dāng)進(jìn)程0請(qǐng)求a,b,c類(lèi)資源分別為7,5,4時(shí),資源管理系統(tǒng)的分配算法給出“申請(qǐng)資源大于系統(tǒng)先自愛(ài)可利用的資源,不分配”的提示</p><p>  4 .1.k 資源管理系統(tǒng)的3資源3進(jìn)程分配算法界面</p><p><b>

97、  4.2 結(jié)果分析</b></p><p>  根據(jù)以上程序的執(zhí)行情況可知,實(shí)現(xiàn)了:用VC編程實(shí)現(xiàn)一個(gè)資源管理系統(tǒng),該系統(tǒng)必須包括資源的添加、刪除和修改等功能,并且允許其它進(jìn)程來(lái)申請(qǐng)這里的資源,任何一個(gè)進(jìn)程來(lái)申請(qǐng)資源時(shí),必須先登記該進(jìn)程對(duì)資源的申請(qǐng)要求,然后由系統(tǒng)檢查當(dāng)前資源的狀況,并用銀行家算法和安全性算法來(lái)檢查是否允許分配資源給進(jìn)程,達(dá)到了預(yù)期的目標(biāo)。</p><p> 

98、 第五章 實(shí)驗(yàn)心得體會(huì)</p><p>  通過(guò)一個(gè)星期的課程設(shè)計(jì),我受益匪淺。本次課程設(shè)計(jì)是利用C#和C++編寫(xiě)的。首先,我復(fù)習(xí)了之前學(xué)的C#圖形界面知識(shí),弄懂了C#編程的方法和規(guī)則。其次,更加全面的了解并掌握銀行家算法的概念和工作原理。本次課程設(shè)計(jì)實(shí)現(xiàn)了資源管理系統(tǒng)。從一點(diǎn)點(diǎn)思想到流程圖再到整個(gè)程序的編寫(xiě),調(diào)試,無(wú)一不花費(fèi)了我許多的精力??粗约旱膭趧?dòng)果實(shí),反倒十分的欣慰,更認(rèn)識(shí)到自己的不足。今后的學(xué)習(xí)過(guò)程中

99、要不斷的積累經(jīng)驗(yàn),開(kāi)闊思維以得到提高。</p><p>  通過(guò)學(xué)習(xí)了解到銀行家算法是一種最有代表性的避免死鎖的算法。在避免死鎖方法中允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,但系統(tǒng)在進(jìn)行資源分配之前,應(yīng)先計(jì)算此次分配資源的安全性,若分配不會(huì)導(dǎo)致系統(tǒng)進(jìn)入不安全狀態(tài),則分配,否則等待。為實(shí)現(xiàn)銀行家算法,系統(tǒng)必須設(shè)置若干數(shù)據(jù)結(jié)構(gòu)。</p><p>  此算法的中心思想是:按該法分配資源時(shí),每次分配后總存在著一個(gè)

100、進(jìn)程,如果讓它單獨(dú)運(yùn)行下去,必然可以獲得它所需要的全部資源,也就是說(shuō),它能結(jié)束,而它結(jié)束后可以歸還這類(lèi)資源以滿足其他申請(qǐng)者的需要。</p><p>  本次程序就是按照上面的思路展開(kāi)的,但是因?yàn)闀r(shí)間上的倉(cāng)促,本課程設(shè)計(jì)的存在著以下不足:一、不能實(shí)現(xiàn)并發(fā)操作,即當(dāng)總資源同時(shí)滿足幾個(gè)進(jìn)程所需要的資源數(shù)時(shí),這些進(jìn)程不能同時(shí)進(jìn)行,只能一一按進(jìn)程順序執(zhí)行。二、掃描進(jìn)程順序單一,只能按進(jìn)程到來(lái)的順序(即編號(hào))來(lái)掃描,從而產(chǎn)生

101、的安全順序只能是在這個(gè)順序的基礎(chǔ)上產(chǎn)生的,而其實(shí)安全順序是有多個(gè)的。三、有界面的對(duì)進(jìn)程數(shù)和資源數(shù)進(jìn)行的數(shù)量進(jìn)行了限制。四、統(tǒng)一性不夠好,運(yùn)行程序后,界面不夠好,不能在統(tǒng)一界面上實(shí)現(xiàn)。</p><p>  在這次的課程設(shè)計(jì)中我還領(lǐng)悟了一個(gè)重大的問(wèn)題:在開(kāi)發(fā)一個(gè)軟件的過(guò)程中,把整個(gè)系統(tǒng)的框架準(zhǔn)確的描述出來(lái)是非常重要的,因?yàn)槲覀兒竺娴木幋a式樣在整個(gè)系統(tǒng)框架的基礎(chǔ)之上進(jìn)行的。</p><p>  

102、總而言之,課程設(shè)計(jì)的過(guò)程就是一個(gè)汲取知識(shí)的過(guò)程,從中受益匪淺,通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)踐相結(jié)合的重要性,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐結(jié)合起來(lái),從實(shí)踐中得出結(jié)論,才能真正的提高。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]湯子瀛《計(jì)算機(jī)操作系統(tǒng)》(第三版)西安電子科技大學(xué)出版社 2007.</p>

103、;<p>  [2]張堯?qū)W 史美林 《計(jì)算機(jī)操作系統(tǒng)教程》實(shí)驗(yàn)指導(dǎo) 清華大學(xué)出版社 2000.</p><p>  [3]錢(qián)哨 李繼哲 李揮劍《 C# WinForm上機(jī)實(shí)訓(xùn)指導(dǎo)》 中國(guó)水利水電出版社 2010.</p><p>  [4]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu). 北京:清華大學(xué)出版社,2006.</p><p><b>  附錄<

104、/b></p><p>  n進(jìn)程n資源核心代碼</p><p>  int changdata(int i)//進(jìn)行資源分配</p><p><b>  { </b></p><p><b>  int j;</b></p><p>  for (j=0;j<M

105、;j++) {</p><p>  Avaliable[j]=Avaliable[j]-Request[j];</p><p>  Allocation[i][j]=Allocation[i][j]+Request[j];</p><p>  Need[i][j]=Need[i][j]-Request[j];</p><p><b>

106、;  }</b></p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  int safe()//安全性算法</p><p><b>  {</b></p><p>  int i,

107、k=0,m,apply,Finish[100]={0};</p><p><b>  int j;</b></p><p>  int flag=0;</p><p>  Work[0]=Avaliable[0];</p><p>  Work[1]=Avaliable[1];</p><p> 

108、 Work[2]=Avaliable[2];</p><p>  for(i=0;i<M;i++){ </p><p><b>  apply=0;</b></p><p>  for(j=0;j<N;j++){</p><p>  if (Finish[i]==False&&Need[i][

109、j]<=Work[j]){ </p><p><b>  apply++;</b></p><p>  if(apply==N){</p><p>  for(m=0;m<N;m++)</p><p>  Work[m]=Work[m]+Allocation[i][m];//變分配數(shù)</p>

110、<p>  Finish[i]=True;</p><p>  temp[k]=i;</p><p><b>  i=-1; </b></p><p><b>  k++;</b></p><p><b>  flag++;</b></p><p

111、><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  for(i=0;i<M;i++){</p><p> 

112、 if(Finish[i]==False){</p><p>  cout<<"系統(tǒng)存在不安全"<<endl;//不成功系統(tǒng)不安全</p><p>  return -1;</p><p><b>  }</b></p><p><b>  }</b>&l

113、t;/p><p>  cout<<"系統(tǒng)檢查是安全的!"<<endl;//如果安全,輸出成功</p><p>  cout<<"安全分配的序列:";</p><p>  for(i=0;i<M;i++){//輸出運(yùn)行進(jìn)程數(shù)組</p><p>  cout<&l

114、t;"p"<<temp[i];</p><p>  if(i<M-1) cout<<"->";</p><p><b>  }</b></p><p>  cout<<endl;</p><p><b>  return 0

115、;</b></p><p><b>  }</b></p><p>  void share()//利用銀行家算法對(duì)申請(qǐng)資源對(duì)進(jìn)行判定</p><p><b>  {</b></p><p><b>  char ch;</b></p><p&g

116、t;  int i=0,j=0;</p><p><b>  ch='y';</b></p><p>  cout<<"請(qǐng)輸入要求分配的資源進(jìn)程號(hào)(0-"<<M-1<<"):"; </p><p>  cin>>i;//輸入須申請(qǐng)的資源號(hào)&l

117、t;/p><p>  cout<<"請(qǐng)輸入進(jìn)程 "<<i<<" 申請(qǐng)的資源:"<<endl;</p><p>  for(j=0;j<N;j++)</p><p><b>  {</b></p><p>  cout<<

118、name[j]<<":";</p><p>  cin>>Request[j];//輸入需要申請(qǐng)的資源</p><p><b>  }</b></p><p>  for (j=0;j<N;j++){</p><p>  if(Request[j]>Need[i][

119、j])//判斷申請(qǐng)是否大于需求,若大于則出錯(cuò)</p><p><b>  { </b></p><p>  cout<<"進(jìn)程 "<<i<<"申請(qǐng)的資源大于它需要的資源";</p><p>  cout<<" 分配不合理,不予分配!"&l

120、t;<endl;</p><p><b>  ch='n';</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else {</b></p>&

121、lt;p>  if(Request[j]>Avaliable[j])//判斷申請(qǐng)是否大于當(dāng)前資源,若大于則</p><p>  { //出錯(cuò)</p><p>  cout<<"進(jìn)程"<<i<<"申請(qǐng)的資源大于系統(tǒng)現(xiàn)在可利用的資源";</p>

122、<p>  cout<<" 分配出錯(cuò),不予分配!"<<endl;</p><p><b>  ch='n';</b></p><p><b>  break;</b></p><p><b>  }</b></p>&

123、lt;p><b>  }</b></p><p><b>  }</b></p><p>  if(ch=='y') {</p><p>  changdata(i);//根據(jù)進(jìn)程需求量變換資源</p><p>  showdata();//根據(jù)進(jìn)程需求量顯示變換后的資源<

124、;/p><p>  safe();//根據(jù)進(jìn)程需求量進(jìn)行銀行家算法判斷</p><p><b>  }</b></p><p><b>  }</b></p><p>  3資源3進(jìn)程圖形界面核心代碼</p><p>  public int changdata(int i)&l

125、t;/p><p><b>  {</b></p><p><b>  int j;</b></p><p>  for (j = 0; j < m; j++)</p><p><b>  {</b></p><p>  available[j] = a

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論