


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)名稱:銀行家算法模擬實(shí)現(xiàn)系:學(xué)生姓名:班級(jí):學(xué)號(hào):成績(jī):指導(dǎo)教師:開課時(shí)間:學(xué)年學(xué)期題目要求:一. 設(shè)計(jì)題目銀行家算法模擬實(shí)現(xiàn)主要內(nèi)容設(shè)計(jì)目的1、了解多道程序系統(tǒng)中,多個(gè)進(jìn)程并發(fā)執(zhí)行的資源分配。2、掌握思索的產(chǎn)生原因、產(chǎn)生死鎖的必要條件和處理死鎖的基本方法。3、掌握預(yù)防死鎖的方法,系統(tǒng)安全狀態(tài)的基本概念。4、掌握銀行家算法,了解資源在進(jìn)程并發(fā)執(zhí)行中的資源分配策略。5、理解死鎖避免在當(dāng)前計(jì)算機(jī)系統(tǒng)不常使用的原因。二. 具體要求設(shè)計(jì)一個(gè)n個(gè)并發(fā)進(jìn)程共享m個(gè)系統(tǒng)資源的系統(tǒng),進(jìn)程可動(dòng)態(tài)申請(qǐng)資源和釋放資源,系統(tǒng)按各進(jìn)程的申請(qǐng)動(dòng)態(tài)的分配資源。要求采用銀行家算法實(shí)現(xiàn)。三. 進(jìn)度安排四.
2、成績(jī)?cè)u(píng)定考核方法:根據(jù)學(xué)生平時(shí)表現(xiàn)、測(cè)試檢查、課程設(shè)計(jì)報(bào)告、運(yùn)行演示和學(xué)生回答問(wèn)題相結(jié)合的形式作為考核依據(jù),考察學(xué)生的動(dòng)手能力,獨(dú)立分析解決問(wèn)題的能力和創(chuàng)新精神,并根據(jù)學(xué)生的學(xué)習(xí)態(tài)度綜合考評(píng)。平時(shí)表現(xiàn)(占30%,課程設(shè)計(jì)報(bào)告(占40%,課程答辯(占30%。成績(jī)?cè)u(píng)定:成績(jī)分“優(yōu)秀”、“良好”、“中等”、“及格”、“不及格”五個(gè)級(jí)別。“優(yōu)秀”為100分到90分,“良好”為89分到80分,“中等”為79分到70分,“及格”為69分到60分,“不及格”為60分以下。目錄1. 需求分析序號(hào)內(nèi)容時(shí)間(天)1熟悉課題、分析課題0.52對(duì)系統(tǒng)進(jìn)行模塊分解,問(wèn)題分析和確定解決方案13編程調(diào)試34測(cè)試和差錯(cuò)15書
3、寫課程設(shè)計(jì)報(bào)告16考核1合計(jì)7.52.概要設(shè)計(jì)32. 概要設(shè)計(jì)33詳細(xì)設(shè)計(jì)64. 調(diào)試分析125. 總結(jié)161需求分析1、始化這組進(jìn)程的最大資源請(qǐng)求和一次申請(qǐng)的資源序列。把各進(jìn)程已占用和需求資源情況記錄在進(jìn)程控制塊中。假定進(jìn)程控制塊的內(nèi)容包括:進(jìn)程名,狀態(tài),當(dāng)前申請(qǐng)量,資源需求總量,已占資源量,能執(zhí)行完標(biāo)志。其中,進(jìn)程的狀態(tài)有:就緒,等待和完成。當(dāng)系統(tǒng)不能滿足進(jìn)程的資源請(qǐng)求時(shí),進(jìn)程出于等待狀態(tài)。資源需求總量表示進(jìn)程運(yùn)行過(guò)程中對(duì)資源的總的需求量。已占資源量表示進(jìn)程目前已經(jīng)得到但還為歸還的資源量。因此,進(jìn)程在以后還需要的剩余資源量等于資源需要總量減去已占資源量。陷入每個(gè)進(jìn)程的資源需求總量不應(yīng)超過(guò)系
4、統(tǒng)擁有的資源總量。2、銀行家算法分配資源的原則是:當(dāng)某個(gè)進(jìn)程提出資源請(qǐng)求時(shí),假定先分配資源給它,然后查找各進(jìn)程的剩余請(qǐng)求,檢查系統(tǒng)的剩余資源量是否由于進(jìn)程的分配而導(dǎo)致系統(tǒng)死鎖。若能,則讓進(jìn)程等待,否則,讓進(jìn)程的假分配變?yōu)檎娣峙洹)查找各進(jìn)程的剩余請(qǐng)求,檢查系統(tǒng)的剩余資源量是否能滿足其中一進(jìn)程,如果能,則轉(zhuǎn)B)。B)將資源分配給所選的進(jìn)程,這樣,該進(jìn)程已獲得資源最大請(qǐng)求,最終能運(yùn)行完成。標(biāo)記這個(gè)進(jìn)程為終止進(jìn)程,并將其占有的全部資源歸還給系統(tǒng)。重復(fù)第A步和B)步,直到所有進(jìn)程都標(biāo)記為終止進(jìn)程,或知道一個(gè)死鎖發(fā)生。若所有進(jìn)程都標(biāo)記為終止進(jìn)程,則系統(tǒng)的初始狀態(tài)是安全的,否則為不安全的。若安全,則正式
5、將資源分配給它,否則,假定的分配作廢,讓其等待。2概要設(shè)計(jì)2.1設(shè)計(jì)思想當(dāng)某個(gè)進(jìn)程提出資源請(qǐng)求時(shí),假定先分配資源給它,然后查找各進(jìn)程的剩余請(qǐng)求,檢查系統(tǒng)的剩余資源量是否由于進(jìn)程的分配而導(dǎo)致系統(tǒng)死鎖。若能,則讓進(jìn)程等待,否則,讓進(jìn)程的假分配變?yōu)檎娣峙洹?.2數(shù)據(jù)結(jié)構(gòu)假設(shè)有m個(gè)進(jìn)程,則有如下數(shù)據(jù)結(jié)構(gòu):#definew50/宏定義#definer50/宏定義intm;/總進(jìn)程數(shù)intallw;各種資源的數(shù)目總和intmaxwr;m個(gè)進(jìn)程最大資源需求量intavailabler;/系統(tǒng)可用資源數(shù)intallocationwr;m個(gè)進(jìn)程已經(jīng)得到資源的資源量intneedwr;m個(gè)進(jìn)程還需要資源的資源量i
6、ntrequestr;/請(qǐng)求資源個(gè)數(shù)2.3 程序流程圖開始i=1Yi<=mNNYi+YNY結(jié)束錯(cuò)誤max<=資源總數(shù)Need矩陣為初始化need輸入該進(jìn)程的資源請(qǐng)求量Request調(diào)用銀行家算法,及安全性算法,完成分配,或并給出提示輸入進(jìn)程i的最大需求向量max輸入進(jìn)程數(shù)m,各資源總數(shù),初始化Available向量任選一個(gè)進(jìn)程作為當(dāng)前進(jìn)程(0到m-1)該進(jìn)程的Need向量為0該進(jìn)程已運(yùn)行結(jié)束3. 詳細(xì)設(shè)計(jì)3.1算法思想銀行家算法的基本思想是分配資源之前,判斷系統(tǒng)是否是安全的;若是,才分配。否則拒絕分配。3.2銀行家算法設(shè)Requestn,是進(jìn)程的請(qǐng)求向量,如果Requestn=m,
7、則表示該進(jìn)程需要m個(gè)資源。當(dāng)該進(jìn)程發(fā)出資源請(qǐng)求后,系統(tǒng)按下述步驟進(jìn)行檢查:(1) 如果Requestn=Needi,n,便轉(zhuǎn)向步驟(2);否則認(rèn)為出錯(cuò),因?yàn)樗枰馁Y源數(shù)已經(jīng)超過(guò)它所宣布的最大值。如果Requestn'Available,則進(jìn)程i進(jìn)入等待資源狀態(tài),返回。(3)假設(shè)進(jìn)程i的申請(qǐng)已獲批準(zhǔn),于是修改下面數(shù)據(jù)結(jié)構(gòu)中的數(shù)值:Available=Available-RequestAllocation=Allocation+RequestNeed=Need-Request(4)系統(tǒng)執(zhí)行安全性檢查,如安全,則分配成立;否則恢復(fù)原來(lái)的資源分配狀態(tài),系統(tǒng)恢復(fù)原狀,進(jìn)程等待。程序voidb
8、ank()/銀行家算法inti=0,j=0;charflag='Y'while(flag='Y'|flag='y')i=-1;while(i<O|i>=m)cout<<"請(qǐng)輸入需申請(qǐng)資源的進(jìn)程號(hào)(從0到"<<m-1<<"):"cin>>i;if(i<0|i>=m)cout<<"該進(jìn)程號(hào)不存在,請(qǐng)重新輸入!"<<endl;cout<<"請(qǐng)輸入進(jìn)程"<<
9、i<<"申請(qǐng)的資源數(shù):"for(j=0;j<1;j+)cout<<""cin>>requestj;if(requestj>needij)/若請(qǐng)求的資源數(shù)大于進(jìn)程還需要i類資源的資源量jcout<<"進(jìn)程"<<i<<"申請(qǐng)的資源數(shù)大于進(jìn)程"<<i<<"還需要資源的資源量!"cout<<"申請(qǐng)不合理,請(qǐng)重新選擇!"<<endl<<endl
10、;flag='1:break;elseif(requestj>available|j)/若請(qǐng)求的資源數(shù)大于可用資源數(shù)cout<<"進(jìn)程"<<i<<"申請(qǐng)的資源數(shù)大于系統(tǒng)可用資源的資源量!";cout<<"申請(qǐng)不合理!請(qǐng)重新選擇!"<<endl<<endl;flag='1'break;if(flag='Y'|flag='y')change(i);/調(diào)用change(i)函數(shù),改變資源數(shù)if(chkerr(
11、i)/若系統(tǒng)安全rstore(i);/調(diào)用rstore(i)函數(shù),恢復(fù)資源數(shù)show();/輸出資源分配情況else/若系統(tǒng)不安全show();/輸出資源分配情況else若flag=N|flag=nshow();cout<<endl;cout<<"是否繼續(xù)(Y/N):"cin>>flag;3.3安全性檢查算法設(shè)置兩個(gè)工作向量Work=Available;FinishM=False(1) 從進(jìn)程集合中找到一個(gè)滿足下述條件的進(jìn)程,F(xiàn)inishi=FalseNeed<=Work如找到,執(zhí)行(3);否則,執(zhí)行(4)設(shè)進(jìn)程獲得資源,可順利執(zhí)行
12、,直至完成,從而釋放資源。Work=Work+AllocationFinish=TrueGOTO2如所有的進(jìn)程FinishM=true,則表示安全;否則系統(tǒng)不安全。程序intchkerr(ints)/檢查安全性intwork,FInlSHw;inti,j,k=O;for(i=0;i<m;i+)FInlSHi=false;for(j=0;j<1;j+)work=availablej;i=s;doif(FInlSHi=false&&needij<=work)work=work+allocationij;FinISHi=true;i=0;elsei+;while(i
13、<m);for(i=0;i<m;i+)if(FInlSHi=false)cout<<endl;cout<<"系統(tǒng)不安全!!!本次資源申請(qǐng)不成功!!"<<endl;cout<<endl;return1;cout<<endl;cout<<"系統(tǒng)安全,分配成功。"<<endl;cout<<endl;return0;1.4 修改數(shù)據(jù)結(jié)構(gòu)中的數(shù)值改變可用資源和已經(jīng)拿到資源和還需要的資源的值voidchange(intk)intj;for(j=0;j<1
14、;j+)availablej=availablej-requestj;allocationkj=allocationkj+requestj;needkj=needkj-requestj;1.5 如果分配失敗,則恢復(fù)原來(lái)的資源分配狀態(tài)恢復(fù)可用資源和已經(jīng)拿到資源和還需要的資源的值voidrstore(intk)intj;availablej=availablej+requestj;allocationkj=allocationkj-requestj;needkj=needkj+requestj;輸出顯示實(shí)現(xiàn)人機(jī)交互的各類資源輸出顯示情況。voidshow()/輸出資源分配情況inti,j;cout
15、<<"資源總量:"<<""for(j=0;j<1;j+)cout<<""<<allj;cout<<endl<<endl;cout<<"系統(tǒng)目前資源可用數(shù):"<<""for(j=0;j<1;j+)cout<<""<<availablej;cout<<endl<<endl;cout<<"進(jìn)程名各進(jìn)程還需要
16、的資源量"<<endl;for(i=0;i<m;i+)for(i=0;i<m;i+)cout<<"進(jìn)程"<<i<<":"for(j=0;j<1;j+)cout<<needij<<""cout<<endl;cout<<endl;cout<<"進(jìn)程名各進(jìn)程已經(jīng)得到的資源量"<<endl;for(i=0;i<m;i+)cout<<"進(jìn)程"
17、<<i<<":"for(j=0;j<1;j+)cout<<allocationij<<"cout<<endl;cout<<endl;voidchange(intk)/改變可用資源和已經(jīng)拿到資源和還需要的資源的值intj;for(j=0;j<1;j+)availablej=availablej-requestj;allocationkj=allocationkj+requestj;needkj=needkj-requestj;1.6 主函數(shù)voidmain()/主函數(shù)inti=0,j
18、=0,p;cout<<"銀行家算法模擬"<<endl;cout<<"請(qǐng)輸入總進(jìn)程數(shù):"cin>>m;cout<<"請(qǐng)輸入總資源數(shù):"for(i=0;i<1;i+)cin>>alli;cout<<"依次輸入各進(jìn)程所需要的最大資源數(shù)量:"<<endl;for(i=0;i<m;i+)for(j=0;j<1;j+)docin>>maxij;if(maxij>allj)cout<<e
19、ndl<<"占有資源超過(guò)了聲明的該資源總數(shù),請(qǐng)重新輸入"<<endl;while(maxij>allj);cout<<"依次輸入各進(jìn)程已經(jīng)占據(jù)的資源數(shù)量:"<<endl;for(i=0;i<m;i+)for(j=0;j<1;j+)docin>>allocationij;if(allocationij>maxij)cout<<endl<<"占有資源超過(guò)了聲明的最大資源,請(qǐng)重新輸入"<<endl;while(alloca
20、tionij>maxij);/初始化資源數(shù)量for(j=0;j<1;j+)p=allj;for(i=0;i<m;i+)p=p-allocationij;/減去已經(jīng)被占據(jù)的資源availablej=p;if(availablej<0)availablej=0;for(i=0;i<m;i+)for(j=0;j<1;j+)needij=maxij-allocationij;show();bank();1.7 定義全局變量#include"string.h"#include"iostream"usingnamespacestd
21、;#definefalse0#definetrue1#definew50/宏定義#definer50/宏定義intm;/總進(jìn)程數(shù)intallw;/各種資源的數(shù)目總和intmaxwr;/m個(gè)進(jìn)程最大資源需求量intavailabler;/系統(tǒng)可用資源數(shù)intallocationwr;/m個(gè)進(jìn)程已經(jīng)得到資源的資源量intneedwr;/m個(gè)進(jìn)程還需要資源的資源量intrequestr;/請(qǐng)求資源個(gè)數(shù)4.調(diào)試分析TJ:0S123Debug123.exe匸忑W匚7匚浪行家算袪模擬髄梯世程針親邊歆詈蠶黑要的最趣源數(shù)量3耘輸幾各進(jìn)程已經(jīng)占據(jù)的資源數(shù)量:12矗源總量:価名012口王口王口王口王二.1二.1二
22、.1二.1各進(jìn)程還需要的資源量221名012口王口王口王口王-b-.L-.lk-.IL-.-UI-A-UI-A各進(jìn)程已經(jīng)得到的資源量1負(fù)從0到2)詢1系統(tǒng)安全,:分配戒功。廣源總量:佃系統(tǒng)目前資源可用數(shù),4名012呈口王口王口王-kl-A-kl-A各進(jìn)程還需要的資源量121名012口王口王口王口王二.-1一.1二.1二.1各進(jìn)程已經(jīng)得到的資源量2圖4-1圖4-1這里為3個(gè)進(jìn)程(進(jìn)程)共用10個(gè)資源,分別需要的最大資源數(shù)為3,4,3.已經(jīng)占有的資源數(shù)為:1,2,2.分配給0號(hào)進(jìn)程1個(gè)資源,系統(tǒng)安全,分配成功3從0到2);12各進(jìn)程已經(jīng)得到的資源量322各進(jìn)程還需要的資源量曲21餐源總量:1S系統(tǒng)
23、安全,為配戒功。備迸程已經(jīng)得到的資源屢系統(tǒng)目前資源可用數(shù),3資源總量:佃系絨安全,為配戒功。奮氟蹇耀靜的進(jìn)程號(hào)從0到2)旳請(qǐng)鎰入透程睥請(qǐng)的資源數(shù):1名012H鴕令雖12名0:1:2:系統(tǒng)目前資源可用數(shù),1進(jìn)進(jìn)進(jìn)進(jìn)各進(jìn)程還需要的資源量1進(jìn)程名各進(jìn)程已經(jīng)得到的資源量圖4-24-2再分配給0號(hào)進(jìn)程1個(gè)資源,系統(tǒng)安全,分配成功zy0灼申程續(xù)專繼入入不S曰SIR請(qǐng)(1至0從2)H:12承Debug'各進(jìn)程還需要的資源量121各進(jìn)程已經(jīng)得到的資源量2系統(tǒng)安全,分配成功。10系統(tǒng)目前資源可用數(shù):3各進(jìn)程還需要的資源量Q21各進(jìn)程已經(jīng)得到的資源量3否繼續(xù)¥/N:y申請(qǐng)不合理,請(qǐng)重新選擇?i招嚮鶉艇舉儲(chǔ)還需要資源的資源量?10系統(tǒng)目前資源可用數(shù):3圖4-34-3分配給1號(hào)進(jìn)程3個(gè)資源,因?yàn)?號(hào)資源還需要2個(gè)即達(dá)到最大需要資源數(shù),故申請(qǐng)不合理,分配不成功'主'主系統(tǒng)目前資源可用數(shù):1名0:1:I®各進(jìn)程還需要的資源量1名0:1:I®各進(jìn)程已經(jīng)得到的資源量31勰揺藹鶉顒睪
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 室外燈具購(gòu)銷合同范本
- 合同范本是規(guī)范
- 原告主張借款合同范本
- 專項(xiàng)稅務(wù)咨詢合同范本
- 企業(yè)勞動(dòng)合同范本
- 創(chuàng)業(yè)股權(quán)銷售合同范本
- 保潔器械購(gòu)銷合同范本
- 二手奧迪車輛轉(zhuǎn)讓合同范本
- 包裝商業(yè)合同范本
- 烏梅飲采購(gòu)合同范本
- 湖南非稅在線繳費(fèi)操作步驟
- GB∕Z 27735-2022 野營(yíng)帳篷
- 《法院執(zhí)行實(shí)務(wù)》單元三(上)(課堂PPT)課件
- 高分子材料研究方法 X 射線法
- 【課件】第二單元第三節(jié)漢族民歌課件-2021-2022學(xué)年高中音樂人音版(2019)必修音樂鑒賞
- 高中人音版必修 音樂鑒賞20人民音樂家課件
- 風(fēng)電齒輪箱講義(20151010)
- 小組合作學(xué)習(xí)評(píng)價(jià)量化表
- 石油化工行業(yè)典型事故案例
- 圓二色譜儀操作規(guī)程培訓(xùn)
- 德語(yǔ)A1單詞表
評(píng)論
0/150
提交評(píng)論