




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上操作系統(tǒng)教程 銀行家算法院 系計算機與軟件學(xué)院班 級08軟件工程2班學(xué) 號姓 名何麗茗一、實驗?zāi)康你y行家算法是避免死鎖的一種重要方法。通過編寫一個模擬動態(tài)資源分配的銀行家算法程序,進一步深入理解死鎖、產(chǎn)生死鎖的必要條件、安全狀態(tài)等重要概念,并掌握避免死鎖的具體實施方法。二、實驗內(nèi)容根據(jù)銀行家算法的基本思想,編寫和調(diào)試一個實現(xiàn)動態(tài)資源分配的模擬程序,并能夠有效地防止和避免死鎖的發(fā)生。三、實驗方法開 始輸入資源數(shù)m, 及各類資源總數(shù),初始化Available向量輸入進程數(shù)n,i=1輸入進程i的最大需求向量max。inmax資源總數(shù)提示錯誤重新輸入i加1任選一個進程作為當前
2、進程輸入該進程的資源請求量Request 調(diào)用銀行家算法,及安全性算法,完成分配,或并給出提示Need向量為0該進程已運行結(jié)束Need矩陣為0所有進程運行都結(jié)束結(jié) 束NYYNNY初始化need 矩陣NY1. 算法流程圖 2. 算法數(shù)據(jù)結(jié)構(gòu)1) 可利用資源向量Available ,它是一個最多含有100個元素的數(shù)組,其中的每一個元素代表一類可利用的資源的數(shù)目,其初始值是系統(tǒng)中所配置的該類全部可用資源數(shù)目。其數(shù)值隨該類資源的分配和回收而動態(tài)地改變。如果Available(j)=k,標是系統(tǒng)中現(xiàn)有j類資源k個。2) 最大需求矩陣Max,這是一個nm的矩陣,它定義了系統(tǒng)中n個進程中的每一個進程對m類資
3、源的最大需求。如果Max(i,j)=k,表示進程i需要j類資源的最大數(shù)目為k。3) 分配矩陣Allocation,這也是一個nm的矩陣,它定義了系統(tǒng)中的每類資源當前一分配到每一個進程的資源數(shù)。如果Allocation(i,j)=k,表示進程i當前已經(jīng)分到j(luò)類資源的數(shù)目為k。Allocation i表示進程i的分配向量,有矩陣Allocation的第i行構(gòu)成。4) 需求矩陣Need,這還是一個nm的矩陣,用以表示每個進程還需要的各類資源的數(shù)目。如果Need(i,j)=k,表示進程i還需要j類資源k個,才能完成其任務(wù)。Need i表示進程i的需求向量,由矩陣Need的第i行構(gòu)成。5) 上述三個矩陣
4、間存在關(guān)系:Need(i,j)=Max(i,j)-Allocation(i,j);3. 銀行家算法設(shè)Requesti 是進程i的請求向量,如果Requesti,j=K,表示進程i需要K個j類型的資源。當i發(fā)出資源請求后,系統(tǒng)按下述步驟進行檢查:1) 如果Request i Need,則轉(zhuǎn)向步驟2;否則,認為出錯,因為它所請求的資源數(shù)已超過它當前的最大需求量。2) 如果Request i Available,則轉(zhuǎn)向步驟3;否則,表示系統(tǒng)中尚無足夠的資源滿足i的申請,i必須等待。3) 系統(tǒng)試探性地把資源分配給進程i,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:Available = Available - Req
5、uest iAllocation i= Allocation i+ Request iNeed i= Need i - Request i4) 系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。如果安全才正式將資源分配給進程i,以完成本次分配;否則,將試探分配作廢,恢復(fù)原來的資源分配狀態(tài),讓進程i等待。四、實驗代碼以及運行示例1. 源代碼:#include#include#include#define False 0#define True 1using namespace std;int Max100100=0;/各進程所需各類資源的最大需求int Avaliable100=0;
6、/系統(tǒng)可用資源char name100=0;/資源的名稱int Allocation100100=0;/系統(tǒng)已分配資源int Need100100=0;/還需要資源int Request100=0;/請求資源向量int temp100=0;/存放安全序列int Work100=0;/存放系統(tǒng)可提供資源int M=100;/進程的最大數(shù)為int N=100;/資源的最大數(shù)為void showdata()/顯示資源矩陣int i,j;cout系統(tǒng)目前可用的資源Avaliable:endl;for(i=0;iN;i+) coutnamei ;coutendl;for (j=0;jN;j+) cout
7、Avaliablej ;/輸出分配資源coutendl;cout Max Allocation Needendl;cout進程名 ;for(j=0;j3;j+)for(i=0;iN;i+)coutnamei ;cout ;coutendl;for(i=0;iM;i+)cout i ;for(j=0;jN;j+)coutMaxij ;cout ;for(j=0;jN;j+)coutAllocationij ;cout ;for(j=0;jN;j+)coutNeedij ;coutendl;int changdata(int i)/進行資源分配 int j;for (j=0;jM;j+) Aval
8、iablej=Avaliablej-Requestj;Allocationij=Allocationij+Requestj;Needij=Needij-Requestj;return 1;int safe()/安全性算法int i,k=0,m,apply,Finish100=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 (Finishi=False&Needij=Workj) apply+;if(apply=N)for(m
9、=0;mN;m+)Workm=Workm+Allocationim;/變分配數(shù)Finishi=True;tempk=i;i=-1; k+;flag+;for(i=0;iM;i+)if(Finishi=False)cout系統(tǒng)不安全endl;/不成功系統(tǒng)不安全return -1; cout系統(tǒng)是安全的!endl;/如果安全,輸出成功 cout分配的序列:;for(i=0;iM;i+)/輸出運行進程數(shù)組couttempi;if(iM-1) cout;coutendl;return 0;void share()/利用銀行家算法對申請資源對進行判定char ch;int i=0,j=0;ch=y;co
10、ut請輸入要求分配的資源進程號(0-M-1i;/輸入須申請的資源號cout請輸入進程i 申請的資源:endl;for(j=0;jN;j+)coutnamejRequestj;/輸入需要申請的資源 for (j=0;jNeedij)/判斷申請是否大于需求,若大于則出錯 cout進程i申請的資源大于它需要的資源;cout 分配不合理,不予分配!Avaliablej)/判斷申請是否大于當前資源,若大于則 /出錯cout進程i申請的資源大于系統(tǒng)現(xiàn)在可利用的資源;cout 分配出錯,不予分配!endl;ch=n;break; if(ch=y) changdata(i);/根據(jù)進程需求量變換資源showd
11、ata();/根據(jù)進程需求量顯示變換后的資源safe();/根據(jù)進程需求量進行銀行家算法判斷 void addresources()/添加資源 int n,flag;coutn;flag=N;N=N+n;for(int i=0;in;i+)coutnameflag;coutAvaliableflag+;showdata();safe();void delresources()/刪除資源char ming;int i,flag=1;coutming;for(i=0;iN;i+)if(ming=namei)flag=0;break;if(i=N)cout該資源名稱不存在,請重新輸入:;while(
12、flag);for(int j=i;jN-1;j+)namej=namej+1;Avaliablej=Avaliablej+1;N=N-1;showdata();safe();void changeresources()/修改資源函數(shù)cout系統(tǒng)目前可用的資源Avaliable:endl; for(int i=0;iN;i+) coutnamei:Avaliableiendl;cout輸入系統(tǒng)可用資源Avaliable:Avaliable0Avaliable1Avaliable2;cout經(jīng)修改后的系統(tǒng)可用資源為endl;for (int k=0;kN;k+)coutnamek:Avaliab
13、lekendl;showdata();safe();void addprocess()/添加作業(yè) int flag=M;M=M+1;cout請輸入該作業(yè)的最大需求量Maxendl;for(int i=0;iN;i+)coutnameiMaxflagi;Needflagi=Maxflagi-Allocationflagi;showdata();safe();int main()/主函數(shù) int i,j,number,choice,m,n,flag; char ming;coutt-endl;coutt| |endl;coutt| 銀行家算法的實現(xiàn) |endl;coutt| |endl;coutt
14、| 08軟工何麗茗 |endl;coutt| |endl;coutt| |endl;coutt-endl;coutn;N=n;for(i=0;in;i+)cout資源i+1ming;namei=ming;coutnumber;Avaliablei=number;coutendl;coutm;M=m;cout請輸入各進程的最大需求量(m*n矩陣)Max:endl;for(i=0;im;i+)for(j=0;jMaxij;doflag=0;cout請輸入各進程已經(jīng)申請的資源量(m*n矩陣)Allocation:endl;for(i=0;im;i+)for(j=0;jAllocationij;if(
15、AllocationijMaxij) flag=1;Needij=Maxij-Allocationij;if(flag)cout申請的資源大于最大需求量,請重新輸入!n;while(flag); showdata();/顯示各種資源 safe();/用銀行家算法判定系統(tǒng)是否安全 while(choice)coutt-銀行家算法演示-endl;cout 1:增加資源 endl;cout 2:刪除資源 endl;cout 3:修改資源 endl;cout 4:分配資源 endl;cout 5:增加作業(yè) endl;cout 0:離開 endl;coutt-endl;coutchoice;switch(choice)case 1: addresources();break;case 2: delresources();break;case 3: changeresources();break;case 4: share();break;case 5: addprocess();break;case 0: choice
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年熱壓硫化鋅(ZNS)晶體合作協(xié)議書
- 2025年飼用原料作物合作協(xié)議書
- 2025年特種氯乙烯共聚物合作協(xié)議書
- 農(nóng)村畜牧養(yǎng)殖防疫協(xié)議書
- 2025年金昌危運資格證模擬考試題庫
- 中介手房屋買賣協(xié)議
- 高級專業(yè)技術(shù)職務(wù)聘用工作證明(6篇)
- 2025年管理心理學(xué)關(guān)鍵知識及試題及答案定位
- 月薪與獎金補貼完整收入證明(7篇)
- 股東權(quán)益保障出資證明材料(8篇)
- 生命的起源小學(xué)生課件
- 部編本語文四年級全冊各單元教材解讀
- 酒吧督察管理制度大綱
- 2024年大學(xué)生就業(yè)力調(diào)研報告-智聯(lián)招聘-202405
- 人工流產(chǎn)患者術(shù)后護理
- 電子生產(chǎn)企業(yè)人力資源管理制度
- 2025屆廣西壯族自治區(qū)柳州市高三三模語文試題【含答案解析】
- 第9課《可愛的一朵玫瑰花》課件 花城版音樂四年級下冊
- (完整版)總局關(guān)于發(fā)布醫(yī)療器械分類目錄的公告(2017年第104號)新版本醫(yī)療器械分類目錄2018版
- 房屋建筑工程竣工驗收技術(shù)資料統(tǒng)一用表(2024 版)
- 康復(fù)醫(yī)學(xué)科治療技術(shù)操作規(guī)范2023版
評論
0/150
提交評論