操作系統(tǒng)銀行家算法實(shí)驗(yàn)報(bào)告 1_第1頁(yè)
操作系統(tǒng)銀行家算法實(shí)驗(yàn)報(bào)告 1_第2頁(yè)
操作系統(tǒng)銀行家算法實(shí)驗(yàn)報(bào)告 1_第3頁(yè)
操作系統(tǒng)銀行家算法實(shí)驗(yàn)報(bào)告 1_第4頁(yè)
操作系統(tǒng)銀行家算法實(shí)驗(yàn)報(bào)告 1_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論