操作系統(tǒng)銀行家算法_第1頁
操作系統(tǒng)銀行家算法_第2頁
操作系統(tǒng)銀行家算法_第3頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、淮海工學(xué)院計算機(jī)工程學(xué)院實驗報告書課程名:計算機(jī)操作系統(tǒng)題 目: 實驗二 銀行家算法班 級:八 八姓 名:評語成績指導(dǎo)教師: 批閱時間:實驗二銀行家算法實驗?zāi)康暮鸵髴?yīng)用銀行家算法驗證進(jìn)程安全性檢查及分配資源編制模擬銀行家算法的程序,并以以下例子驗證程序的正確性。實驗環(huán)境1 . PC微機(jī)。2. Windows操作系統(tǒng)。3. C/C+/VB開發(fā)集成環(huán)境。實驗學(xué)時2學(xué)時,必做實驗實驗內(nèi)容和步驟1)根據(jù)算法流程圖編制可執(zhí)行程序2)用以下兩個例子驗證程序的正確性。3)按照上述兩個例子,輸出執(zhí)行的結(jié)果。算法流程圖銀行家算法: 安全性算法:【例1】某系統(tǒng)有 A B C、D這4類資源供5個進(jìn)程共享,進(jìn)程對資

2、源的需求和分配情況如下表所 示。現(xiàn)在系統(tǒng)中 A、B、C D類資源分別還剩1、5、2、0個,請按銀行家算法回答下列問題:進(jìn)程已占資源取大需求數(shù)ABCDArBCDP10012° :012P210001750P313542 :356P40632652P50014:656(1)現(xiàn)在系統(tǒng)是否處于安全狀態(tài) 如果現(xiàn)在進(jìn)程P2提出需要(0,4,2,0)個資源的請求,系統(tǒng)能否滿足它的請求?【例2】用銀行家算法考慮下列系統(tǒng)狀態(tài):進(jìn)程分配矩陣最大需求矩陣資源總數(shù)矩陣A301141116342B01000212C11104210D11011111E00002110問系統(tǒng)是否安全?若進(jìn)程B請求(0,0,1,0

3、),可否立即分配?此后進(jìn)程E也請求(0,0,1,0),可否分配給它?通過運行程序發(fā)現(xiàn), 例1當(dāng)中的系統(tǒng)處于不安全狀態(tài),進(jìn)程P2提出的請求無法實現(xiàn); 例2當(dāng)中的系統(tǒng)處于安全狀態(tài),進(jìn)程 B提出的請求能實現(xiàn),此后進(jìn)程E的請求也能實現(xiàn)。源代碼#in clude<iostream>#defi ne N 20#defi ne M 20using n amespace std;int f(int aNM,int bNM,int m,int k) int j;for(j=0;j<m;j+) if(ak-1j>bk-1j)return 0;return 1;int g(int aNM,i

4、nt b,int m,int k)int j;for(j=0;j<m;j+)if(akj>bj)return 0; return 1;int h(i nt a,i nt n)for(i nt i=0;i <n ;i+) if(!ai)return 0;return 1;int p(int a,int bNM,int m,int k)int j;for(j=0;j<m;j+)if(aj>bk-1j)return 0;return 1;int q(i nt a,i nt b,i nt m)int j;for(j=0;j<m;j+)if(aj>bj)retu

5、rn 0;return 1;int safe(int FinishN,int WorkM,int NeedNM,int AllocationNM,int n,int m) int i,j,k;int tN;for(i=0;i <n ;i+)ti=1;cout<<"安全性檢查!"<<endl;for(i=0;i< n;)首先找到一個滿足條件的進(jìn)程if(Fi nishi=0) &&g(Need,Work,m,i)k=i;ti=0;cout<<"p("<<k+1<<&quo

6、t;):"<<e ndl;cout<<"Work"<<m<<":"for(j=0;j<m;j+)cout<<Workj<<""Workj=Workj+Allocatio n ij;Fi nishi=1;cout<<e ndl;cout<<"Need"<<m<<":"for(j=0;j<m;j+)cout<<Needij<<"

7、;"cout<<e ndl; cout<<"Allocatio n"<< m<<":"for(j=0;j<m;j+)cout<<Allocationij<<""cout<<e ndl;cout<<"(Work+Allocati on )"<<m<<":" for(j=0;j<m;j+)cout<<Workj<<""

8、;cout<<e ndl;cout<<"Fi ni sh"<<k+1<<":"cout<<Fi nishi<<" ”; cout<<e ndl;break;elsei+;if(g(Need,Work,m,k)依次找到滿足條件的后面幾個進(jìn)程for(i=0;i <n ;i+)if(ti)if(g(Need,Work,m,i)cout<<"p("<<i+1<<"):"<<e

9、ndl; cout<<"Work"<<m<<":"for(j=0;j<m;j+)cout<<Workj<<""Workj=Workj+Allocatio n ij;Fi nishi=1;cout<<e ndl;cout<<"Need"<<m<<":"for(j=0;j<m;j+)cout<<Needij<<""cout<<

10、e ndl;cout<<"Allocatio n "<<m<<":"for(j=0;j<m;j+)cout<<Allocationij<<""cout<<e ndl;cout<<"(Work+Allocatio n)"<<m<<":" for(j=0;j<m;j+)cout<<Workj<<""cout<<e ndl;co

11、ut<<"Fi nish"<<i+1<<":"cout<<Finishi<<""cout<<e ndl;ti=O;else return 0;if(h(Finish,n)return 1;/ 系統(tǒng)處于安全狀態(tài)else return 0;/系統(tǒng)處于不安全狀態(tài)void r(int FinishN,int WorkM,int AvailableM,int NeedNM,int AllocationNM,int MaxNM,intn,i nt m)int RequestM

12、;char b;int i,j,k;cout<<"n要申請資源,請按y'或'Y',否則按n或'N'"<<endl;是立即進(jìn)行安全性檢查,還是進(jìn)行 資源申請cin> >b;if(b!='y'&&b!='Y')if(safe(Fi nish,Work,Need,Allocatio n,n ,m)cout<<"此時刻系統(tǒng)安全!n"elsecout<<"此時刻系統(tǒng)不安全!n"elsecout<

13、;<"n請輸入申請資源的進(jìn)程編號(1,2,"<<n<<"):"<<endl;cin> >k;while(k >n)cout<<"您輸入了錯誤的進(jìn)程號,請核查后重新輸入:"<<e ndl;cin> >k;cout<<"n請輸入進(jìn)程p("<<k<<")申請各類資源的數(shù)量:"<<endl;for (j=0; j<m; j+)cin> >Req

14、uestj;if(p(Request,Need,m,k)if(q(Request,Available,m)for(j=0;j<m;j+)Availablej=Availablej-Requestj;Allocatio n k-1j=Allocatio nk-1j+Requestj;Needk-1j=Needk-1j-Requestj;Workj=Availablej;cout<<"試分配!"<<endl;cout<<"各種資源可利用的數(shù)量Available"<<m<<": &qu

15、ot;<<e ndl;for (j=0; j<m; j+)cout<<Availablej<<" "cout<<e ndl;cout<<"n 已分配資源 Allocation"<<m<<": "<<endl;for (i=0; i<n; i+)for (j=0; j<m; j+)cout<<Allocatio nij<<""cout<<e ndl;cout<&l

16、t;"n 最大需求矩陣 Max"<<n<<""<<m<<": "<<endl;for (i=0; i<n; i+)for (j=0; j<m; j+)cout<<Maxij<<" "cout<<e ndl;cout<<"n 需求矩陣 Need"<<n<<""<<m<<": "<<

17、endl;for (i=0; i<n; i+)for (j=0; j<m; j+)cout<<Needij<<" "cout<<e ndl;if (safe(Fi nish,Work,Need,Allocati on,n ,m) 判斷當(dāng)前狀態(tài)的安全性cout<<"系統(tǒng)處于安全狀態(tài)!"; cout<<"n 申請資源成功!"<<endl; elsecout<<"n當(dāng)前狀態(tài)不安全!!";/恢復(fù)數(shù)據(jù)for (j=0; j<

18、m; j+)Availablej=Available|+Request|;Allocatio n k-1j=Allocatio nk-1j-Requestj;Needk-1j=Needk-1j+Requestj;Workj=Availablej;for(i=0; i<n; i+)Fi nishi=0;cout<<"n恢復(fù)數(shù)據(jù):"<<endl;顯示輸入各數(shù)組的值cout<<"各種資源可利用的數(shù)量Available"<<m<<": "<<endl;for (j=

19、0; j<m; j+)cout<<Availablej<<" "cout<<e ndl;cout<<"n 已分配資源 Allocation"<<m<<": "<<endl;for (i=0; i<n; i+)for (j=0; j<m; j+)cout<<Allocatio nij<<""cout<<e ndl;cout<<"n 最大需求矩陣 Max&quo

20、t;<<n<<""<<m<<": "<<endl;for (i=0; i<n; i+)for (j=0; j<m; j+)cout<<Maxij<<" "cout<<e ndl;cout<<"n 需求矩陣 Need"<<n<<""<<m<<": "<<endl;for (i=0; i<n; i

21、+)for (j=0; j<m; j+)cout<<Needij<<" "cout<<e ndl;cout<<"系統(tǒng)中尚無足夠的資源滿足進(jìn)程p"<<k<<"的申請,p"<<k<<"必須等待!"<<endl;else cout<<"系統(tǒng)中尚無足夠的資源滿足進(jìn)程p"<<k<<"的申請,p"<<k<<"

22、;必須等待!"<<endl;else cout<<"出錯,進(jìn)程所需要的資源數(shù)目已超過它所宣布的最大值!"<<e ndl;void mai n()cout<<""<<e ndl;cout<<" 模擬銀行家算法 "<<endl;cout<<""<<e ndl;cout<<" 江之風(fēng)海之韻 "<<endl;cout<<"QuQu"

23、<<e ndl;cout<<""<<e ndl;int AvailableM;int MaxNM;int Allocati on NM;int NeedNM;int WorkM;int Fi nishN;int i,j,n ,m;/定義全局變量cout<<"輸入進(jìn)程的數(shù)量:"/從此開始輸入有關(guān)數(shù)據(jù)cin»n;cout<<"輸入資源種類數(shù):";cin»m;cout<<"輸入各種資源可利用的數(shù)量Available"<<

24、;m<<": "<<e ndl;for (j=0; j<m; j+)cin> >Availablej;Workj=Availablej;/ 初始化 Workjcout«"n輸入各進(jìn)程對各類資源的最大需求數(shù)Max"<<n<<""<<m<<": "<<endl;cout<<"n 請嚴(yán)格按照("<<*<" x "<<m<&l

25、t;")的距陣輸入:"<<endl;for (i=0; i<n; i+)for (j=0; j<m; j+)ci n>>Maxij;cout<<"n請輸入各進(jìn)程當(dāng)前已分配的資源數(shù)量Allocation"<<n<<""<<m<<": "<<endl;cout<<"n 請嚴(yán)格按照("<<*<" x "<<m<<")的距陣輸入:"<<endl;for (i=0; i<n; i+)Fi nishi=0;for (j=0; j

溫馨提示

  • 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

提交評論