




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
南華大學(xué)計算機(jī)學(xué)院試驗匯報(春季學(xué)期)課程名稱操作系統(tǒng)試驗名稱銀行家算法姓名學(xué)號專業(yè)網(wǎng)絡(luò)工程班級1班地點教師曹軍一、試驗題目:系統(tǒng)中有m個同類資源被n個進(jìn)程共享,每個進(jìn)程對資源最大需求數(shù)分別為S1,S2,…,Sn,且Max(Si)<=m,(i=1,2,…n)。進(jìn)程能夠動態(tài)地申請資源和釋放資源。編寫一個程序,實現(xiàn)銀行家算法,當(dāng)系統(tǒng)將資源分配給某一進(jìn)程而不會死鎖時,就分配之。不然,推遲分配,并顯示適當(dāng)信息。二、試驗?zāi)繕?biāo):當(dāng)系統(tǒng)總資源數(shù)m小于或等于全部進(jìn)程對資源最大需求Snni∑i?=1時,就可能產(chǎn)生死鎖。死鎖會引發(fā)計算機(jī)系統(tǒng)癱瘓。銀行家算法是在實現(xiàn)資源分配時防止死鎖一個著名算法,該算法是在能確保系統(tǒng)處于安全狀態(tài)時才把資源分配給申請者。經(jīng)過本試驗深入了解死鎖概念,并選擇一個算法來防止死鎖。深入了解利用銀行家算法防止死鎖問題;在了解和掌握銀行家算法。了解和掌握安全序列、安全性算法。三、試驗內(nèi)容及要求:1、設(shè)計進(jìn)程對各類資源最大申請表示及初值確實定。2、設(shè)定系統(tǒng)提供資源初始情況。3、設(shè)定每次某個進(jìn)程對各類資源申請表示。4、編制程序,依據(jù)銀行家算法,決定其資源申請是否得到滿足。5、顯示資源申請和分配時改變情況。四、試驗過程:程序要求:
1.判斷當(dāng)前狀態(tài)是否安全,假如安全,給出安全序列;假如不安全給出理由。
2.對于下一個時刻T1,某個進(jìn)程Pk會提出請求Request(R1,…,Rm),判斷分配給Pk進(jìn)程請求資源之后是否安全。假如安全,給出安全序列;假如不安全給出理由。3.輸入:進(jìn)程個數(shù)n,資源種類m,T0時刻各個進(jìn)程資源分配情況(能夠運行輸入,也能夠在程序中設(shè)置)。
4.輸出:假如安全輸出安全進(jìn)程序列,不安全提醒信息。
進(jìn)程調(diào)度實現(xiàn)過程:1.變量初始化;
2.接收用戶輸入n,m,(輸入或者默認(rèn))Allocationij,Needij;
3.按照銀行家算法判斷當(dāng)前狀態(tài)安全是否,安全給出安全序列,不安全給出提醒;
4.假如安全,提醒用戶輸入下一時刻進(jìn)程Pk資源請求Request(R1,…,Rm);
5.假如不安全或者無新請求則退出。源代碼:#include<stdio.h>#include<iostream>#include<iomanip>#include<fstream>#include<windows.h>usingnamespacestd;#defineMaxNumber20staticintn;staticintm;staticintAvailable[MaxNumber];staticintMax[MaxNumber][MaxNumber];staticintAllocation[MaxNumber][MaxNumber];staticintNeed[MaxNumber][MaxNumber];staticintRequest[MaxNumber];staticintSafeOrder[MaxNumber];staticboolFinish[MaxNumber];staticboolisDisplayAvaliable=true;staticcharsourceName[]={'A','B','C','D','E','F','G','H','I','J','K'};//資源名稱voidinput();boolisSystemSafe();voidbankerAlgorithm();voiddisplay();intmain(){input();bankerAlgorithm();system("pause");return0;}voidinput(){//intn=6;//intm=3;ifstreaminData;inData.open("C:/476.txt");//讀取數(shù)據(jù)inData>>n;inData>>m;for(inti=0;i<m;i++){inData>>Available[i];}for(inti=0;i<n;i++){for(intj=0;j<m;j++){inData>>Allocation[i][j];}}for(inti=0;i<n;i++){for(intj=0;j<m;j++){inData>>Need[i][j];}}for(inti=0;i<n;i++){for(intj=0;j<m;j++){Max[i][j]=Need[i][j]+Allocation[i][j];}}cout<<"*****************************程序開始*******************************"<<endl;display();}boolisSystemSafe(){intwork[MaxNumber];for(inti=0;i<m;i++)//m是資源個數(shù)A,B,C{work[i]=Available[i];}for(inti=0;i<n;i++)//n是進(jìn)程個數(shù){Finish[i]=false;SafeOrder[i]=-1;//初始化安全序列}intFinishNumebr=0;intisSafe;inti=0,j;while(i<n){isSafe=0;for(j=0;j<m;j++){if(Finish[i]==false&&Need[i][j]<=work[j]){isSafe++;}elsebreak;}if(isSafe==m)//當(dāng)且僅當(dāng)進(jìn)程對應(yīng)全部資源數(shù)量都滿足時候才成立{Finish[i]=true;SafeOrder[FinishNumebr]=i;FinishNumebr++;for(j=0;j<m;j++){work[j]+=Allocation[i][j];}i=0;//找到滿足條件進(jìn)程后,從頭開始再進(jìn)行尋找}elsei++;if(FinishNumebr==n){cout<<"**********************************Safe!******************************"<<endl;cout<<"對應(yīng)安全序列為:"<<endl;cout<<"P"<<SafeOrder[0];for(inti=1;i<n;i++){cout<<"-->"<<"P"<<SafeOrder[i];}cout<<endl;returntrue;}}cout<<"******************************unSafe!******************************"<<endl;returnfalse;}voidbankerAlgorithm(){intchooseProcess;charisContinue;while(true){//設(shè)置兩個布爾變量:判別請求向量是等候還是系統(tǒng)已經(jīng)不再分配新資源boolisRequestNeedOK=true;boolisRequestAvailableOK=true;cout<<"請輸入要申請資源進(jìn)程號(注意:第一個進(jìn)程為0號,第二個進(jìn)程為1號,以這類推!)"<<endl<<"chooseProcess=";cin>>chooseProcess;cout<<"請輸入進(jìn)程所請求各類資源數(shù)量:(ABC)"<<endl;for(inti=0;i<m;i++){cin>>Request[i];}//輸入錯誤判斷for(inti=0;i<m;i++){if(Request[i]>Need[chooseProcess][i]){cout<<"**************************當(dāng)前運行結(jié)果*****************************"<<endl;cout<<"您輸入請求進(jìn)程所對應(yīng)資源數(shù)量超出最大需求量,請重新輸入!"<<endl;//cout<<"****************************************************************"<<endl;isRequestNeedOK=false;continue;}if(Request[i]>Available[i]){cout<<"**************************當(dāng)前運行結(jié)果*****************************"<<endl;cout<<"您輸入請求進(jìn)程資源數(shù)量超出系統(tǒng)所供給最大資源數(shù)量pi必須等候,請重新輸入!"<<endl;//cout<<"****************************************************************"<<endl;isRequestAvailableOK=false;continue;}}for(intj=0;j<m;j++){Available[j]-=Request[j];Allocation[chooseProcess][j]+=Request[j];Need[chooseProcess][j]-=Request[j];}cout<<"**********************************************************************"<<endl;if(!isSystemSafe())//怎樣不滿足系統(tǒng)安全性算法,將此次試探作廢,恢復(fù)到原來值{for(intj=0;j<m;j++){Available[j]+=Request[j];Allocation[chooseProcess][j]-=Request[j];Need[chooseProcess][j]+=Request[j];}//當(dāng)請求向量Request滿足和Need、Available關(guān)系時,證實系統(tǒng)已不能再分配資源if(isRequestAvailableOK&&isRequestNeedOK){cout<<"**************************當(dāng)前運行結(jié)果*****************************"<<endl;cout<<"當(dāng)前可利用資源已經(jīng)不能滿足任何進(jìn)程需求,故系統(tǒng)進(jìn)入不安全狀態(tài),系統(tǒng)不分配資源!"<<endl;cout<<"****************************************************************"<<endl;}}cout<<"嘗試依照p(i)發(fā)出請求向量后資源情況:"<<endl;display();cout<<"*******************************************************************"<<endl;cout<<"是否繼續(xù)輸入請求變量request進(jìn)行測試,是(Y),否(N)"<<endl;cout<<"isContinue=";cin>>isContinue;if(isContinue=='Y'||isContinue=='y'){//input();//實現(xiàn)數(shù)次請求(保留上一次請求狀態(tài))continue;}elseif(isContinue=='N'||isContinue=='n'){cout<<"******************************程序結(jié)束*****************************"<<endl;break;}}}voiddisplay(){charprocessName[]={'1','2','3','4','5','6'};cout<<"----------------------------------------------------------------------"<<endl;cout<<"當(dāng)前進(jìn)程個數(shù)為n="<<n<<endl;cout<<"當(dāng)前資源個數(shù)為m="<<m<<endl;cout<<"系統(tǒng)可利用資源數(shù)情況以下:"<<endl;for(inti=0;i<m;i++){cout<<setw(5)<<sourceName[i]<<"";}cout<<endl;cout<<setw(5)<<Available[0]<<"";cout<<setw(5)<<Available[1]<<"";cout<<setw(5)<<Available[2]<<""<<endl;cout<<"------------------------------------------------------------------------"<<endl;cout<<"processName";cout<<setw(10)<<"Max[][]"<<"";cout<<setw(15)<<"Allocation[][]"<<"";cout<<setw(10)<<"Need[][]"<<"";if(isDisplayAvaliable){cout<<setw(15)<<"available[][]";}cout<<endl;cout<<setw(15);for(inti=0;i<m;i++){cout<<sourceName[i]<<setw(3);}cout<<setw(5);for(inti=0;i<m;i++){cout<<sourceName[i]<<setw(3);}cout<<setw(10);for(inti=0;i<m;i++){cout<<sourceName[i]<<setw(3);}if(isDisplayAvaliable){cout<<setw(5);for(inti=0;i<m;i++){cout<<sourceName[i]<<setw(3);}}cout<<
溫馨提示
- 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年度新型養(yǎng)老服務(wù)機(jī)構(gòu)代繳社保服務(wù)協(xié)議范本
- 2025年新能源發(fā)電設(shè)備定期檢查與維護(hù)合同
- 2025年度智能車庫租賃及車位租賃與停車資源共享協(xié)議
- 2025年度土地承包經(jīng)營權(quán)流轉(zhuǎn)糾紛調(diào)解合同模板
- 2025年茶葉種植基地生態(tài)保護(hù)與修復(fù)承包協(xié)議
- 2025年度離婚協(xié)議書格式規(guī)范與編制要求
- 秘書工作計劃對企業(yè)目標(biāo)的支持
- 班級跨學(xué)科活動的實施路徑計劃
- 社團(tuán)活動資源共享方案計劃
- 醫(yī)院文化建設(shè)增效方案計劃
- 丙烯-危險化學(xué)品安全周知卡
- 2024-2030年中國免疫檢查點抑制劑行業(yè)市場研究分析及投資機(jī)會預(yù)測報告
- 《太常引·建康中秋夜為呂叔潛賦》示范課教學(xué)設(shè)計(部編人教版九年級語文下冊)
- 學(xué)前兒童角色游戲的組織與指導(dǎo)(學(xué)前兒童游戲課件)
- 《配電網(wǎng)設(shè)施可靠性評價指標(biāo)導(dǎo)則》
- 2024年國家電網(wǎng)招聘之通信類題庫附參考答案(考試直接用)
- 浙教版一年級下冊勞動全冊教學(xué)課件
- 2024年臺州市宏泰供電服務(wù)有限公司招聘筆試參考題庫附帶答案詳解
- ## 外事領(lǐng)域意識形態(tài)工作預(yù)案
- CJJ 169-2012城鎮(zhèn)道路路面設(shè)計規(guī)范
- 廚房安全知識課件
評論
0/150
提交評論