版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)報(bào)告一、實(shí)驗(yàn)名稱(chēng): 銀行家算法二、實(shí)驗(yàn)?zāi)康模?銀行家算法是避免死鎖的一種重要方法,通過(guò)編寫(xiě) 一個(gè)簡(jiǎn)單的銀行家算法程序,加深了解有關(guān)資源申請(qǐng)、避免死 鎖等概念,并體會(huì)和了解死鎖和避免死鎖的具體實(shí)施方法。三、問(wèn)題分析與設(shè)計(jì):1、算法思路 :先對(duì)用戶(hù)提出的請(qǐng)求進(jìn)行合法性檢查,即檢查 請(qǐng)求是否大于需要的,是否大于可利用的。若請(qǐng)求合法,則進(jìn) 行預(yù)分配,對(duì)分配后的狀態(tài)調(diào)用安全性算法進(jìn)行檢查。若安 全,則分配;若不安全,則拒絕申請(qǐng),恢復(fù)到原來(lái)的狀態(tài),拒 絕申請(qǐng)。2、銀行家算法步驟:(1)如果Requestk or二Need則轉(zhuǎn)向步驟(2);否則,認(rèn)為出錯(cuò),因?yàn)樗枰馁Y源數(shù)已超過(guò)它所宣布
2、的最大值。(2) 如果Request or二Available,則轉(zhuǎn)向步驟(3);否則,表示系統(tǒng)中尚無(wú)足夠的資源,進(jìn)程必須等待。(3) 系統(tǒng)試探把要求的資源分配給進(jìn)程Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:Available=Available-Requesti;Allocation=Allocation+Request;Need=Need-Request;(4)系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)是否處于 安全狀態(tài)。3、安全性算法步驟:(1)設(shè)置兩個(gè)向量工作向量 Work 。它表示系統(tǒng)可提供進(jìn)程繼續(xù)運(yùn)行所需要的各類(lèi)資 源數(shù)目,執(zhí)行安全算法開(kāi)始時(shí), Work=Allocation;布爾向量F
3、inish。它表示系統(tǒng)是否有足夠的資源分配給進(jìn)程,使 之運(yùn)行完成,開(kāi)始時(shí)先做 Finishi=false ,當(dāng)有足夠資源分配給進(jìn)程 時(shí),令 Finishi=true 。(2)從進(jìn)程集合中找到一個(gè)能滿(mǎn)足下述條件的進(jìn)程: Finishi=false Needor=Work如找到,執(zhí)行步驟( 3);否則,執(zhí)行步驟( 4)。(3)當(dāng)進(jìn)程 P 獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應(yīng)執(zhí)行:Work=Work+Allocation;Finishi=true;轉(zhuǎn)向步驟( 2)。( 4)如果所有進(jìn)程的 Finishi=true, 則表示系統(tǒng)處于安全狀態(tài);否 則,系統(tǒng)處于不安全狀態(tài)。4、流
4、程圖:系統(tǒng)主要過(guò)程流程圖銀行家算法流程圖安全性算法流程圖四、實(shí)驗(yàn)代碼:#defi ne M 5#defi ne N 3本實(shí)驗(yàn)中使用到的庫(kù)函數(shù)開(kāi)始定義銀行家算法中需要用到的數(shù)據(jù)#i nclude II#i nclude #in elude int max 51;/int allocation51;int need 51;int available1;int request51;char *fini sh5;int safe5;int n,i,m;int k=0;int j=0;int work1;int works51;void line() / 美化程序,使程序運(yùn)行時(shí)更加明朗美觀(guān)n);prin
5、tf(void start()/表示銀行家算法開(kāi)始line();printf(銀行家算法開(kāi)始 n);printf(死鎖避免方法n);line();void end()/表示銀行家算法結(jié)束line();printf(銀行家算法結(jié)束,謝謝使用 n);line();void input()/輸入銀行家算法起始各項(xiàng)數(shù)據(jù)for (n=0;n5;n+)printf(”請(qǐng)輸入進(jìn)程P%d的相關(guān)信息:n,n);printf(Max:);for (m=0;m1;m+)scanf(%d,&maxnm);printf(Allocation:);for (m=0;m1;m+)scanf(%d,&allocationnm
6、);for (m=0;m1;m+)neednm=maxnm-allocationnm;printf( 請(qǐng)輸入系統(tǒng)可利用資源數(shù) Available:);for (m=0;m1;m+)scanf(%d,&availablem);void output() / 輸出系統(tǒng)現(xiàn)有資源情況line();printf( 資源情況 Max Allocation Need Availablen);printf( 進(jìn)程 A A A A n);line();for(n=0;n5;n+)printf(P%d%3d%3d%3d,n,maxn0,allocationn0,needn0);if (n=0)printf(%3d
7、%3dn,available0);elseprintf(n);line();void change() / 當(dāng) Requesti,j=Availablej 時(shí),系統(tǒng)把資源分配給 進(jìn)程 Pi , Availablej 和 Needi,j 發(fā)生改變for (m=0;m1;m+)availablem-=requestim;allocationim+=requestim;needim-=requestim;void outputsafe() /輸出安全序列的資源分配表printf(該安全序列的資源分配圖如下:n);line();printf(資源情況 WorkNeedAllocation Work+A
8、llocationFinishn);printf(進(jìn)程 A AAA n);line();for(n=0;n5;n+)printf(P%d%9d%3d%3d%5d%12sn,safen,workssafen0,needsaf en0,allocationsafen0,workssafen0+allocationsafen0 ,finishn);line();int check() / 安全性算法printf(”開(kāi)始執(zhí)行安全性算法n ”);for (m=0;m1;m+) / 數(shù)組 work 和 finish 初始化workm=availablem;for (n=0;n5;n+)finishn=fa
9、lse;safen=0;k=0;for (m=0;m5;m+)for (n=0;n5;n+)if(strcmp(finishn,false)=0 &needn0=work0 ) / 查找可以分配資源但尚未分配到資源的進(jìn)程safek=n; / 以數(shù)組 safek 記下各個(gè)進(jìn)程得到 分配的資源的順序workssafek0=work0;work0+=allocationn0; / 進(jìn)程執(zhí)行后釋 放出分配給它的資源finishn=ture; /finishn 變?yōu)?1 以示該進(jìn) 程完成本次分k+;for (m=0;mP%d-P%d-P%d- P%d 系統(tǒng)是安全的 n,safe0,safe1,safe2
10、,safe3,safe4);j=1;outputsafe(); /輸出安全序列的資源分配表return 1;void main() / 主程序開(kāi)始start();for (;j=0;) / 確認(rèn)輸入數(shù)據(jù)的正確性,若輸入錯(cuò)誤,重新輸入input();printf( 以下為進(jìn)程資源情況,請(qǐng)確認(rèn)其是否正確: n);output();printf( 數(shù)據(jù)是否無(wú)誤: n 正確:輸入 1n 錯(cuò)誤:輸入 0n 請(qǐng)輸 入: );scanf(%d,&j);printf( 數(shù)據(jù)確認(rèn)無(wú)誤,算法繼續(xù)。 n);if (check()=0) / 若 check 函數(shù)返回值為 0,表示輸入的初始數(shù)據(jù) 找不到安全序列,無(wú)法進(jìn)
11、行下一步,程序結(jié)束end();exit(0);for(;j=1;) / 當(dāng)有多個(gè)進(jìn)程請(qǐng)求資源時(shí),循環(huán)開(kāi)始printf( 請(qǐng)輸入請(qǐng)求資源的進(jìn)程 i(0 、1、2、3、 4):); / 輸入 發(fā)出請(qǐng)求向量的進(jìn)程及請(qǐng)求向量scanf(%d,&i);printf(請(qǐng)輸入進(jìn)程P%d的請(qǐng)求向量Request%d: ,i,i);for(n=0;nneedi0;) /若請(qǐng)求向量大于需求資源,則認(rèn)為是輸入錯(cuò)誤,要求重新輸入printf(”數(shù)據(jù)輸入有誤,請(qǐng)重試!n請(qǐng)輸入進(jìn)程P%d的請(qǐng)求向量 Request%d: ,i,i);for(n=0;n1;n+)scanf(%d,&requestin);if(request
12、i0=available0) / 判斷系統(tǒng)是否有足夠資源 提供分配printf(”系統(tǒng)正在為進(jìn)程P%d分配資源n”,i);change(); / 分配資源j=0;elseprintf(”系統(tǒng)沒(méi)有足夠的資源,進(jìn)程P%d需要等待。n,i);if (j=0) /j=0表示系統(tǒng)有足夠資源分配的情況printf( 當(dāng)前系統(tǒng)資源情況如下: n); / 輸出分配資源 后的系統(tǒng)資源分配情況output();if(check()=0) / 若找不到安全系列,則之前的資源分配無(wú)效printf( 本次資源分配作廢,恢復(fù)原來(lái)的資源分配 狀態(tài)。 n);for (m=0;mP3-P4-P0-P2?系統(tǒng)是安全的L J, I
13、 rl L * j I w 二 I全序列的資源分配圖婦下;資源情況 Work 進(jìn)程ANeedAllocation Work+Allocation FinishAAA13402351111047622003577110ture ture ture ture tore請(qǐng)輸入請(qǐng)求浚源的進(jìn)程i (CK K 2、MO 2|請(qǐng)輸入進(jìn)程P2的請(qǐng)求向量Request2: 1 系統(tǒng)正在為進(jìn)程巴分配資源 當(dāng)前系統(tǒng)資源情況如下:Max Allocatiun NeedAvailableAAAA0 12 3 4 -p p p P7 15 0 421703744開(kāi)始執(zhí)廳女全性鼻法找到安全序列Pl-P3-P4-P2-P0,系統(tǒng)是安全的 該安全序列的資源分配圖如下:資源情況 VorkNeed Allocation Vork+Allocat
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高檔住宅區(qū)菜場(chǎng)租賃協(xié)議
- 環(huán)保設(shè)施運(yùn)維勞務(wù)分包合同
- 建筑工程設(shè)計(jì)顧問(wèn)聘用協(xié)議
- 藥店租賃健康守護(hù)租賃合同
- 二零二五年度特種安保人員派遣及應(yīng)急響應(yīng)協(xié)議3篇
- 二零二五年度智能家電oem生產(chǎn)合同范本共2篇
- 二零二五年度特色餐飲廚房設(shè)備研發(fā)定制合同3篇
- 二零二五年度海洋油氣田設(shè)施安裝及維護(hù)服務(wù)合同2篇
- 2025年度xx蘇州租賃房屋消防檢查合同3篇
- 2024版知識(shí)產(chǎn)權(quán)許可合同
- 傳媒行業(yè)突發(fā)事件應(yīng)急預(yù)案
- 2024年《工會(huì)法》知識(shí)競(jìng)賽題庫(kù)及答案
- 《中國(guó)血脂管理指南》考試復(fù)習(xí)題庫(kù)(含答案)
- 人教版道德與法治八年級(jí)上冊(cè)2.1網(wǎng)絡(luò)改變世界課件
- 外研版小學(xué)英語(yǔ)(三起點(diǎn))六年級(jí)上冊(cè)期末測(cè)試題及答案(共3套)
- 中醫(yī)診療規(guī)范
- 工業(yè)互聯(lián)網(wǎng)平臺(tái) 安全生產(chǎn)數(shù)字化管理 第2部分:石化化工行業(yè) 編制說(shuō)明
- 第14課《葉圣陶先生二三事》導(dǎo)學(xué)案 統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
- 成人手術(shù)后疼痛評(píng)估與護(hù)理-中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)2023 2
- DB15-T 3585-2024 高標(biāo)準(zhǔn)農(nóng)田施工質(zhì)量評(píng)定規(guī)程
- 北師大版八年級(jí)上冊(cè)數(shù)學(xué)期中綜合測(cè)試卷(含答案解析)
評(píng)論
0/150
提交評(píng)論