2023年新版銀行家共享資源分配與銀行家算法實(shí)驗(yàn)報(bào)告_第1頁(yè)
2023年新版銀行家共享資源分配與銀行家算法實(shí)驗(yàn)報(bào)告_第2頁(yè)
2023年新版銀行家共享資源分配與銀行家算法實(shí)驗(yàn)報(bào)告_第3頁(yè)
2023年新版銀行家共享資源分配與銀行家算法實(shí)驗(yàn)報(bào)告_第4頁(yè)
2023年新版銀行家共享資源分配與銀行家算法實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)名稱共享資源分派與銀行家算法系(部)專業(yè)班級(jí)姓名學(xué)號(hào)指導(dǎo)教師?年月日 目錄一、課程設(shè)計(jì)目的和意義 3二、方案設(shè)計(jì)及開(kāi)發(fā)過(guò)程 31.課題設(shè)計(jì)背景 32.算法描述 33.數(shù)據(jù)結(jié)構(gòu)?44.重要函數(shù)說(shuō)明?45.算法流程圖?5三、調(diào)試記錄與分析四、運(yùn)營(yíng)結(jié)果及說(shuō)明 61.執(zhí)行結(jié)果 62.結(jié)果分析 7五、課程設(shè)計(jì)總結(jié)?8一、程設(shè)計(jì)目的和意義計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生學(xué)習(xí)完《計(jì)算機(jī)操作系統(tǒng)》課程后,進(jìn)行的一次全面的綜合訓(xùn)練,其目的在于加深催操作系統(tǒng)基礎(chǔ)理論和基本知識(shí)的理解,加強(qiáng)學(xué)生的動(dòng)手能力.銀行家算法是避免死鎖的一種重要方法。通過(guò)編寫一個(gè)模擬動(dòng)態(tài)資源分派的銀行家算法程序,進(jìn)一步進(jìn)一步理解死鎖、產(chǎn)生死鎖的必要條件、安全狀態(tài)等重要概念,并掌握避免死鎖的具體實(shí)行方法二、方案設(shè)計(jì)及開(kāi)發(fā)過(guò)程

1.課題設(shè)計(jì)背景銀行家算法又稱“資源分派拒絕”法,其基本思想是,系統(tǒng)中的所有進(jìn)程放入進(jìn)程集合,在安全狀態(tài)下系統(tǒng)受到進(jìn)程的請(qǐng)求后試探性的把資源分派給他,現(xiàn)在系統(tǒng)將剩下的資源和進(jìn)程集合中其他進(jìn)程還需要的資源數(shù)做比較,找出剩余資源能滿足最大需求量的進(jìn)程,從而保證進(jìn)程運(yùn)營(yíng)完畢后還回所有資源。這時(shí)系統(tǒng)將該進(jìn)程從進(jìn)程集合中將其清除。此時(shí)系統(tǒng)中的資源就更多了。反復(fù)執(zhí)行上面的環(huán)節(jié),最后檢查進(jìn)程的集合為空時(shí)就表白本次申請(qǐng)可行,系統(tǒng)處在安全狀態(tài),可以實(shí)行本次分派,否則,只要進(jìn)程集合非空,系統(tǒng)便處在不安全狀態(tài),本次不能分派給他。請(qǐng)進(jìn)程等待2.算法描述1)假如Request[i]是進(jìn)程Pi的請(qǐng)求向量,假如Request[i,j]=K,表達(dá)進(jìn)程Pi需要K個(gè)Rj類型的資源。當(dāng)Pi發(fā)出資源請(qǐng)求后,系統(tǒng)按下述環(huán)節(jié)進(jìn)行檢查:?假如Requesti[j]<=Need[i,j],便轉(zhuǎn)向環(huán)節(jié)2;否則認(rèn)為犯錯(cuò),由于它所需要的資源數(shù)已超過(guò)它所宣布的最大值。2)假如Requesti[j]<=Available[j],便轉(zhuǎn)向環(huán)節(jié)3,否則,表達(dá)尚無(wú)足夠資源,進(jìn)程Pi須等待。3)系統(tǒng)試探著把資源分派給進(jìn)程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:Available[j]:=Available[j]-Requesti[j];Allocat(yī)ion[i,j]:=Allocation[i,j]+Requesti[j];Need[i,j]:=Need[i,j]-Requesti[j];4)系統(tǒng)執(zhí)行安全性算法,檢查本次資源分派后,系統(tǒng)是否處在安全狀態(tài)。若安全,才正式將資源分派給進(jìn)程Pi,以完畢本次分派;否則,將本次的試探分派作廢,恢復(fù)本來(lái)的資源分派狀態(tài),讓進(jìn)程pi等待。3.數(shù)據(jù)結(jié)構(gòu)1.可運(yùn)用資源向量AVAILABLE。這是一個(gè)具有M個(gè)元素的數(shù)組,其中的每一個(gè)元素代表一類可運(yùn)用的資源數(shù)目,其3初始值是系統(tǒng)中所配置的該類所有可哦那個(gè)資源的數(shù)目,其數(shù)值隨該類資源的分派和回收而動(dòng)態(tài)的改變。2.最大需求矩陣MAX。這是一個(gè)M*N的矩陣,它定義了系統(tǒng)中N個(gè)進(jìn)程中的每一個(gè)進(jìn)程對(duì)M類資源的最大需求。3.分派矩陣ALLOCATION。這也是一個(gè)M*N的矩陣,它定義了系統(tǒng)中每一類資源當(dāng)前已分派給每一進(jìn)程的資源數(shù)。4.需求矩陣NEED。這也是一個(gè)M*N的矩陣,用以表達(dá)每一個(gè)進(jìn)程尚需的各類資源數(shù)。5.NEED[R,W]=MAX[R,W]-ALLOCATION[R,W]4.重要函數(shù)說(shuō)明重要的常量變量#defineW10//最大進(jìn)程數(shù)W=10#defineR20//最大資源總數(shù)R=20intAVAILABLE[R];//可運(yùn)用資源向量intMAX[W][R];//最大需求矩陣intALLOCATION[W][R];//分派矩陣intNEED[W][R];//需求矩陣intRequest[R];//進(jìn)程請(qǐng)求向量voidchangdata(intk);//進(jìn)程請(qǐng)求資源數(shù)據(jù)改變intchksec(ints);//系統(tǒng)安全性的檢測(cè)重要模塊voidinputdata()voidshowdata()voidchangdata(intk)voidrestoredata(intk)intchksec(ints)intchkmax(ints)5.算法流程圖三、調(diào)試記錄與分析調(diào)試通過(guò),程序未犯錯(cuò)四、運(yùn)營(yíng)結(jié)果及說(shuō)明執(zhí)行結(jié)果結(jié)果分析銀行家算法就是當(dāng)接受到一個(gè)系統(tǒng)資源的分派后找到一個(gè)安全序列,使得進(jìn)程間不會(huì)發(fā)生死鎖,若發(fā)生死鎖則讓進(jìn)程等待。五、課程設(shè)計(jì)總結(jié)通過(guò)本次銀行家算法實(shí)驗(yàn),加深了我對(duì)銀行家算法的了解,掌握了如何運(yùn)用銀行家算法避免死鎖。實(shí)驗(yàn)中碰到點(diǎn)問(wèn)題,通過(guò)查閱資料、詢問(wèn)老師順利解決。通過(guò)這次的實(shí)踐,使我的理論知識(shí)更加的牢固。附錄程序源碼:#include<iostream>usingnamespacestd;#defineFALSE0#defineTRUE1#defineW10//最大進(jìn)程數(shù)W=10#defineR20//最大資源總數(shù)R=20intM;intN;intALL_RESOURCE[W];intAVAILABLE[R];//可運(yùn)用資源向量intMAX[W][R];//最大需求矩陣intALLOCATION[W][R];//分派矩陣intNEED[W][R];//需求矩陣intRequest[R];//進(jìn)程請(qǐng)求向量voidinputdata();//數(shù)據(jù)輸入voidshowdata();//數(shù)據(jù)顯示voidchangdata(intk);//進(jìn)程請(qǐng)求資源數(shù)據(jù)改變voidrestoredata(intk);//數(shù)據(jù)恢復(fù)intchksec(ints);//系統(tǒng)安全性的檢測(cè)intchkmax(ints);//檢測(cè)最大需求voidbank();//檢測(cè)分派的資源是否合理intmain(){inti,j;inputdata();//安全性算法for(i=0;i<M;i++){?j=chksec(i);?if(j==0)break;}if(i>=M)cout<<"錯(cuò)誤提醒:經(jīng)安全性檢查發(fā)現(xiàn),系統(tǒng)的初始狀態(tài)不安全!!!\n"<<endl;else{cout<<"提醒:經(jīng)安全性檢查發(fā)現(xiàn),系統(tǒng)的初始狀態(tài)安全!"<<endl;?bank();}return0;}voidinputdata()//數(shù)據(jù)輸入{?inti=0,j=0,p;cout<<"請(qǐng)輸入總進(jìn)程數(shù):"<<endl;do{?cin>>M; if(M>W)cout<<endl<<"總進(jìn)程數(shù)超過(guò)了程序允許的最大進(jìn)程數(shù),請(qǐng)重新輸入:"<<endl;}while(M>W);cout<<endl;cout<<"請(qǐng)輸入資源的種類數(shù):"<<endl;do{cin>>N; if(N>R)cout<<endl<<"資源的種類數(shù)超過(guò)了程序允許的最大資源種類數(shù),請(qǐng)重新輸入:"<<endl;}while(N>R);cout<<endl;cout<<"請(qǐng)依次輸入各類資源的總數(shù)量,即設(shè)立向量all_resource:"<<endl;for(i=0;i<N;i++) cin>>ALL_RESOURCE[i];cout<<endl;cout<<"請(qǐng)依次輸入各進(jìn)程所需要的最大資源數(shù)量,即設(shè)立矩陣max:"<<endl;for(i=0;i<M;i++){for(j=0;j<N;j++){do{cin>>MAX[i][j];if(MAX[i][j]>ALL_RESOURCE[j])cout<<endl<<"該最大資源數(shù)量超過(guò)了聲明的該資源總數(shù),請(qǐng)重新輸入:"<<endl;}while(MAX[i][j]>ALL_RESOURCE[j]);}}cout<<endl;cout<<"請(qǐng)依次輸入各進(jìn)程已經(jīng)占據(jù)的各類資源數(shù)量,即設(shè)立矩陣allocation:"<<endl;for(i=0;i<M;i++){ for(j=0;j<N;j++) {? do{?cin>>ALLOCATION[i][j];?? if(ALLOCATION[i][j]>MAX[i][j])? ??cout<<endl<<"已占有的資源數(shù)量超過(guò)了聲明的最大資源數(shù)量,請(qǐng)重新輸入:"<<endl; }while(ALLOCATION[i][j]>MAX[i][j]);?}}cout<<endl;for(i=0;i<M;i++) for(j=0;j<N;j++) NEED[i][j]=MAX[i][j]-ALLOCATION[i][j];for(j=0;j<N;j++){ p=ALL_RESOURCE[j];?for(i=0;i<M;i++) {p=p-ALLOCATION[i][j];AVAILABLE[j]=p;if(AVAILABLE[j]<0) ? AVAILABLE[j]=0; }}}voidshowdat(yī)a()//銀行家算法{inti,j;cout<<"各種資源的總數(shù)量,即向量all_resource為:"<<endl;cout<<"";for(j=0;j<N;j++) cout<<"資源"<<j<<":"<<ALL_RESOURCE[j];cout<<endl<<endl;cout<<"當(dāng)前系統(tǒng)中各類資源的可用數(shù)量,即向量available為:"<<endl;cout<<"";for(j=0;j<N;j++)?cout<<"資源"<<j<<":"<<AVAILABLE[j];cout<<endl<<endl;cout<<"各進(jìn)程還需要的資源數(shù)量,即矩陣need為:"<<endl<<endl;for(i=0;i<M;i++){cout<<"進(jìn)程P"<<i<<":";for(j=0;j<N;j++)??cout<<NEED[i][j]<<"";cout<<endl;}cout<<endl;cout<<"各進(jìn)程已經(jīng)得到的資源量,即矩陣allocation為:"<<endl<<endl;for(i=0;i<M;i++){?cout<<"進(jìn)程P"<<i<<":"; for(j=0;j<N;j++) ?cout<<ALLOCATION[i][j]<<"";?cout<<endl;}cout<<endl;}voidchangdata(intk)//進(jìn)程請(qǐng)求資源數(shù)據(jù)改變{ intj;?for(j=0;j<N;j++) { AVAILABLE[j]=AVAILABLE[j]-Request[j];? ALLOCATION[k][j]=ALLOCATION[k][j]+Request[j];??NEED[k][j]=NEED[k][j]-Request[j]; }}voidrestoredata(intk)//數(shù)據(jù)恢復(fù){?intj; for(j=0;j<N;j++)?{?AVAILABLE[j]=AVAILABLE[j]+Request[j]; ?ALLOCATION[k][j]=ALLOCATION[k][j]-Request[j]; NEED[k][j]=NEED[k][j]+Request[j];?}}intchksec(ints)//系統(tǒng)安全性的檢測(cè){?intWORK,FINISH[W];inti,j,k=0;for(i=0;i<M;i++) FINISH[i]=FALSE;for(j=0;j<N;j++) { ?WORK=AVAILABLE[j];i=s;do {?if(FINISH[i]==FALSE&&NEED[i][j]<=WORK) {????WORK=WORK+ALLOCATION[i][j];? FINISH[i]=TRUE;?? ?i=0;? ?}else ?{ i++;?? } }while(i<M);for(i=0;i<M;i++)? if(FINISH[i]==FALSE) ? { return1;? ?} }return0;}intchkmax(ints)//檢測(cè)最大需求{intj,flag=0; for(j=0;j<N;j++) {? if(MAX[s][j]==ALLOCATION[s][j]) {flag=1;???AVAILABLE[j]=AVAILABLE[j]+MAX[s][j];???MAX[s][j]=0;??}?} returnflag;}voidbank(){inti=0,j=0;charflag='Y';while(flag=='Y'||flag=='y') {i=-1;while(i<0||i>=M)?{cout<<"請(qǐng)輸入需申請(qǐng)資源的進(jìn)程號(hào)(從P0到P"<<M-1<<",否則重新輸入!):";cout<<"p";? cin>>i;if(i<0||i>=M) cout<<"輸入的進(jìn)程號(hào)不存在,重新輸入!"<<endl;?}?cout<<"請(qǐng)輸入進(jìn)程P"<<i<<"申請(qǐng)的資源數(shù):"<<endl;?for(j=0;j<N;j++)?{ cout<<"資源"<<j<<":";??cin>>Request[j];if(Request[j]>NEED[i][j]) ?{cout<<"進(jìn)程P"<<i<<"申請(qǐng)的資源數(shù)大于進(jìn)程P"<<i<<"還需要"<<j<<"類資源的資源量!"; ?cout<<"申請(qǐng)不合理,犯錯(cuò)!請(qǐng)重新選擇!"<<endl<<endl;???flag='N'; ??break;??}? else { if(Request[j]>AVAILABLE[j])

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論