2023年計算機(jī)操作系統(tǒng)銀行家算法實驗報告_第1頁
2023年計算機(jī)操作系統(tǒng)銀行家算法實驗報告_第2頁
2023年計算機(jī)操作系統(tǒng)銀行家算法實驗報告_第3頁
2023年計算機(jī)操作系統(tǒng)銀行家算法實驗報告_第4頁
2023年計算機(jī)操作系統(tǒng)銀行家算法實驗報告_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

計算機(jī)操作系統(tǒng)實驗報告一、實驗名稱:銀行家算法二、實驗?zāi)康?銀行家算法是避免死鎖的一種重要方法,通過編寫一個簡樸的銀行家算法程序,加深了解有關(guān)資源申請、避免死鎖等概念,并體會和了解死鎖和避免死鎖的具體實行方法。三、問題分析與設(shè)計:1、算法思緒:先對用戶提出的請求進(jìn)行合法性檢查,即檢查請求是否大于需要的,是否大于可運(yùn)用的。若請求合法,則進(jìn)行預(yù)分派,對分派后的狀態(tài)調(diào)用安全性算法進(jìn)行檢查。若安全,則分派;若不安全,則拒絕申請,恢復(fù)到本來的狀態(tài),拒絕申請。2.銀行家算法環(huán)節(jié):(1)假如RequestiVor=Need,則轉(zhuǎn)向環(huán)節(jié)(2);否貝U,認(rèn)為犯錯,由于它所需要的資源數(shù)已超過它所宣布的最大值。(2)假如Request<or=Avai1ab1e,則轉(zhuǎn)向環(huán)節(jié)(3);否則,表達(dá)系統(tǒng)中尚無足夠的資源,進(jìn)程必須等待。(3)系統(tǒng)試探把規(guī)定的資源分派給進(jìn)程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:銀行家算法請輸入可利用資源向量Available<格式:a,b,c)3,3,2[辜菖入最大需求數(shù)Max(格式:a,b,c〉7,5%進(jìn)程U3,2.2進(jìn)程2:9,0,2進(jìn)程3:2,2,2進(jìn)程4:4,3,2請輸入分配數(shù)A11。cation〈格式:a,b,c>遹呈00,1,0進(jìn)程]2,0,0進(jìn)程23,0,2進(jìn)程32,1,1進(jìn)程4741安至性檢查請輸入一個序列:1,3,4,2,0這個系統(tǒng)安全?請輸入Request進(jìn)程:1該進(jìn)程Request(a,b,c〉1,0,2資源分配成功,五,實驗總結(jié)多個進(jìn)程同時運(yùn)營時,系統(tǒng)根據(jù)各類系統(tǒng)資源的最大需求和各類系統(tǒng)的剩余資源為進(jìn)程安排安全序列,使得系統(tǒng)能快速且安全地運(yùn)營進(jìn)程,不至發(fā)生死鎖。銀行家算法是避免死鎖的重要方法,其思緒在很多方面都非常值得我們來學(xué)習(xí)借鑒。輸5,程2,程0,程2,程3,灌1,程0,程0,程1,程4,全輸3,個輸20312223242A/0010223143汕進(jìn)歹**t序全les查個0安檢一2,統(tǒng)Re^<4,文,0.2源分配成功?Avai1able=Avai1ab1e-Request[i];Allocation=A1location+Request;Need=Need-Request;(4)系統(tǒng)執(zhí)行安全性算法,檢查本次資源分派后,系統(tǒng)是否處在安全狀態(tài)。3、安全性算法環(huán)節(jié):(1)設(shè)立兩個向量①工作向量Work。它表達(dá)系統(tǒng)可提供進(jìn)程繼續(xù)運(yùn)營所需要的各類資源數(shù)目,執(zhí)行安全算法開始時,Work=Allocation;②布爾向量Finish。它表達(dá)系統(tǒng)是否有足夠的資源分派給進(jìn)程,使之運(yùn)營完畢,開始時先做Finish[i]=false,當(dāng)有足夠資源分派給進(jìn)程時,令Finish[i]=trueo(2)從進(jìn)程集合中找到一個能滿足下述條件的進(jìn)程:①Finish[i]=false②Need<or=Work如找到,執(zhí)行環(huán)節(jié)(3);否貝山執(zhí)行環(huán)節(jié)(4)。(3)當(dāng)進(jìn)程P獲得資源后,可順利執(zhí)行,直至完畢,并釋放出分派給它的資源,故應(yīng)執(zhí)行:Work=Work+Allocation;Finish[i]=true;轉(zhuǎn)向環(huán)節(jié)(2)。(4)假如所有進(jìn)程的Finish口]=true,則表達(dá)系統(tǒng)處在安全狀態(tài);否則,系統(tǒng)處在不安全狀態(tài)。四.程序源代碼:inc1ude<stdio.h>defineW5〃最大進(jìn)程數(shù)歸5defineR3〃最大資源總數(shù)=3intAvailable[3];〃可運(yùn)用資源向量intMax[5][3];//最大需求矩陣intAllocation[5][3];//分派矩陣intNeed[5][3];〃需求矩陣intRequest[3];〃進(jìn)程請求向量voiddispose()printf("請輸入可運(yùn)用資源向量Avai1able(格式:a,b,c)\n");scanf(〃%d,%d,%d〃,&Availab1e[0],&Available[1],&Avai1ab1e[2]);printf(n請輸入最大需求數(shù)Max(格式:a,b,c)\n");for(intj=0;j<5;j++)(printf(〃進(jìn)程%d:\n〃,j);scanf(〃%d,%d,%d〃,&Max[j][0],[1],&Max[j][2]);}printf("請輸入分派數(shù)Allocation(格式:a,b,c)\n");for(j=0;j<5;j++)printf(〃進(jìn)程%八11",j);scanf(H%d,%d,%d,z,&AI1ocationEj][0],&A11ocation[j][1],&Allocation[j][2]);"/輸入Max[5][3],Available[5][3],Allocation[5][3]for(j=0;j<5;j++)for(inti=0;i<3;i++)Need[j][i]=Max[j][i]-A11ocati。n[j][i];〃求出Need[5]⑶)main()(printfC銀行家算法\n〃);dispose();printf(〃安全性檢查'n〃);intWork[3];〃系統(tǒng)可提供進(jìn)程繼續(xù)運(yùn)營所需的各類資源數(shù)charFinish[5];〃表達(dá)系統(tǒng)是否有足夠的資源分派for(inti=0;iV5;i++)Finish[i]=,f';for(intk=0;k<3;k++)Work[k]=Avai1able[k];intq[5];for(intx=0;x<50;x++){printf(〃請輸入一個序列:\n〃);scanfC%d,%d,%d,%d,%d,z,&q[0],&q[1,&qfor(i=0;i<5;i++)(if((Need[q[i]][0]<=Work[0])&&(Need[q[i]]⑴<=Work[1])&&(Need[q[i]][2]<=Work[2]))//比較Need[i][j]與Work[j]。for(k=0;k<3;k++)gWork[k]=Work[k]+Allocation[q[i]][k];Finish[i]=,t';if((Finish[0]='t')&&(Finish[1]=='t')&&(Finish[2]=='t')&&(Finish[3]=='t')&&(Finish[4]=='t'))//通過Finish[i]判斷系統(tǒng)是否安全?break;e1se叩rintf("此序列不是安全序列,請重新輸入一個序列!\n〃);if(x=49)oreturn0;}printf("這個系統(tǒng)安全!\n〃);inta;printf(〃請輸入Request進(jìn)程:\n〃);scanf("%d〃,&a);printf(〃該進(jìn)程Request(a,b,c)\n〃);scanf(,z%d,%d,%dz,,&Request[0],&Request[1],&Request[2]);//輸入請求量Request[3]if((Request[0]<=Need[a][0])&&(Request[1]<=Need[a][1])&&(Request[2]<=Need[a][2]))〃判斷Request[i]<=Need[a][i](if((Request[0]<=Need[a][0])&&(Request[0]<=Need[a][1])&&(Request[0]<=Need[a][2]))〃判斷Request[i]<=Available[a][i]ofor(intk=0;k<3;k++)(^Available[k]=Availab1e[k]-Request[k];。Allocation[a][k]=A11ocation[a][k]+Request[k];°Need[a][k]=Need[a][k]-Reque

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論