版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 操作系統(tǒng)課程設(shè)計(jì)——操作系統(tǒng)課程設(shè)計(jì)模擬操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)---操作系統(tǒng)之文件管理部分的設(shè)計(jì)與實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)--模擬操作系統(tǒng)的實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)---geekos操作系統(tǒng)的研究與實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)-- geekos操作系統(tǒng)的研究與實(shí)現(xiàn)
- 內(nèi)存管理(操作系統(tǒng))操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)-- 操作系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)報(bào)告---文件資源管理器
- 操作系統(tǒng)課程設(shè)計(jì)--臨界區(qū)管理實(shí)現(xiàn)
- 操作系統(tǒng)文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)課程設(shè)計(jì)
- 操作系統(tǒng)程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告-操作系統(tǒng)模擬實(shí)現(xiàn)
- 操作系統(tǒng)課程設(shè)計(jì)---文件管理系統(tǒng)設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)---進(jìn)程管理系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)--文件管理系統(tǒng)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
- 操作系統(tǒng)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論