版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《水分析化學(xué)》重點(diǎn)筆記
- 2024-2025學(xué)年六年級(jí)上冊(cè)數(shù)學(xué)北師大版期中模擬檢測(cè)卷(1-3單元)(含答案)
- 氣體儲(chǔ)存技術(shù)新進(jìn)展
- 高考數(shù)學(xué)復(fù)習(xí):三角函數(shù)的概念與三角公式應(yīng)用
- 合伙企業(yè)的賬務(wù)處理-做賬實(shí)操
- 2024年煤層氣(煤田)項(xiàng)目資金需求報(bào)告代可行性研究報(bào)告
- 【北京】期中模擬卷【18-19章】
- 公司生產(chǎn)設(shè)備購(gòu)買(mǎi)合同(3篇)
- 左傳讀書(shū)心得體會(huì)三篇
- 電器代理銷(xiāo)售合同(一)(3篇)
- 2024年國(guó)家公務(wù)員考試《行測(cè)》真題卷(行政執(zhí)法)答案和解析
- 生豬屠宰獸醫(yī)衛(wèi)生檢驗(yàn)人員理論考試題庫(kù)及答案
- 毽球校本課程開(kāi)發(fā)綱要
- 飛機(jī)試飛測(cè)試的現(xiàn)狀與對(duì)策
- 圖案—國(guó)外現(xiàn)代圖案ppt課件
- 高中數(shù)學(xué) 第二章 空間向量與立體幾何 2.3.3 空間向量運(yùn)算的坐標(biāo)表示課件2 北師大版選修2-1
- 中國(guó)南陽(yáng)介紹PPTppt
- (高三化學(xué)試卷)--北京四中高三上學(xué)期期中測(cè)驗(yàn)化學(xué)試題
- 溫州市第十四高級(jí)中學(xué)化學(xué)學(xué)科課程建設(shè)綱要
- 輸煤運(yùn)行專(zhuān)業(yè)危險(xiǎn)點(diǎn)及防范措施
- 一年級(jí)下冊(cè)語(yǔ)文課件-第13課《畫(huà)家鄉(xiāng)》|北京版(2016)1 (共14張PPT)
評(píng)論
0/150
提交評(píng)論