


版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)工業(yè)廠房買賣合同范本
- 合同范本彩鋼棚
- 公家車庫出租合同范本
- 發(fā)廊股東協(xié)議合同范本
- 北京中開合同范本
- 合建房合同范本
- 勞動合同范本企業(yè)
- 從化醫(yī)院食堂承包合同范本
- 項目合作定金合同范本
- 合同范本范本
- 2025年武漢長江委水文局招考(57人)高頻重點模擬試卷提升(共500題附帶答案詳解)
- 四川省成都市2024年七年級《英語》上冊月考試題與參考答案
- 2025(人教版)數(shù)學(xué)一年級下冊全冊教學(xué)案
- 蘇科版 八年級物理下冊 第六章 綜合測試卷(2025年春)
- 2025年中學(xué)生心理健康教育心得體會例文(5篇)
- 人教版 七年級英語下冊 UNIT 1 單元綜合測試卷(2025年春)
- 小學(xué)生學(xué)會公平與公正的行為主題班會
- 2025年遼寧醫(yī)藥職業(yè)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 《大學(xué)物理矢量》課件
- 中醫(yī)藥文化知識培訓(xùn)課件
- 2024年漢中職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫有答案解析
評論
0/150
提交評論