![銀行家算法c語言流程圖代碼全參考模板_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/cd96760e-80db-4c11-a274-7e7b510f0107/cd96760e-80db-4c11-a274-7e7b510f01071.gif)
![銀行家算法c語言流程圖代碼全參考模板_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/cd96760e-80db-4c11-a274-7e7b510f0107/cd96760e-80db-4c11-a274-7e7b510f01072.gif)
![銀行家算法c語言流程圖代碼全參考模板_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/cd96760e-80db-4c11-a274-7e7b510f0107/cd96760e-80db-4c11-a274-7e7b510f01073.gif)
![銀行家算法c語言流程圖代碼全參考模板_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/cd96760e-80db-4c11-a274-7e7b510f0107/cd96760e-80db-4c11-a274-7e7b510f01074.gif)
![銀行家算法c語言流程圖代碼全參考模板_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/cd96760e-80db-4c11-a274-7e7b510f0107/cd96760e-80db-4c11-a274-7e7b510f01075.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!操作系統(tǒng)教程 銀行家算法院 系計算機(jī)與軟件學(xué)院班 級08軟件工程2班學(xué) 號20081344066姓 名何麗茗1 / 11傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!一、實(shí)驗(yàn)?zāi)康你y行家算法是避免死鎖的一種重要方法。通過編寫一個模擬動態(tài)資源分配的銀行家算法程序,進(jìn)一步深入理解死鎖、產(chǎn)生死鎖的必要條件、安全狀態(tài)等重要概念,并掌握避免死鎖的具體實(shí)施方法。二、實(shí)驗(yàn)內(nèi)容根據(jù)銀行家算法的基本思想,編寫和調(diào)試一個實(shí)現(xiàn)動態(tài)資源分配的模擬程序,并能夠有效地防止和避免死鎖的發(fā)生。三、實(shí)驗(yàn)方法開 始輸入資源數(shù)m, 及各類資源總數(shù),初始化available
2、向量輸入進(jìn)程數(shù)n,i=1輸入進(jìn)程i的最大需求向量max。inmax資源總數(shù)提示錯誤重新輸入i加1任選一個進(jìn)程作為當(dāng)前進(jìn)程輸入該進(jìn)程的資源請求量request 調(diào)用銀行家算法,及安全性算法,完成分配,或并給出提示need向量為0該進(jìn)程已運(yùn)行結(jié)束need矩陣為0所有進(jìn)程運(yùn)行都結(jié)束結(jié) 束nyynny初始化need 矩陣ny1. 算法流程圖 傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!2. 算法數(shù)據(jù)結(jié)構(gòu)1) 可利用資源向量available ,它是一個最多含有100個元素的數(shù)組,其中的每一個元素代表一類可利用的資源的數(shù)目,其初始值是系統(tǒng)中所配置的該類全部可用資源數(shù)目。其數(shù)值隨該類資源的分配和
3、回收而動態(tài)地改變。如果available(j)=k,標(biāo)是系統(tǒng)中現(xiàn)有j類資源k個。2) 最大需求矩陣max,這是一個n×m的矩陣,它定義了系統(tǒng)中n個進(jìn)程中的每一個進(jìn)程對m類資源的最大需求。如果max(i,j)=k,表示進(jìn)程i需要j類資源的最大數(shù)目為k。3) 分配矩陣allocation,這也是一個n×m的矩陣,它定義了系統(tǒng)中的每類資源當(dāng)前一分配到每一個進(jìn)程的資源數(shù)。如果allocation(i,j)=k,表示進(jìn)程i當(dāng)前已經(jīng)分到j(luò)類資源的數(shù)目為k。allocation i表示進(jìn)程i的分配向量,有矩陣allocation的第i行構(gòu)成。4) 需求矩陣need,這還是一個n×
4、;m的矩陣,用以表示每個進(jìn)程還需要的各類資源的數(shù)目。如果need(i,j)=k,表示進(jìn)程i還需要j類資源k個,才能完成其任務(wù)。need i表示進(jìn)程i的需求向量,由矩陣need的第i行構(gòu)成。5) 上述三個矩陣間存在關(guān)系:need(i,j)=max(i,j)-allocation(i,j);3. 銀行家算法設(shè)requesti 是進(jìn)程i的請求向量,如果requesti,j=k,表示進(jìn)程i需要k個j類型的資源。當(dāng)i發(fā)出資源請求后,系統(tǒng)按下述步驟進(jìn)行檢查:1) 如果request i need,則轉(zhuǎn)向步驟2;否則,認(rèn)為出錯,因?yàn)樗埱蟮馁Y源數(shù)已超過它當(dāng)前的最大需求量。2) 如果request i av
5、ailable,則轉(zhuǎn)向步驟3;否則,表示系統(tǒng)中尚無足夠的資源滿足i的申請,i必須等待。3) 系統(tǒng)試探性地把資源分配給進(jìn)程i,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:available = available - request iallocation i= allocation i+ request ineed i= need i - request i4) 系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。如果安全才正式將資源分配給進(jìn)程i,以完成本次分配;否則,將試探分配作廢,恢復(fù)原來的資源分配狀態(tài),讓進(jìn)程i等待。四、實(shí)驗(yàn)代碼以及運(yùn)行示例1. 源代碼:#include<iostream
6、>#include<string.h>#include<stdio.h>#define false 0#define true 1using namespace std;int max100100=0;/各進(jìn)程所需各類資源的最大需求int avaliable100=0;/系統(tǒng)可用資源char name100=0;/資源的名稱int allocation100100=0;/系統(tǒng)已分配資源int need100100=0;/還需要資源傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!int request100=0;/請求資源向量int temp100=0;/存放
7、安全序列int work100=0;/存放系統(tǒng)可提供資源int m=100;/進(jìn)程的最大數(shù)為int n=100;/資源的最大數(shù)為void showdata()/顯示資源矩陣int i,j;cout<<"系統(tǒng)目前可用的資源avaliable:"<<endl;for(i=0;i<n;i+) cout<<namei<<" "cout<<endl;for (j=0;j<n;j+) cout<<avaliablej<<" "/輸出分配資源cout&l
8、t;<endl;cout<<" max allocation need"<<endl;cout<<"進(jìn)程名 "for(j=0;j<3;j+)for(i=0;i<n;i+)cout<<namei<<" "cout<<" "cout<<endl;for(i=0;i<m;i+)cout<<" "<<i<<" "for(j=0;j<n;
9、j+)cout<<maxij<<" "cout<<" "for(j=0;j<n;j+)cout<<allocationij<<" "cout<<" "for(j=0;j<n;j+)cout<<needij<<" "cout<<endl;int changdata(int i)/進(jìn)行資源分配 int j;for (j=0;j<m;j+) avaliablej=avaliab
10、lej-requestj;allocationij=allocationij+requestj;needij=needij-requestj;傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!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;i<m;i+) apply=0;for(j=0;j<n;j+)if (finishi=false&&needij&
11、lt;=workj) apply+;if(apply=n)for(m=0;m<n;m+)workm=workm+allocationim;/變分配數(shù)finishi=true;tempk=i;i=-1; k+;flag+;for(i=0;i<m;i+)if(finishi=false)cout<<"系統(tǒng)不安全"<<endl;/不成功系統(tǒng)不安全return -1; cout<<"系統(tǒng)是安全的!"<<endl;/如果安全,輸出成功 cout<<"分配的序列:"for(i
12、=0;i<m;i+)/輸出運(yùn)行進(jìn)程數(shù)組cout<<tempi;if(i<m-1) cout<<"->"cout<<endl;return 0;void share()/利用銀行家算法對申請資源對進(jìn)行判定傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!char ch;int i=0,j=0;ch='y'cout<<"請輸入要求分配的資源進(jìn)程號(0-"<<m-1<<"):" cin>>i;/輸入須申請的資源號cout
13、<<"請輸入進(jìn)程"<<i<<" 申請的資源:"<<endl;for(j=0;j<n;j+)cout<<namej<<":"cin>>requestj;/輸入需要申請的資源 for (j=0;j<n;j+)if(requestj>needij)/判斷申請是否大于需求,若大于則出錯 cout<<"進(jìn)程"<<i<<"申請的資源大于它需要的資源"cout<<
14、;" 分配不合理,不予分配!"<<endl;ch='n'break;else if(requestj>avaliablej)/判斷申請是否大于當(dāng)前資源,若大于則 /出錯cout<<"進(jìn)程"<<i<<"申請的資源大于系統(tǒng)現(xiàn)在可利用的資源"cout<<" 分配出錯,不予分配!"<<endl;ch='n'break; if(ch='y') changdata(i);/根據(jù)進(jìn)程需求量變換資源show
15、data();/根據(jù)進(jìn)程需求量顯示變換后的資源safe();/根據(jù)進(jìn)程需求量進(jìn)行銀行家算法判斷 void addresources()/添加資源 int n,flag;cout<<"請輸入需要添加資源種類的數(shù)量:"cin>>n;flag=n;n=n+n;for(int i=0;i<n;i+)cout<<"名稱:"傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!cin>>nameflag;cout<<"數(shù)量:"cin>>avaliableflag+;sh
16、owdata();safe();void delresources()/刪除資源char ming;int i,flag=1;cout<<"請輸入需要刪除的資源名稱:"docin>>ming;for(i=0;i<n;i+)if(ming=namei)flag=0;break;if(i=n)cout<<"該資源名稱不存在,請重新輸入:"while(flag);for(int j=i;j<n-1;j+)namej=namej+1;avaliablej=avaliablej+1;n=n-1;showdata();
17、safe();void changeresources()/修改資源函數(shù)cout<<"系統(tǒng)目前可用的資源avaliable:"<<endl; for(int i=0;i<n;i+) cout<<namei<<":"<<avaliablei<<endl;cout<<"輸入系統(tǒng)可用資源avaliable:"<<endl;cin>>avaliable0>>avaliable1>>avaliable2;co
18、ut<<"經(jīng)修改后的系統(tǒng)可用資源為"<<endl;for (int k=0;k<n;k+)cout<<namek<<":"<<avaliablek<<endl;showdata();safe();void addprocess()/添加作業(yè)傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除! int flag=m;m=m+1;cout<<"請輸入該作業(yè)的最大需求量max"<<endl;for(int i=0;i<n;i+)co
19、ut<<namei<<":"cin>>maxflagi;needflagi=maxflagi-allocationflagi;showdata();safe();int main()/主函數(shù) int i,j,number,choice,m,n,flag; char ming;cout<<"t-"<<endl;cout<<"t| |"<<endl;cout<<"t| 銀行家算法的實(shí)現(xiàn) |"<<endl;cout
20、<<"t| |"<<endl;cout<<"t| 08軟工何麗茗 |"<<endl;cout<<"t| |"<<endl;cout<<"t| 20081344066 |"<<endl;cout<<"t-"<<endl;cout<<"請首先輸入系統(tǒng)可供資源種類的數(shù)量:"cin>>n;n=n;for(i=0;i<n;i+)cout&
21、lt;<"資源"<<i+1<<"的名稱:"cin>>ming;namei=ming;cout<<"資源的數(shù)量:"cin>>number;avaliablei=number;cout<<endl;cout<<"請輸入作業(yè)的數(shù)量:"cin>>m;m=m;cout<<"請輸入各進(jìn)程的最大需求量("<<m<<"*"<<n<<
22、"矩陣)max:"<<endl;for(i=0;i<m;i+)for(j=0;j<n;j+)cin>>maxij;do傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!flag=0;cout<<"請輸入各進(jìn)程已經(jīng)申請的資源量("<<m<<"*"<<n<<"矩陣)allocation:"<<endl;for(i=0;i<m;i+)for(j=0;j<n;j+)cin>>allocat
23、ionij;if(allocationij>maxij) flag=1;needij=maxij-allocationij;if(flag)cout<<"申請的資源大于最大需求量,請重新輸入!n"while(flag); showdata();/顯示各種資源 safe();/用銀行家算法判定系統(tǒng)是否安全 while(choice)cout<<"t-銀行家算法演示-"<<endl;cout<<" 1:增加資源 "<<endl;cout<<" 2:刪除資源 "<<endl
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球電腦鎮(zhèn)痛泵行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球電動汽車高壓直流繼電器行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國IO-Link信號燈行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國堆棧式CMOS圖像傳感器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 經(jīng)典居間合同
- 農(nóng)機(jī)作業(yè)服務(wù)合同
- 環(huán)保設(shè)施運(yùn)營管理合同
- 熱長期供貨合同
- 安全監(jiān)控系統(tǒng)集成服務(wù)合同
- 政府與企業(yè)合作協(xié)議
- 《西方思想經(jīng)典》課件
- 中醫(yī)診療設(shè)備種類目錄
- 戰(zhàn)略管理與倫理
- 如何構(gòu)建高效課堂課件
- 徐金桂行政法與行政訴訟法新講義
- 瀝青拌合設(shè)備結(jié)構(gòu)認(rèn)知
- GB/T 13234-2018用能單位節(jié)能量計算方法
- (課件)肝性腦病
- 北師大版五年級上冊數(shù)學(xué)教學(xué)課件第5課時 人民幣兌換
- 工程回訪記錄單
- 高考物理二輪專題課件:“配速法”解決擺線問題
評論
0/150
提交評論