銀行家算法分析和總結_第1頁
銀行家算法分析和總結_第2頁
銀行家算法分析和總結_第3頁
銀行家算法分析和總結_第4頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗2銀行家算法(2學時)一、實驗目的理解銀行家算法,掌握進程平安性檢查的方法及資源分配的方 法。二、實驗內容編寫程序實現(xiàn)銀行家算法,并驗證程序的正確性。三、實驗要求編制模擬銀行家算法的程序,并以下面給出的例子驗證所編寫的 程序的正確性。例子:某系統(tǒng)有A、B、C、D4類資源共5個進程(PO、Pl、P2、(1)現(xiàn)在系統(tǒng)是否處于平安狀態(tài)?(2)如果現(xiàn)在進程P1提出需求(0、4、2、0)個資源的請求,系統(tǒng)能否滿足它的請求?#include string.h#include iostream using namespace std;#define FALSE 0 #define TRUE 1#defi

2、ne W10#define R 20intM; 總進程數(shù)intN; 資源種類int ALL_RESOURCEW各種資源的數(shù)目總和int MAXWR;/7M個進程對N類資源最大資源需求int AVAILABLER;系統(tǒng)可用資源數(shù)intALLOCATIONWR;M個進程已經得SUN類資源的資源量int NEEDWR;/M個進程還需要N類資源的資源int RequestR;請求資源個數(shù)void shovvdata()函數(shù)showdata,輸出資源分配情況ALL:endl;資源AVALIABLE:endi;資源vvjvv”: AVAILABLEj;NEED:Hendl;資源資源r- 資源int i,j

3、; coutH coutM n;for (j=0;jN;j+)coutH nALL_RESOURCEj;coutendlendl;cout coutn n;for (j=0;jN;j+)cout coutendlendl;coutn coutn 2Hendl;for (i=0;iM;i+)for (i=0;iM;i+)進程 p,iM:1;/Icoutnfor(j=0;jN;j+)coutNEEDijn coutendl;ALLOCATION: endl;資源0”vv”資源l“vv”資源I coutendl; coutM cout2Hendl;for (i=0;iM;i+)coutH進程 p”v

4、vivv”: n;for(j=0;jN;j+)coutALLOCATIONijH M; coutendl;coutendl;Ivoid changdata(int k) 函數(shù)changdata,改變可用資源和已經拿到資源和還需要 的資源的值int j;for (j=O;jN;j+)AVAILABLEj=AVAILABLEj-Requestj;ALLOCATIONkj=ALLOCATIONkj+Requestj;NEEDkj=NEEDkj-Requestj;)void rstordata(int k) 函數(shù)rstordata,恢復可用資源和已經拿到資源和還需要的 資源的值int j;for (j

5、=O;jN;j+) AVAILABLEj=AVAILABLEj+Requestj; ALLOCATIONkj=ALLOCATIONkj-Requestj;NEEDkj=NEEDkj+Requestj;|int chkerr(int s) 函數(shù)chkerr,檢查是否由荃 int izjzk,l;int WORKWZFINISHW;for(k=0;kM;k+)FINISHk=false;|/7重置 FINISHfor(k=0;kN;k+)WORKk=AVAILABLEk;|for(i=0;i= NEEDij)1+;Iif(l=N&FINISHi=false)for(j=0;jN;j+)WORKj+

6、=ALLOCATIONij;IFINISHi=true;coutH ,pniMi=-l;else(for(i=0;iM;i+) if(FINISHi=FALSE)(coutendl;coutn系統(tǒng)進入不平安狀 態(tài),申請失??!*endl; system(pause);coutendl;return 1;|coutendl;cout分配成功vendl;system(npauseH);coutendl;return 0;void bank() 銀行家算法int i=0zj=0;char flag=Y;while(flag=,Y, | |flag=y)i=-l;while(i=M)(cout-申請資源

7、的進程號:“;coutHpn;cini;if(i=M)coutn輸入的進程號不存在,重新輸A!,endl;coutn請輸入進程Pvvivv”申請的資源數(shù):endl;for (j=O;jNEEDiR) 假設請求的資源數(shù)大于進程還需要i類資源的資 源*jcout請求資源大于進程所需資源!”vAVAILABLEj) 假設請求的資源數(shù)大于可用資源數(shù)IcoutH申請資源大于可用資源!” vvendl;cout申請不合理,出錯!請重新選擇!Vendl;system(npausen);flag=N;break;if(flag=,Y, | | flag=,y)changdata(i);調用changdata函

8、數(shù),改變資源數(shù)if(chkerr)假設系統(tǒng)平安rstordata(i);調用rstordata函數(shù),恢復資源數(shù)showdata(); /出資源分配情況Ielse假設系統(tǒng)不平安showdata();幃出資源分配情況else 假設 flag=N | | flag=nshowdata();coutendl;coutn繼續(xù)輸入Y,退出輸入任意鍵:*;cinflag;void main。主函數(shù)int i=Ozj=Ozp;COUtVV”輸入總進程數(shù):;cinM;COUtVV”輸入總資源種類嚴;cinN;COUtVV請輸入總資源數(shù):“;for(i=0;iN;i+)cinALL_RESOURCEi;coutv

9、v”依次輸入各進程所需要的最大資源數(shù):l:(max):”vvendl;for (i=0;iM;i+)for (j=O;jALL_RESOURCEj)COUtVV”占有資源超過了聲明的該資源總數(shù),請重新輸入”;)while (MAXijALL_RESOURCEj);cout依次輸入 allocation:endl;for (i=0;iM;i+)Ifor (j=O;jMAXij)coutvv”占有資源超過了聲明的最大資源,請重新輸入”;Jwhile (ALLOCATIONijMAXij);初始化資源數(shù)for (j=O;jN;j+)| p=ALL_RESOURCEj;for (i=0;iM;i+)(p=pALLOCATI

溫馨提示

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

評論

0/150

提交評論