版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、銀行家算法實(shí)驗(yàn)報(bào)告【實(shí)驗(yàn)?zāi)康摹?1) 根據(jù)設(shè)計(jì)題目的要求,充分地分析和理解題目,敘述系統(tǒng)的要求,明 確程序要求實(shí)現(xiàn)的功能以及限制條件。(2) 明白自己需要用代碼實(shí)現(xiàn)的功能,清楚編寫每部分代碼的目的,做到 有的放矢,有條理不遺漏的用代碼實(shí)現(xiàn)銀行家算法?!緦?shí)驗(yàn)要求】(1) 了解和理解死鎖;(2) 理解利用銀行家算法避免死鎖的原理;(3) 會(huì)使用某種編程語言?!緦?shí)驗(yàn)原理】一、安全狀態(tài)指系統(tǒng)能按照某種順序如vP1,P2,Pn稱為VP1,P2,Pn:序列為安全序列),為每個(gè)進(jìn)程分配所需的資源,直至最大需求,使得每個(gè)進(jìn)程都能順利完 成。二、銀行家算法假設(shè)在進(jìn)程并發(fā)執(zhí)行時(shí)進(jìn)程i提出請(qǐng)求j類資源k個(gè)后,表示為
2、 Requestij=k。系統(tǒng)按下述步驟進(jìn)行安全檢查:(1) 如果Request Need則繼續(xù)以下檢查,否則顯示需求申請(qǐng)超出最大需求值 的錯(cuò)誤。(2) 如果Request Available則繼續(xù)以下檢查,否則顯示系統(tǒng)無足夠資源,Pi阻 塞等待。(3) 系統(tǒng)試探著把資源分配給進(jìn)程 Pi,并修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:Available j : =Available j -Request ;Allocation i,j : =Allocation i,j +Request j;Need i,j: =Need i,j: -Requesti j:;(4) 系統(tǒng)執(zhí)行安全性算法,檢查此次資源分配后,系統(tǒng)
3、是否處于安全狀態(tài)。若安全,才正式將資源分配給進(jìn)程 Pi,以完成本次分配;否則,將本次的試探分配作廢,恢復(fù)原來的資源分配狀態(tài),讓進(jìn)程Pi等待。三、安全性算法(1) 設(shè)置兩個(gè)向量: 工作向量 Work:它表示系統(tǒng)可提供給進(jìn)程繼續(xù)運(yùn)行所需的各類資源數(shù)目,它含有m個(gè)元素,在執(zhí)行安全算法開始時(shí),Work : =Available; Finish:它表示系統(tǒng)是否有足夠的資源分配給進(jìn)程,使之運(yùn)行完成。開始時(shí)先做Finish i : =false;當(dāng)有足夠資源分配給進(jìn)程時(shí), 再令Finishi : =true。(2) 從進(jìn)程集合中找到一個(gè)能滿足下述條件的進(jìn)程: Finish i: =false; Need:i
4、,j: Worj:;若找到,執(zhí)行步驟,否則,執(zhí)行步驟(4)。(3) 當(dāng)進(jìn)程Pi獲得資源后,可順利執(zhí)行,直至完成,并釋放出分配給它的資源,故應(yīng)執(zhí)行:Work j: : =Work i: +Allocation i,j;Finish i : =true; go to ste p 2;(4) 如果所有進(jìn)程的Finish i =true都滿足,則表示系統(tǒng)處于安全狀態(tài);否 則,系統(tǒng)處于不安全狀態(tài)?!緦?shí)驗(yàn)步驟】 參考實(shí)驗(yàn)步驟如下:(1)參考圖1-1所示流程圖編寫安全性算法。圖1-1安全性算法流程圖(2)銀行家算法流程圖圖1-2銀行家算法流程圖(3)編寫統(tǒng)一的輸出格式。每次提出申請(qǐng)之后輸出申請(qǐng)成功與否的結(jié)果
5、。如果成功還需要輸出變化前 后的各種數(shù)據(jù),并且輸出安全序列。(4) 參考圖1-2所示流程圖編寫銀行家算法。(5) 編寫主函數(shù)來循環(huán)調(diào)用銀行家算法?!緟⒖即a】部分參考代碼如下:#i nclude #i nclude #defi ne M 3資源的種類數(shù)#defi ne N 5進(jìn)程的個(gè)數(shù)iNeedNM,i ntiAvailableM,charvoid out put(i nt iMaxNM,i ntiAllocatio n NM,i ntbool safety(i ntiAllocatio n NM,i ntcNameN);bool ba nker(i ntiAllocatio n NM,i n
6、tcNameN);void mai n()int i,j;當(dāng)前可用每類資源的資源數(shù)int iAvailableM=3,3,2;系統(tǒng)中N個(gè)進(jìn)程中的每一個(gè)進(jìn)程對(duì)iAvailableM,char cNameN);/ 統(tǒng)一的輸出格式iNeedNM,i ntiAvailableM,charM類資源的最大需求iNeedNM,i ntint iMaxNM=7,5,3,3,2,2,9,0,2,222,4,3,3;/iNeedNM每一個(gè)進(jìn)程尚需的各類資源數(shù)/iAllocationNM為系統(tǒng)中每一類資源當(dāng)前已分配給每一進(jìn)程的資源數(shù) int iNeedNM,iAllocatio nNM=0,1,1,2,0,0,3,
7、0,2,2,1,1,0,0,2;/進(jìn)程名char cNameN=a,b,c,d,e;bool bExitFlag=true;/ 退出標(biāo)記char ch;接收選擇是否繼續(xù)提出申請(qǐng)時(shí)傳進(jìn)來的值bool bSafe;/存放安全與否的標(biāo)志計(jì)算iNeedNM的值 for(i=0;iN;i+)for(j=0;j ch;switch(ch)case y: /coutvv調(diào)用銀行家算法;bSafe=ba nker(iAllocati on ,iNeed,iAvailable,cName);if (bSafe) /安全,則輸出變化后的數(shù)據(jù)out pu t(iMax,iAllocati on ,iNeed,iAv
8、ailable,cName); break;case n:coutvv退出。n;bExitFlag=false;break;default:coutvv輸入有誤,請(qǐng)重新輸入:n;輸出voidout put(i ntiMaxNM,i ntiAllocatio n NM,i ntiNeedNM,i nt10iAvailableM,char cNameN)int i,j;coutvvnt Max tAllocationtNeed t Availablevvendl;coutvvtA B CtA B CtA B Ct A BCvve ndl;for(i=0;ivN;i+)coutvvcNameivvt
9、; for(j=O;jvM;j+) coutvviMaxijvv coutvvt;for(j=O;jvM;j+) coutvviAllocatio n ijvv coutvvt;for(j=O;jvM;j+) coutvviNeedijvv coutvvt; coutvv;/Available只需要輸出一次 if (i=0)for(j=O;jvM;j+) coutvviAvailablejvvH.HH.H.coutvve ndl;/安全性算法,進(jìn)行安全性檢查;安全返回 true,并且輸出安全序列,不安全返回false,并輸出不安全的提示;bool safety(i nt iAllocatio
10、n NM,i nt iNeedNM,i nt iAvailableM,char cNameN) int i,j,flag,x=0;char nu m5;int WorkM;bool Fi ni shN;for(j=0;j3;j+)Workj=iAvailablej;for(i=0;i5;i+)Fin ishi=false;while(true)跳出flag=0;次循環(huán)中是否有使有滿足條件不為0表示存在for(i=0;i=iNeedi0&Work1=iNeedi1&Work 2=iNeedi2)for(j=0;j3;j+)Workj+=iAllocati on ijWorkj+iAllocati
11、o nijFini shi=true;/Workj+=/將 Finish 置trueflag+;nu mx+=cNamei;標(biāo)志加1/將該序列名賦給數(shù)組numif(flag=0)/標(biāo)志為 coutvv無安全序列;0,證明已無滿足條件iAllocation,退出循環(huán),返回false return false;if(Fi ni shO=true&Fi ni sh1=true&Fini sh2=true&Fi nish3=true&II若所有Finish置為true,輸出安全數(shù)Fini sh4=true)True列,返回H.coutn; coutvv安全序列為: for(x=0;xv5;x+)cou
12、t vnu mxvv; cout x;if(x=a)i=0;if(x=b)i=1;if(x=c)i=2;if(x=d)i=3;if(x=e)i=4;11.coutvv請(qǐng)輸入各資源數(shù)量:for(t=0;tv3;t+)cin Requestt;for(t=0;tv3;t+) check_1t=Requestt+iAllocatio nit; for(t=0;tv3;t+)if(iMaxit-check_1t)v0)coutvvn資源申請(qǐng)超過最大需求量! !n;return false;for(t=0;tv3;t+)if(iAvailablet-Requestt)v0)coutn不能滿足進(jìn)程! !n;return false;/檢查數(shù)值for(t=0;tuby崔行無倍一匕rlaxB52023口 VieHNeedBC北2QflvAllAbla AB
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 水粉煙花課件教學(xué)課件
- 出游應(yīng)急預(yù)案
- 旅游業(yè)安全規(guī)范解析
- 2024年大型并網(wǎng)風(fēng)力發(fā)電機(jī)組發(fā)電機(jī)項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 物業(yè)小區(qū)危險(xiǎn)源識(shí)別
- 吉林省2024七年級(jí)數(shù)學(xué)上冊(cè)第1章有理數(shù)1.7有理數(shù)的減法課件新版華東師大版
- 彩色的雨教案反思
- 建筑業(yè)薪酬政策
- 林業(yè)安防施工合同
- 影視制作薪酬管理
- 2022人民醫(yī)院醫(yī)共體章程
- 技術(shù)創(chuàng)新課件教學(xué)課件
- 汽車退款合同
- 第四章 光現(xiàn)象章節(jié)練習(xí)2024-2025學(xué)年人教版八年級(jí)物理上冊(cè)
- 《生活處處有設(shè)計(jì)》課件2024-2025學(xué)年湘美版初中美術(shù)七年級(jí)上冊(cè)
- 第十五屆全國(guó)交通運(yùn)輸行業(yè)職業(yè)技能大賽(公路收費(fèi)及監(jiān)控員賽項(xiàng))考試題庫(kù)-上(單選題)
- 《中國(guó)腫瘤防治核心科普知識(shí)(2024)》解讀
- 2024年新人教版七年級(jí)上冊(cè)歷史教學(xué)課件 第10課 秦末農(nóng)民大起義
- 2024年北師大版小升初數(shù)學(xué)試卷及答案
- 拒絕校園欺凌教育主題課件
- 銀行業(yè)法律法規(guī)考試試卷(共四套)
評(píng)論
0/150
提交評(píng)論