銀行家算法報(bào)告_第1頁(yè)
銀行家算法報(bào)告_第2頁(yè)
銀行家算法報(bào)告_第3頁(yè)
銀行家算法報(bào)告_第4頁(yè)
銀行家算法報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.操作系統(tǒng)實(shí)驗(yàn)報(bào)告 銀行家算法班級(jí):計(jì)1009 學(xué)號(hào):20101221138姓名:*二零一二年十二月一、實(shí)驗(yàn)?zāi)康?通過(guò)一個(gè)簡(jiǎn)單的共享資源分配與銀行家算法的實(shí)現(xiàn),加深對(duì)其中安全性算法的了解。二 、實(shí)驗(yàn)內(nèi)容 問(wèn)題描述本題主要內(nèi)容是模擬實(shí)現(xiàn)資源分配。銀行家算法是避免死鎖的一種重要方法,本實(shí)驗(yàn)要求用高級(jí)語(yǔ)言編寫(xiě)和調(diào)試一個(gè)簡(jiǎn)單的銀行家算法程序。加深了解有關(guān)資源申請(qǐng)、避免死鎖等概念,并體會(huì)和了解死鎖和避免死鎖的具體實(shí)施方法。通過(guò)對(duì)這個(gè)算法的設(shè)計(jì),讓學(xué)生能夠?qū)?shū)本知識(shí)有更深的理解,在操作和其它方面有更高的提升?;疽?具體用銀行家算法實(shí)現(xiàn)資源分配。要求如下:(1) 設(shè)計(jì)一個(gè)3個(gè)并發(fā)進(jìn)程共享3類(lèi)不同資源的系

2、統(tǒng),進(jìn)程可動(dòng)態(tài)地申請(qǐng)資源和釋放資源,系統(tǒng)按各進(jìn)程的申請(qǐng)動(dòng)態(tài)地分配資源。(2) 設(shè)計(jì)用銀行家算法 ,實(shí)現(xiàn)資源分配 ,應(yīng)具有顯示或打印各進(jìn)程依次要求申請(qǐng)的資源數(shù)以及依次分配資源的情況。(3) 確定一組各進(jìn)程依次申請(qǐng)資源數(shù)的序列, 輸出運(yùn)行結(jié)果。方案設(shè)計(jì)及開(kāi)發(fā)過(guò)程1銀行家分配算法,顧名思義是來(lái)源于銀行的借貸業(yè)務(wù),一定數(shù)量的本金要應(yīng)多個(gè)客戶的借貸周轉(zhuǎn),為了防止銀行加資金無(wú)法周轉(zhuǎn)而倒閉,對(duì)每一筆貸款,必須考察其是否能限期歸還。在操作系統(tǒng)中研究資源分配策略時(shí)也有類(lèi)似問(wèn)題,系統(tǒng)中有限的資源要供多個(gè)進(jìn)程使用,必須保證得到的資源的進(jìn)程能在有限的時(shí)間內(nèi)歸還資源,以供其他進(jìn)程使用資源。如果資源分配不得到就會(huì)發(fā)生進(jìn)程

3、循環(huán)等待資源,每個(gè)進(jìn)程都無(wú)法繼續(xù)執(zhí)行下去的死鎖現(xiàn)象。把個(gè)進(jìn)程需要和已占有資源的情況記錄在進(jìn)程控制中,假定進(jìn)程控制塊PCB其中“狀態(tài)”有就緒態(tài)、等待態(tài)和完成態(tài)。當(dāng)進(jìn)程在處于等待態(tài)時(shí),表示系統(tǒng)不能滿足該進(jìn)程當(dāng)前的資源申請(qǐng)?!百Y源需求總量”表示進(jìn)程在整個(gè)執(zhí)行過(guò)程中總共要申請(qǐng)的資源量。顯然,每個(gè)進(jìn)程的資源需求總量不能超過(guò)系統(tǒng)擁有的資源總數(shù), 銀行算法進(jìn)行資源分配可以避免死鎖.2.算法描述銀行家算法: 設(shè)進(jìn)程I提出請(qǐng)求RequestN,則銀行家算法按如下規(guī)則進(jìn)行判斷。 (1)如果RequestN=NEEDI,N,則轉(zhuǎn)(2);否則,出錯(cuò)。 (2)如果RequestN=AVAILABLE,則轉(zhuǎn)(3);否則,

4、出錯(cuò)。 (3)系統(tǒng)試探分配資源,修改相關(guān)數(shù)據(jù): AVAILABLE=AVAILABLE-REQUEST ALLOCATION=ALLOCATION+REQUEST NEED=NEED-REQUEST (4)系統(tǒng)執(zhí)行安全性檢查,如安全,則分配成立;否則試探險(xiǎn)性分配作廢,系統(tǒng)恢復(fù)原狀,進(jìn)程等待。 3安全性檢查 (1)設(shè)置兩個(gè)工作向量WORK=AVAILABLE;FINISHM=FALSE (2)從進(jìn)程集合中找到一個(gè)滿足下述條件的進(jìn)程, FINISHi=FALSE NEED=WORK 如找到,執(zhí)行(3);否則,執(zhí)行(4) (3)設(shè)進(jìn)程獲得資源,可順利執(zhí)行,直至完成,從而釋放資源。 WORK=WORK

5、+ALLOCATION FINISH=TRUE GO TO 2 (4)如所有的進(jìn)程FinishM=true,則表示安全;否則系統(tǒng)不安全。 3.數(shù)據(jù)結(jié)構(gòu)假設(shè)有M個(gè)進(jìn)程N(yùn)類(lèi)資源,則有如下數(shù)據(jù)結(jié)構(gòu):#define W 10#define R 20int M ; /總進(jìn)程數(shù)int N ; /資源種類(lèi) int ALL_RESOURCEW; /各種資源的數(shù)目總和int MAXWR; /M個(gè)進(jìn)程對(duì)N類(lèi)資源最大資源需求量int AVAILABLER; /系統(tǒng)可用資源數(shù)int ALLOCATIONWR;/M個(gè)進(jìn)程已經(jīng)得到N類(lèi)資源的資源量int NEEDWR; /M個(gè)進(jìn)程還需要N類(lèi)資源的資源量int Reques

6、tR; /請(qǐng)求資源個(gè)數(shù)三、程序和運(yùn)行情況 #include#includeint M=3; /進(jìn)程的個(gè)數(shù)int N=3; /資源的種類(lèi)int all_resourceR=15,20,25; /3類(lèi)資源的總量int max33=10,10,10,8,8,8,5,5,5; /進(jìn)程的最大需求量int allocation33=5,5,7,6,6,6,1,2,4; /進(jìn)程已分配的資源量int need33=5,5,3,2,2,2,4,3,1; /進(jìn)程的需求量int available3=3,7,8; /還可分配的資源int request3; /進(jìn)程的請(qǐng)求量int k; /將輸入請(qǐng)求的進(jìn)程名賦予kin

7、t temp3;/存放安全序列/函數(shù)聲明void intput();void first();int inrequest();void safe();void safe() /安全性算法int i=0,p=0;int apply;int h;int Finish3=0; /進(jìn)程的狀態(tài)標(biāo)志int flag=0; /記錄進(jìn)程的標(biāo)記位是否可以全部轉(zhuǎn)為trueint work3;for(int q=0;q3;q+) /將可用資源賦給work數(shù)組workq=availableq;while(iM)apply=0;for(int j=0;j3;j+) if(Finishi=0 & needij=workj

8、) /判斷進(jìn)程的狀態(tài),需求量和可用資源的比較apply+;if(apply=3) /若進(jìn)程的三類(lèi)資源都小于可用資源時(shí)for(int m=0;m3;m+) /將分配給該進(jìn)程的資源回收workm=workm+allocationim;Finishi=1; /將進(jìn)程的狀態(tài)置為1tempp=i; /將進(jìn)程號(hào)放入安全序列數(shù)組i=0;p+; /將安全序列數(shù)組的指針后移elsei=i+1;for(i=0;iM;i+)if(Finishi=0) /判斷是否所有進(jìn)程都可分配資源完成flag+;if(flag!=0) /若不是所有進(jìn)程都可完成printf(分配后系統(tǒng)不安全,不予分配!n);for(i=0;iN;i

9、+)availablei=availablei+requesti;allocationki=allocationki-requesti;needki=needki+requesti;printf(是否重新提出要求:1、是 2、否n);scanf(%d,&h);if(h=1)first();elseexit(0);else /若是所有進(jìn)程都可完成printf(系統(tǒng)是安全的!n);printf(安全序列為:);for(i=0;i3)printf(沒(méi)有該進(jìn)程!);return -1;k-;if(request0=needk0) & (request1=needk1) & (request2=need

10、k2)/請(qǐng)求量和需求量的比較if(request0=available0) & (request1=available1) & (request2=available2)/請(qǐng)求量和可用資源的比較for(int i=0;i3;i+)availablei=availablei-requesti;allocationki=allocationki+requesti;needki=needki-requesti;return 1;elseprintf(請(qǐng)求量大于可用資源量n);return -1;elseprintf(請(qǐng)求量大于需求量n);return -1;void first()int a;a=inrequest();if(a=1)safe();void main()printf(三類(lèi)資源的總量為:(%d,%d,%d)n,all_resource0,all_resource1,all

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論