版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)四 銀行家算法(一)教學(xué)要求掌握處理死鎖的方法,掌握銀行家算法的實(shí)現(xiàn)(二)知識(shí)點(diǎn)提示死鎖的概念,死鎖產(chǎn)生的原因和條件,處理死鎖的方法,銀行家算法,安全狀態(tài)和不安全狀態(tài),安全性算法(三)教學(xué)內(nèi)容銀行家算法的模擬實(shí)現(xiàn)實(shí)驗(yàn)步驟:(1)定義數(shù)據(jù)結(jié)構(gòu):allocation; /分配矩陣available; /可用資源向量need; /需求矩陣request; /資源請(qǐng)求向量(2)定義函數(shù):void bank_arithmetic(int i, int request) /銀行家算法 void isSafe( ); /安全性算法 主函數(shù)中對(duì)可用資源向量,分配矩陣和需求矩陣進(jìn)行初始化(輸入數(shù)據(jù)參照課本P
2、113的例題),輸入請(qǐng)求資源的進(jìn)程編號(hào)以及請(qǐng)求的資源向量,通過調(diào)用銀行家算法判斷是否可以把資源分配給請(qǐng)求資源的進(jìn)程。(3)銀行家算法的執(zhí)行步驟:設(shè)Requesti是進(jìn)程Pi的請(qǐng)求向量。若Requestij=k,表示進(jìn)程Pi需要k個(gè)j類資源。當(dāng)Pi發(fā)出資源請(qǐng)求后,系統(tǒng)按下述步驟進(jìn)行檢查: 若RequestiNeedi ,則轉(zhuǎn);否則,認(rèn)為出錯(cuò)。因?yàn)樗枰馁Y源數(shù)已超過它所宣布的最大值。 若RequestiAvailable,則轉(zhuǎn);否則,表示系統(tǒng)中尚無足夠的資源,Pi必須等待。 系統(tǒng)試探把要求的資源分配給進(jìn)程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值。 Available=Available Request
3、i Allocationi = Allocationi + Requesti Needi = Needi Requesti 系統(tǒng)執(zhí)行安全性算法,檢測(cè)此次資源分配后,系統(tǒng)是否處于安全狀態(tài)。若安全,才正式將資源分給進(jìn)程Pi;否則,將試探分配作廢,恢復(fù)資源狀態(tài),讓Pi等待。(4)安全性算法的執(zhí)行步驟: 設(shè)置兩個(gè)向量work和finish工作向量work,它表示系統(tǒng)可提供給進(jìn)程繼續(xù)運(yùn)行的各類資源數(shù),含有m個(gè)元素,其初始值為:workj=availablej。完成向量finish,它表示系統(tǒng)是否有足夠資源使進(jìn)程推進(jìn)完成,開始執(zhí)行安全性算法時(shí),F(xiàn)inishi=false;當(dāng)有足夠資源分配給進(jìn)程Pi,Pi推
4、進(jìn)完成時(shí),令Finishi=true。 從進(jìn)程集合中找到一個(gè)進(jìn)程,其滿足: Finishi=false Needi,j Workj 如找到則執(zhí)行步驟 ,找不到則執(zhí)行步驟。 當(dāng)進(jìn)程Pi獲得資源后,便可以向前推進(jìn),直至完 成,并釋放出分配給它的全部資源,故應(yīng)執(zhí)行: Workj=Workj+Allocationi,j; Finishi=true; 執(zhí)行步驟。 若所有進(jìn)程的Finish都為true,則系統(tǒng)為安全狀態(tài);否則,系統(tǒng)為不安全狀態(tài)。實(shí)驗(yàn)程序:#include <stdio.h>#define M 3#define N 5int available=3,3,2;int allocat
5、ionNM=0,1,0,2,0,0,3,0,2,2,1,1,0,0,2;int needNM=7,4,3,1,2,2,6,0,0,0,1,1,4,3,1;void banker_arithmetic(int i,int request)int isSafe();int j,k,l;printf("進(jìn)程P%d請(qǐng)求資源,資源請(qǐng)求向量為: n",i);for(j=0;j<M;j+)printf("%d ",requestj);printf("n");j=0;while(j < M)if(requestj<=needij)
6、j+;elsebreak;if(j=M)k=0;while(k < M)if(requestk<=needik)k+;elsebreak;if(k=M)for(l=0;l<M;l+)availablel=availablel-requestl;allocationil=allocationil+requestl;needil=needil-requestl;if(isSafe()printf("分配是安全的,可以把資源分配給p%dn",i);elseprintf("分配是不安全的,不能把資源分配給P%dn",i);for(l=0;l&l
7、t;M;l+)availablel=availablel+requestl;allocationil=allocationil-requestl;needil=needil+requestl;printf("Allocation:");for(j=0;j<N;j+)for(k=0;k<M;k+)printf("%d ",allocationjk); printf("n");printf("Need:");for(j=0;j<N;j+)for(k=0;k<M;k+)printf("%
8、d ",needjk); printf("n");printf("Available:n");for(j=0;j<M;j+)printf("%d ",availablej);printf("n");i+;int isSafe()int workM;int i,j,k,l=0,a=0;int finish=0,0,0,0,0;for(i=0;i<M;i+)worki=availablei;while(l<N|a < N) i=0;while(i<N) if(finishi=0)
9、 j=0; while(j<M) if(needij<=workj) j+; else break; if(j=M) printf("P%d ",i); for(k=0;k<M;k+) workk=workk+allocationik; printf("n"); finishi=1; l+; i+;a+;for(i=0;i<N;i+)if(finishi=0)return 0;return 1;int main()int i=1;int request=1,0,2; banker_arithmetic(i,request);return 0;實(shí)驗(yàn)結(jié)果:進(jìn)程p1請(qǐng)求資源,資源請(qǐng)求向量為:1 0 2p1p3p4p0p2分配是安全的,可以把資源分配給p1Allocation:0 1 03 0 23 0 22 1 10 0 2Need:7 4 30 2 06 0 00 1 14 3 1Available:2 3 0Press any key to continue.(四)思考題1、死鎖產(chǎn)生的原因是什么?死鎖產(chǎn)生的原因有競(jìng)爭(zhēng)不可搶占型資源引起死鎖 競(jìng)爭(zhēng)可消耗資源引起死鎖 進(jìn)程推進(jìn)順序不當(dāng)引發(fā)死鎖2、處理死鎖的方法有哪些?預(yù)防死鎖:通過設(shè)置某些限制條件,去破壞
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國汽車空調(diào)鼓風(fēng)電機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國高速銅纜行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球虛擬首席信息安全官(VCISO)服務(wù)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國充電保護(hù)裝置行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球矯形外科行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球機(jī)器人滾柱絲杠行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國機(jī)器人地板洗干一體機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國LLDPE纏繞膜行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國AKD中性施膠劑行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球數(shù)字創(chuàng)意展覽服務(wù)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 電力溝施工組織設(shè)計(jì)-電纜溝
- 《法律援助》課件
- 小兒肺炎治療與護(hù)理
- 《高處作業(yè)安全》課件
- 春節(jié)后收心安全培訓(xùn)
- 小學(xué)教師法制培訓(xùn)課件
- 電梯操作證及電梯維修人員資格(特種作業(yè))考試題及答案
- 市政綠化養(yǎng)護(hù)及市政設(shè)施養(yǎng)護(hù)服務(wù)方案(技術(shù)方案)
- SLT824-2024 水利工程建設(shè)項(xiàng)目文件收集與歸檔規(guī)范
- 鍋爐本體安裝單位工程驗(yàn)收表格
- 報(bào)價(jià)單(產(chǎn)品報(bào)價(jià)單)
評(píng)論
0/150
提交評(píng)論