銀行家算法實驗報告材料_第1頁
銀行家算法實驗報告材料_第2頁
銀行家算法實驗報告材料_第3頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、XX大學(xué)操作系統(tǒng)實驗報告姓名:學(xué)號:班級: 實驗日期:實驗名稱:預(yù)防進(jìn)程死鎖的銀行家算法實驗三預(yù)防進(jìn)程死鎖的銀行家算法1 實驗?zāi)康模?通過編寫和調(diào)試一個系統(tǒng)動態(tài)分配資源的簡單模擬程序,理解觀察死鎖產(chǎn)生的條件,并采用適當(dāng)?shù)乃惴?,有效地防止和避免死鎖地發(fā)生。銀行家算法的運行原理,進(jìn)一步掌握預(yù)防進(jìn)程死鎖的策略及對系統(tǒng)性能的評價方法。:2. 需求分析(1)輸入的形式和輸入值的范圍;輸入:首先輸入系統(tǒng)可供資源種類的數(shù)量n 范圍:0n=100資源1的名稱:資源的數(shù)量:資源2的名稱:資源的數(shù)量:OOOOOOOOOOOOOOOO輸入作業(yè)的數(shù)量 m范圍:0m=100輸入個進(jìn)程的最大需求量 Max:輸入個進(jìn)程已經(jīng)

2、申請的資源量Allocation:(2)輸出的形式系統(tǒng)目前可用的資源Avaliable:(資源名)(資源名)(資源名)進(jìn)程名MaxAllocati onNeed(資源名)(資源名)(資源名)(資源名)(資源名)(資源名)(資源名)(資源名)(資源名)(顯示系統(tǒng)是否安全)分配序列:(3)程序所能達(dá)到的功能通過手動輸入資源種類數(shù)量和各進(jìn)程的最大需求量、已經(jīng)申請的資源量,運用銀行家算法檢測系統(tǒng)是否安全,若安全則給出安全序列,并且當(dāng)用戶繼續(xù)輸入某進(jìn)程的資源請求時,能夠繼續(xù)判斷系統(tǒng)的安全性。(4)測試數(shù)據(jù),包括正確的輸入及其輸出結(jié)果和含有錯誤的輸入及其輸出結(jié)果。正確輸入輸入?yún)?shù)(已申請資源數(shù))錯誤3、概

3、要設(shè)計所有抽象數(shù)據(jù)類型的定義:int Max100100; /各進(jìn)程所需各類資源的最大需求int Avaliable100; II系統(tǒng)可用資源char name100 ;/ 資源的名稱int Allocati on 100100; /系統(tǒng)已分配資源int Need100100 ; /還需要資源int Request100; /請求資源向量int temp100; / 存放安全序列int Work100;存放系統(tǒng)可提供資源int M=100; / 作業(yè)的最大數(shù)為100int N=100; / 資源的最大數(shù)為100主程序的流程:*變量初始化;* 接收用戶輸入 n,m,Maxj,Allocation

4、 j ;*按照銀行家算法判斷當(dāng)前狀態(tài)安全與否,安全給出安全序列,不安全給出提示;*如果安全,提示用戶輸入下一時刻進(jìn)程Pk的資源請求Request(R 1,Rm);*如果不安全或者無新請求則退出。各程序模塊之間的層次(調(diào)用)關(guān)系使用Main函數(shù)對全局變量進(jìn)行初始化,然后調(diào)用showdata函數(shù)對各資源和進(jìn)程進(jìn)行整合顯示,最后調(diào)用safe函數(shù)即銀行家算法判定系統(tǒng)是否安全。若安全,并想繼續(xù)對某進(jìn)程進(jìn)行資源請求,則調(diào)用request函數(shù)進(jìn)行操作,其中request函數(shù)又調(diào)用 changedata 函數(shù)、showdata 函數(shù)和safe函數(shù)進(jìn)行請求 后的數(shù)據(jù)修改、顯示以及對系統(tǒng)安全性的判定。4、詳細(xì)設(shè)計

5、實現(xiàn)程序模塊的具體算法。int safe()安全性算法int i,k=O,m,apply,Fi ni sh100=0;int j;int flag=0;Work0=Avaliable0;Work1=Avaliable1;Work2=Avaliable2;for(i=0;iM;i+)apply=0;for(j=0;jN;j+)if (Fi ni shi=False&Needij=Workj)apply+;if(apply=N)for(m=0;mN;m+)Workm=Workm+Allocatio nim;變分配數(shù)Fini shi=True;tempk=i;i=-1;k+;flag+;for(i=

6、0;iM;i+)if(Fi ni shi=False)coutvv系統(tǒng)不安全endl;不成功系統(tǒng)不安全return -1;coutvv系統(tǒng)是安全的!endl; 如果安全,輸出成功coutvv安全序列:;for(i=0;iM;i+)輸出運行進(jìn)程數(shù)組couttempi;if(iM-1) cout;coute ndl; return 0;5、調(diào)試分析(1)調(diào)試過程中遇到的問題以及解決方法,設(shè)計與實現(xiàn)的回顧討論和分析 起初,對于銀行家算法的運算步驟有一定的偏差,導(dǎo)致在將算法編碼時造 成了一些錯誤,結(jié)果無法得到正確答案,之后通過仔細(xì)查閱銀行家算法的步驟, 問題得以及時解決。(2)算法的性能分析用戶對可供

7、資源和各進(jìn)程所需要的最大資源量和已分配資源量進(jìn)行賦值,可得到系統(tǒng)的安全性判定,以及安全時的安全序列以及對資源進(jìn)行請求后的系統(tǒng) 安全性判定。(3)經(jīng)驗體會通過對銀行家算法的編碼,讓我對銀行家算法的原理有了更為深刻的理解,同時也讓我意識到只有通過親自動手實踐,才能加深對算法思想的理解與記憶。6、用戶使用說明程序的使用說明,列出每一步的操作步驟開始進(jìn)行初始化7、測試結(jié)果列出測試結(jié)果,包括輸入和輸出進(jìn)程名MaxAllocationNeedababab032122011101102231112之后對進(jìn)程一進(jìn)行資源請求:進(jìn)程名MaxAllocationNeedababab03212201111100223

8、1112I8、附錄帶注釋的源程序,注釋應(yīng)清楚具體#i nclude#i ncludevstri ng.h#i nclude#defi ne False 0#defi ne True 1int Max100100=0;各進(jìn)程所需各類資源的最大需求int Avaliable100=0;系統(tǒng)可用資源char name100=0;資源的名稱int Allocatio n100100=0;系統(tǒng)已分配資源int Need100100=0; 還需要資源int Request100=0; 請求資源向量int temp100=0;存放安全序列int Work100=0;存放系統(tǒng)可提供資源int M=100; 作

9、業(yè)的最大數(shù)為100int N=100;資源的最大數(shù)為100void showdata()顯示資源矩陣int i,j;cout系統(tǒng)目前可用的資源Avaliable:endl;for(i=0;iN;i+)cout n amei;coute ndl;for (j=0;jN;j+)coutvAvaliable|jvv ;/輸出分配資源coute ndl;Neede ndl;coutMaxAllocati oncoutvv進(jìn)程名 ;for(j=0;j3;j+)for(i=0;iN;i+)cout n amei;cout;coute ndl;for(i=0;iM;i+)cout i;for(j=0;jN;

10、j+)coutMaxijvv;cout;for(j=0;jN;j+)coutAllocationij;cout;for(j=0;jN;j+)coutNeedi j;coute ndl;in t cha ngdata(i nt i)進(jìn)行資源分配int j;for (j=O;jM;j+) Avaliablej=Avaliablej-Requestj;Allocati on ij=Allocatio nij+Requestj;Needij=Needij-Requestj;return 1;int safe()安全性算法int i,k=O,m,apply,Fi ni sh100=0;int j;int

11、 flag=0;Work0=Avaliable0;Work1=Avaliable1;Work2=Avaliable2;for(i=0;iM;i+)apply=0;for(j=0;jN;j+)if (Fi ni shi=False&Needijv=Workj)apply+;if(apply=N)for(m=0;mN;m+)Workm=Workm+Allocatio nim;變分配數(shù)Fini shi=True;tempk=i;i=-1;k+;flag+;for(i=0;iM;i+)if(Fi ni shi=False)coutvv系統(tǒng)不安全endl;不成功系統(tǒng)不安全return -1;coutvv

12、系統(tǒng)是安全的!endl; 如果安全,輸出成功coutvv安全序列:;for(i=0;iM;i+)輸出運行進(jìn)程數(shù)組couttempi;if(iM-1) cout;coute ndl;return 0;void request。/利用銀行家算法對申請資源對進(jìn)行判定char ch;int i=0,j=0;ch=y;coutvv請輸入要求分配的資源進(jìn)程號(0-vvM-1vv):;cin i;輸入須申請的資源號coutvv請輸入進(jìn)程vvivv申請的資源:endl;for(j=0;jN;j+)cout n amejRequestj;/輸入需要申請的資源for (j=0;jNeedij)/判斷申請是否大于需

13、求,若大于則出錯coutvv進(jìn)程vvivv申請的資源大于它需要的資源;cout分配不合理,不予分配!Avaliablej)/判斷申請是否大于當(dāng)前資源,若大于則/出錯coutvv進(jìn)程vvivv申請的資源大于系統(tǒng)現(xiàn)在可利用的資源;coutvv 分配出錯,不予分配!vvendl;ch= n;break;if(ch=y) cha ngdata(i);/根據(jù)進(jìn)程需求量變換資源showdata();根據(jù)進(jìn)程需求量顯示變換后的資源safe();/根據(jù)進(jìn)程需求量進(jìn)行銀行家算法判斷int mai n() 主函數(shù)int i,j, nu mber,m ,n, flag,choice;char ming;COUt*單

14、處理機系統(tǒng)進(jìn)程調(diào)度實現(xiàn)* *n;N=n;for(i=0;i n ;i+)coutvv資源i+1m;M=m;cout請輸入各進(jìn)程的最大需求量(m* *陣)Max:e ndl;for(i=0;im;i+)for(j=0;j n ;j+)ci nMaxij;doflag=0;coutvv 請輸入各進(jìn)程已經(jīng)申請的資源量(m*陣)Allocati on :e ndl;for(i=0;im;i+)for(j=0;j Allocati on ij;if(Allocati on ijMaxij)flag=1;Needij=Maxij-Allocatio n ij;if(flag)coutvv申請的資源大于最大需求量,請重新

溫馨提示

  • 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

提交評論