銀行家算法C語(yǔ)言代碼_第1頁(yè)
銀行家算法C語(yǔ)言代碼_第2頁(yè)
銀行家算法C語(yǔ)言代碼_第3頁(yè)
銀行家算法C語(yǔ)言代碼_第4頁(yè)
銀行家算法C語(yǔ)言代碼_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)名稱(chēng): 銀行家算法 姓 名: 楊秀龍 學(xué) 號(hào): 專(zhuān)業(yè)班級(jí): 創(chuàng)新實(shí)驗(yàn)班111 指導(dǎo)老師: 霍林 實(shí)驗(yàn)題目銀行家算法實(shí)驗(yàn)?zāi)康母顚拥牧私忏y行家算法是如何避免死鎖的設(shè)計(jì)思想銀行家算法是根據(jù)進(jìn)程的請(qǐng)求,假設(shè)在已分配給該進(jìn)程請(qǐng)求的資源后,進(jìn)行安全性算法,如果都能滿(mǎn)足其他進(jìn)程的請(qǐng)求,則滿(mǎn)足該進(jìn)程的請(qǐng)求,否則掛起該進(jìn)程的請(qǐng)求。假設(shè)在一個(gè)系統(tǒng)中,知道相應(yīng)的進(jìn)程的狀態(tài)(最大需求、已占用的資源量、還需要的資源量和可利用的資源數(shù)),某個(gè)進(jìn)程發(fā)出請(qǐng)求,在請(qǐng)求滿(mǎn)足兩大請(qǐng)求(小于還需要的資源并小于可利用資源數(shù))時(shí),分配給該進(jìn)程相應(yīng)的資源,再進(jìn)行安全檢測(cè),在確認(rèn)安全的情況下,才把資源真正分配給該進(jìn)程,否則終止請(qǐng)求!主

2、要數(shù)據(jù)結(jié)構(gòu)根據(jù)算法的相應(yīng)需求,需要定義int maxMM;int allocationMM;int needMM;int availableM;int workM;等數(shù)組開(kāi)始結(jié)束輸入總進(jìn)程數(shù)輸入資源數(shù)輸入Max矩陣輸入Allocation矩陣是否添加進(jìn)程請(qǐng)求輸入進(jìn)程號(hào)和請(qǐng)求資源否是流程圖運(yùn)行結(jié)果圖(1)分配進(jìn)程的相應(yīng)狀態(tài)圖(2)請(qǐng)求和請(qǐng)求完全部資源后釋放資源圖(3)繼續(xù)請(qǐng)求并釋放其他進(jìn)程圖(2)所有進(jìn)程請(qǐng)求完成后系統(tǒng)資源還原附錄原代碼如下:# include stdio.h # define M 50int maxMM;int allocationMM;int needMM;int avail

3、ableM; int i, j, n, m, anquan,x=0;/*7 5 3 0 1 0 7 4 3 3 3 2 3 2 2 2 0 0 1 2 2 9 0 2 3 0 2 6 0 0 2 2 2 2 1 1 0 1 1 4 3 3 0 0 2 4 3 1*/ main() void check(); int p,q,control; int reqM,allocation1MM,need1MM,available1M; printf(輸入進(jìn)程總數(shù):); scanf(%d, &n); printf(輸入資源種類(lèi)數(shù)量:); scanf(%d, &m); printf(輸入需求矩陣Max:n

4、); for(i=0;in; i+) for(j=0;jm; j+) scanf(%2d,&maxij); printf(輸入已分配矩陣Allocation:n); for(i=0;in; i+) for(j=0;jm; j+) scanf(%d, &allocationij); for (i=0;in; i+) for(j=0;jm; j+) needij=maxij-allocationij; printf(輸入資源的系統(tǒng)初始值:n); for (j=0;jm;j+) scanf(%d, &availablej); for (j=0;jm;j+)for(i=0;in;i+)availabl

5、ej=availablej-allocationij; check(); if (anquan=1) /如果已知的狀態(tài)安全則執(zhí)行以下代碼 for(control=0;control+) p=0,q=0; printf(輸入請(qǐng)求的進(jìn)程號(hào): ); scanf(%d, &i); printf(輸入該進(jìn)程的請(qǐng)求資源數(shù)組:); for(j=0;jm; j+) scanf(%d,&reqj); for(j=0;jneedij) p=1; if(p) printf(請(qǐng)求資源大于該進(jìn)程還需要的資源!n); else for(j=0;javailablej)/判斷請(qǐng)求是否大于可用資源 q=1; if(q) pr

6、intf(可用資源不能滿(mǎn)足請(qǐng)求!n); else for(j=0;jm; j+) /滿(mǎn)足兩大條件 available1j=availablej; /保持資源的當(dāng)前 allocation1ij=allocationij; need1ij=needij; availablej=availablej-reqj; /嘗試把資源分配給進(jìn)程 allocationij=allocationij+reqj; needij=needij-reqj; if(needij=0)x=x+1; /當(dāng)進(jìn)程滿(mǎn)足時(shí)釋放資源 if(x=m) for(j=0;jm;j+) availablej=availablej+alloca

7、tionij; allocationij=0; available1j=availablej; x-; else x=0; check(); if(anquan=0) for (j=0;jm; j+) availablej=available1j; /還原分配前的狀態(tài) allocationij=allocation1ij; needij=need1ij; printf(執(zhí)行該進(jìn)程不安全!返回繼續(xù)操作。n); printf(是否繼續(xù)請(qǐng)求?n); void check() /安全性算法 int k, f, no=0; int workM,aM; char finishM; anquan=1; fo

8、r(i=0;in; i+) finishi=F; for(j=0;jm; j+) workj=availablej; k=n; do for (i=0;in; i+) if (finishi=F) f=1; for (j=0;jworkj) f=0; if (f=1) /找到還沒(méi)完成的且需求數(shù)小于可提供進(jìn)程繼續(xù)運(yùn)行的 finishi=T; ano+=i; /記錄安全序列號(hào) for (j=0;j0); f=1; for (i=0;in; i+) /判斷有沒(méi)有進(jìn)程沒(méi)完成 if (finishi=F) f=0; break; if (f=0) printf(不安全狀態(tài)!n); anquan=0; e

9、lse printf(處于安全狀態(tài).); printf(安全序列號(hào):); for (i=0;in;i+) printf (%d ,ai); printf(n); printf(進(jìn)程); printf( ); printf( Max ); printf( ); printf(allocation); printf( ); printf(need); printf( ); printf(available); printf(n); for (i=0;in; i+) printf(%2d,i); printf( ); for(j=0;jm; j+) printf(%2d,maxij); printf( ); for(j=0;jm

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論