操作系統(tǒng)實驗四_第1頁
操作系統(tǒng)實驗四_第2頁
操作系統(tǒng)實驗四_第3頁
操作系統(tǒng)實驗四_第4頁
操作系統(tǒng)實驗四_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、理解銀行家算法。2、掌握進程安全性檢查的方法與資源分配的方法。編制模擬銀行家算法的程序,并以下面給出的例子驗證所編寫的程序的正確性。A01100BC10531D20424A01200B07366C15555D20626P0P1P2P3P400360現(xiàn)在系統(tǒng)中、、C、D4類資源分別還剩1、5、2、0個,請按銀行家算法回答:1、現(xiàn)在系統(tǒng)是否處于安全狀態(tài)?2、如果現(xiàn)在進程P1提出需要(040)個資源的請求,系統(tǒng)能否滿足它的請求?1、銀行家算法和安全性檢查算法原理。2、程序流程圖。3、程序及注釋。4、運行結果以及結論。1、銀行家算法和安全性檢查算法原理。程序流程圖3、程序及注釋#include<iostream>usingnamespacestd;intintMAX[50][100];//可用資源數(shù)組//最大需求矩陣intALLOCATION[50][100];intNEED[50][100];intREQUEST[50][100];boolFINISH[50];intp[50];//分配矩陣//需求矩陣//進程需要資源數(shù)//系統(tǒng)是否有足夠的資源分配//記錄序列intm,n;//m個進程,n個資源//一個由內核啟動的用戶級進程//安全voidInit();boolSafe();voidBank();intmain()//銀行{Init();Safe();Bank();return1;}voidInit()/*初始化算法*/{inti,j;cout<<"\t***************************************************"<<endl;cout<<"\t**銀行家算法**"<<endl;cout<<"\t****"<<endl;cout<<"\t***************************************************"<<endl;cout<<"選擇輸入進程的數(shù)目:";cin>>m;選擇入資源的種類cout<<":";cin>>n;cout<<"請輸入每個資源最大需求數(shù),按照"<<m<<"x"<<n<<"矩陣輸入"<<endl;for(i=0;i<m;i++)for(j=0;j<n;j++)cin>>MAX[i][j];//最大需求矩陣cout<<"請輸入每個進程已占資源,也按照"<<m<<"x"<<n<<"矩陣輸入"<<endl;for(i=0;i<m;i++){for(j=0;j<n;j++){cin>>ALLOCATION[i][j];//分配矩陣,已分配NEED[i][j]=MAX[i][j]-ALLOCATION[i][j];if(NEED[i][j]<0){cout<<"您輸入的第"<<i+1<<"個進程所擁有的第"<<j+1<<"個資源數(shù)誤,請重新輸入:"<<endlj--;//輸入的第i+1個進程的第j+1個資源數(shù)有誤,j-1continue;}}}cout<<"請輸入各個資源現(xiàn)有的數(shù)目:"<<endl;for(i=0;i<n;i++){可利用資源}}voidBank(){/*銀行家算法*/inti,cusneed;charagain;while(1){cout<<"請輸入要申請資源的進程號(注:第1個進程號為0,依次類推)"<<endl;cin>>cusneed;//進程號cout<<"請輸入進程所請求的各資源的數(shù)量"<<endl;for(i=0;i<n;i++){cin>>REQUEST[cusneed][i];}for(i=0;i<n;i++){if(REQUEST[cusneed][i]>NEED[cusneed][i])//請求資源數(shù)量>需求矩陣{cout<<"您輸入的請求數(shù)超過進程的需求量!請重新輸入!"<<endl;continue;}請求資源數(shù)量>可利用資源向量{cout<<"您輸入的請求數(shù)超過系統(tǒng)有的資源數(shù)!請重新輸入!"<<endl;continue;}}for(i=0;i<n;i++)//系統(tǒng)試探把資源分配給進程pi的數(shù)值{可利用資源向量=可利用資源向量請求資源數(shù)量ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];//分配矩陣=分配矩陣請求資源數(shù)量NEED[cusneed][i]-=REQUEST[cusneed][i];//需求矩陣=需求矩陣-請求資源數(shù)量}if(Safe()){cout<<"同意分配請求!"<<endl;}else{cout<<"您的請求被拒絕!"<<endl;for(i=0;i<n;i++)//{可利用資源向量=可利用資源向量請求資源數(shù)量ALLOCATION[cusneed][i]-=REQUEST[cusneed][i];//分配矩陣分配矩陣請求資源數(shù)量NEED[cusneed][i]+=REQUEST[cusneed][i];//需求矩陣=需求矩陣請求資源數(shù)量}}for(i=0;i<m;i++){FINISH[i]=false;}cout<<"您還想再次請求分配嗎?是請按否請按其它鍵"<<endl;cin>>again;if(again=='y'||again=='Y'){continue;}break;}/*安全性算法*/}boolSafe(){//安全inti,j,k,l=0;//進程數(shù)目,資源種類,j,iintWork[100];//工作數(shù)組,定義work為可用資源數(shù)組for(i=0;i<n;i++)定義workfor(i=0;i<m;i++){FINISH[i]=false;}for(i=0;i<m;i++)//進程<m為進程總數(shù)目{if(FINISH[i]==true){continue;}else{for(j=0;j<n;j++)//資源<n為資源總數(shù)目{可利用資源向量{break;//中斷}}if(j==n)//j等于資源數(shù)目{FINISH[i]=true;for(k=0;k<n;k++)//k=j資源數(shù)目{Work[k]+=ALLOCATION[i][k];//Work[j]=Work[j]+Allocation[i,j]資源數(shù)組=資源數(shù)組分配矩陣}p[l++]=i;//記錄序列為第i個i=-1;//i=i-1}else{continue;}}if(l==m)//進程數(shù)目總數(shù)目{cout<<"系統(tǒng)是安全的"<<endl;cout<<"安全序列:"<<endl;for(i=0;i<l;i++){cout<<p[i];if(i!

溫馨提示

  • 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

提交評論