銀行家算法主要程序段_第1頁(yè)
銀行家算法主要程序段_第2頁(yè)
銀行家算法主要程序段_第3頁(yè)
銀行家算法主要程序段_第4頁(yè)
銀行家算法主要程序段_第5頁(yè)
已閱讀5頁(yè),還剩6頁(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)介

操作系統(tǒng)實(shí)驗(yàn)二:

銀行家算法實(shí)驗(yàn)銀行家算法的數(shù)據(jù)結(jié)構(gòu)◆可用資源向量Available:長(zhǎng)度為n的數(shù)組表示系統(tǒng)中n類資源的當(dāng)前可用數(shù)目。如果Available[j]=k,表示系統(tǒng)中現(xiàn)有Rj類資源為k個(gè)。◆最大需求矩陣Max:m×n矩陣定義m個(gè)進(jìn)程對(duì)n類資源的最大需求量。如Max[i,j]=k,表示進(jìn)程Pi運(yùn)行期間最多需求Rj資源的數(shù)目為k個(gè)。◆已分配資源矩陣Allocation:m×n矩陣定義了每個(gè)進(jìn)程現(xiàn)在已分配到的各類資源的實(shí)際數(shù)目。如果Allocation[i,j]=k,表示進(jìn)程Pi當(dāng)前分到k個(gè)Rj類資源?!粜枨缶仃嘚eed:m×n矩陣表示每個(gè)進(jìn)程還需要的各類資源的數(shù)目。如果Need[i,j]=k,表示進(jìn)程Pi尚需k個(gè)Rj類資源才能完成其任務(wù)。很顯然,Need[i,j]=Max[i,j]-Allocation[i,j],因而,這些數(shù)據(jù)結(jié)構(gòu)的大小和值會(huì)隨著時(shí)間而改變?;春9W(xué)院計(jì)算機(jī)科學(xué)系銀行家算法(資源分配算法)設(shè)Requesti表示進(jìn)程Pi的資源申請(qǐng)向量。如Requesti[j]=k,表示進(jìn)程Pi動(dòng)態(tài)申請(qǐng)k個(gè)Rj類資源。當(dāng)進(jìn)程Pi申請(qǐng)資源時(shí),就執(zhí)行下列動(dòng)作(試探性分配):①若Requesti[j]>Need[i,j],產(chǎn)生出錯(cuò)條件,因?yàn)檫M(jìn)程Pi對(duì)資源的請(qǐng)求量已超過(guò)其說(shuō)明的最大數(shù)量;否則,轉(zhuǎn)到步驟②。②如果Requesti[j]>Available[j],則進(jìn)程Pi必須等待,這是因?yàn)橄到y(tǒng)現(xiàn)在沒(méi)有可用的資源;否則,轉(zhuǎn)到步驟③。③如果系統(tǒng)可以給進(jìn)程Pi分配所請(qǐng)求的資源,則應(yīng)對(duì)有關(guān)數(shù)據(jù)結(jié)構(gòu)進(jìn)行修改:Available[j]=Available[j]-Requesti[j];(j=1,2,……,n)Allocation[i,j]=Allocation[i,j]

+Requesti[j];(i=1,2,……,m)Need[i,j]=Need[i,j]-Requesti[j];④系統(tǒng)執(zhí)行安全性檢查,查看此時(shí)系統(tǒng)狀態(tài)是否安全。如果安全,就給進(jìn)程Pi

實(shí)際分配資源;否則,即系統(tǒng)是不安全的,則Pi等待,作廢本次試探性分配,并且把資源分配狀態(tài)恢復(fù)成③之前的情況。淮海工學(xué)院計(jì)算機(jī)科學(xué)系安全檢查算法設(shè)置兩個(gè)向量:工作向量Work:表示系統(tǒng)可提供給進(jìn)程繼續(xù)運(yùn)行所需要的各類資源數(shù)目,長(zhǎng)度為n;進(jìn)程完成標(biāo)志向量Finish:長(zhǎng)度為m,表示各個(gè)進(jìn)程是否能夠得到足夠的資源并運(yùn)行完成。兩個(gè)向量初始化:Work=Available,F(xiàn)inish[i]=false(i=1,2,…m)。從進(jìn)程集合中搜尋滿足下列條件的進(jìn)程(找安全進(jìn)程序列):Finish[i]==false且Need[i,j]≤Work[j]。 如果找到這樣的進(jìn)程,執(zhí)行③;否則,則轉(zhuǎn)向步驟④。修改數(shù)據(jù)值:Work[j]=Work[j]+Allocation[i,j](進(jìn)程Pi釋放所占的全部資源);Finish[i]=true; 返回步驟②;安全與不安全判定:如果所有進(jìn)程的Finish[i]==true都成立(找著安全序列),則系統(tǒng)處于安全狀態(tài);否則,系統(tǒng)處于不安全狀態(tài)。淮海工學(xué)院計(jì)算機(jī)科學(xué)系銀行家算法主要程序段1、以書上用例初始化數(shù)據(jù)結(jié)構(gòu)#defineM5#defineN3intavailable[N]={3,3,2};intmax[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};intallocation[M][N]={{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};intneed[M][N],p[M];銀行家算法主要程序段1、以書上用例初始化數(shù)據(jù)結(jié)構(gòu)#defineM5//總進(jìn)程數(shù)#defineN3//總資源數(shù)//M個(gè)進(jìn)程對(duì)N類資源最大資源需求量intMAX[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};//系統(tǒng)可用資源數(shù)intAVAILABLE[N]={10,5,7};//M個(gè)進(jìn)程已經(jīng)得到N類資源的資源量intALLOCATION[M][N]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};//M個(gè)進(jìn)程還需要N類資源的資源量intNEED[M][N]={{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};intRequest[N]={0,0,0};銀行家算法主要程序段2、現(xiàn)實(shí)資源分配情況voiddisplaydata(){inti,j;cout<<"系統(tǒng)可用的資源數(shù)為:"<<endl<<endl;for(j=0;j<N;j++)cout<<"資源"<<j<<":"<<AVAILABLE[j];cout<<endl;cout<<"各進(jìn)程還需要的資源量:"<<endl<<endl;for(i=0;i<M;i++){cout<<"進(jìn)程"<<i<<":";for(j=0;j<N;j++)cout<<"資源"<<j<<":"<<NEED[i][j];cout<<endl;}cout<<endl;cout<<"各進(jìn)程已經(jīng)得到的資源量:"<<endl<<endl;for(i=0;i<M;i++){cout<<"進(jìn)程"<<i<<":";for(j=0;j<N;j++)cout<<"資源"<<j<<":"<<ALLOCATION[i][j];cout<<endl;}};銀行家算法主要程序段3、進(jìn)程分配資源的數(shù)據(jù)更新voidchangedata(intk)//為進(jìn)程k分配請(qǐng)求的資源數(shù)量{intj;for(j=0;j<N;j++){AVAILABLE[j]=AVAILABLE[j]-Request[j];ALLOCATION[k][j]=ALLOCATION[k][j]+Request[j];NEED[k][j]=NEED[k][j]-Request[j];}};銀行家算法主要程序段4、進(jìn)程分配資源的數(shù)據(jù)更新voidrestoredata(intk)//恢復(fù)已分配的數(shù)據(jù)為分配前狀態(tài)

{

intj;

for(j=0;j<N;j++)

{

AVAILABLE[j]=AVAILABLE[j]+Request[j];

ALLOCATION[k][j]=ALLOCATION[k][j]-Request[j];

NEED[k][j]=NEED[k][j]+Request[j];

}};

銀行法家算威法主像要程強(qiáng)序段5、安航全檢碼查過(guò)牌程中零判斷少進(jìn)程揪需求帥資源農(nóng)是否扇大于彼現(xiàn)有組資源in盡tco造mp揉ar投e(醉in徑tne輔ed沖[垃],in投two建rk鹽[歡])塑{in網(wǎng)tj;fo毫r(灶j=0物;j鄙<N;滾j++晃)掘{if千(n乏ee輔d[紫j]>wo虜rk箱[j])婆{話r靠et幸ur勇n邊FA傻LS姓E;趟}碗}嘆r施et歸ur帆n編TR產(chǎn)UE價(jià);紐奉}6、安昌全檢飽查程錘序段in繩tis菜Se飯cu彎ri倘ty炸(i債ntav號(hào)ai囑la亡bl束e[蝦],岡in無(wú)tne勇ed勿[]罷[N避],視in淚tal純lo艇ca尖ti省on樸[]蕉[N])罷{in沉ti,芹j,砍k=0堵,f迅la紛g,公fi婦ni交sh澆[M若],看wo恥rk斗[N略];fo御r(榮i=0侵;i咱<M;響i++哨)評(píng){fi誰(shuí)ni芒sh匯[i]=皺FA幅LS嗎E;渴}fo涼r(叫j=0挨;j捎<N;禿j++宣)色{wo范rk牧[j]=av豆ai增la蹤蝶bl描e[螞j];齒}wh窄il數(shù)e(藍(lán)TR刑UE){//尋找御安全岸進(jìn)程疼序列fl貪ag斑=F活A(yù)L鬼SE麗;fo喇r(印i=0負(fù);i斑<M;揉i++貧){迫//每一艇趟循損環(huán)將溝找到掛當(dāng)前取可分削配資唐源的買進(jìn)程槍,并督回收蝕其已鉤分配垮資源if膏(f劇in闖is慣h[毅i]=栗=FA蘋LS抱E&璃&c奸om棒pa紗re鎖(n撓ee佳d[輕i]悔,w常or血k)=拔=T因RU漿E){fo鎮(zhèn)r(槍j=0同;j綠<N;哀j++茂)wo備rk厭[j]+飽=al尚l(wèi)o破ca群ti耀on票[i枝][幟j];fi萍ni版sh描[i]=由TR暫UE羨;p[李k++先]=例i;翼fl鞋ag授=T陳RU坡E;消br疫ea挎k;蹈/民/結(jié)束FO蝕R循環(huán)法,表吩示W(wǎng)O扔RK中資東源滿伙足某海一進(jìn)微程的湯資源餃需求購(gòu),并蜂執(zhí)行wh樹(shù)il反e}}if恐(f晃la咬g==斬FA咱LS狀E)嘴{她//只要氧有一舊個(gè)進(jìn)偵程全斷部資仰源得持到滿想足,若則繼狠續(xù)wh簽il氏e(醉TR紐奉UE)循環(huán)fo鎖r(痰i=0士;i悟<M;妨i++昨)體{if吃(f視in樂(lè)is件h[昏i]=串=F史

溫馨提示

  • 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)論