操作系統(tǒng)實(shí)驗(yàn)二銀行家算法實(shí)驗(yàn)報(bào)告剖析_第1頁
操作系統(tǒng)實(shí)驗(yàn)二銀行家算法實(shí)驗(yàn)報(bào)告剖析_第2頁
操作系統(tǒng)實(shí)驗(yàn)二銀行家算法實(shí)驗(yàn)報(bào)告剖析_第3頁
操作系統(tǒng)實(shí)驗(yàn)二銀行家算法實(shí)驗(yàn)報(bào)告剖析_第4頁
操作系統(tǒng)實(shí)驗(yàn)二銀行家算法實(shí)驗(yàn)報(bào)告剖析_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)二實(shí)驗(yàn)報(bào)告 實(shí)驗(yàn)源碼: #include stdio.h #include #include #define False 0 / 定義False #define True 1 / 定義True int Max100100 = 0; / 各進(jìn)程所需各類資源的最大需求 int Avaliable100 = 0; / 系統(tǒng)可用資源 char name100 = 0; / 資源的名稱 int Allocation100100 = 0; / 系統(tǒng)已分配資源 int Need100100 = 0; / 還需要資源 int Request100 = 0; / 請(qǐng)求資源向量 int temp100 = 0

2、; / 存放安全序列 int Work100 = 0; / 存放系統(tǒng)可提供資源 int M = 100; / 作業(yè)的最大數(shù)為100 int N = 100; / 資源的最大數(shù)為100 / 顯示資源矩陣 void showdata() int i,j; printf(此時(shí)刻的資源分配情況為:n); / 顯示表頭 printf( Max Allocation Need Avaliablen); printf(PCB ); / 顯示作業(yè)名稱 for(j = 0;j 4;j+) for(i = 0;i N;i+) printf(%c ,namei); printf( ); printf(); / 顯示

3、當(dāng)前作業(yè)資源分配情況 for(i = 0;i M;i+) printf( %d ,i); for(j = 0;j N;j+) printf(%d ,Maxij); ); printf( for(j = 0;j N;j+) printf(%d ,Allocationij); printf( ); for(j = 0;j N;j+) printf(%d ,Needij); if(i = 0) printf( ); for (j = 0;j N;j+) printf(%d ,Avaliablej); printf(); / 進(jìn)行資源分配 int changdata(int i) int j; for

4、 (j = 0;j M;j+) Avaliablej = Avaliablej - Requestj; Allocationij = Allocationij + Requestj; Needij = Needij - Requestj; return 1; / 安全性算法 int safe() int i,d,k = 0,m,h,s,apply,Finish100 = 0; int j; int flag = 0; for(i = 0;i N;i+) Worki = Avaliablei; printf( 安全性檢查 n); printf( Work Need Work+Allocation

5、 Allocation Finishn); ); printf(PCB / 顯示作業(yè)名稱 4;j+) for(j = 0;j for(i = 0;i N;i+) printf(%c ,namei); ); printf( printf(); / 顯示當(dāng)前作業(yè)資源分配情況 for(i = 0;i M;i+) apply = 0; for(j = 0;j N;j+) if (Finishi = False & Needij = Workj) apply+; if(apply = N) printf( %d ,i); for(d = 0;d N;d+) printf(%d ,Workd); prin

6、tf( ); for(d = 0;d N;d+) printf(%d ,Needid); printf( ); for(d = 0;d N;d+) printf(%d ,Allocationid); printf( ); for(m = 0;m N;m+) Workm = Workm + Allocationim; printf(%d ,Workm); / 變分配數(shù) Finishi = True; tempk = i; printf( ); printf(rue ); printf(); i = -1; k+; flag+; for(i = 0;i M;i+) if(Finishi = Fal

7、se) for(j = 0;j N;j+) Avaliablej = Avaliablej + Requestj; Allocationij = Allocationij - Requestj; Needij = Needij + Requestj; printf(系統(tǒng)進(jìn)入不安全狀態(tài)!此時(shí)系統(tǒng)不分配資源!n); / 不成功系統(tǒng)不安全 return 0; printf(此時(shí)系統(tǒng)是安全的!n); / 如果安全,輸出成功 牰湩晴尨安全序列為:); for(i = 0;iM;i+) / 輸出運(yùn)行進(jìn)程數(shù)組 printf(%d,tempi); if(i ); printf(); return 0; / 利

8、用銀行家算法對(duì)申請(qǐng)資源對(duì)進(jìn)行判定 void share() char ch; int i = 0,j = 0; ch = y; printf(請(qǐng)輸入要求分配的資源進(jìn)程號(hào)(0 - %d):,M - 1); scanf(%d,&i); / 輸入須申請(qǐng)的資源號(hào) printf(請(qǐng)輸入進(jìn)程 %d 申請(qǐng)的資源:n,i); for(j = 0;j N;j+) printf(%c:,namej); scanf(%d,&Requestj); / 輸入需要申請(qǐng)的資源 for (j = 0;j Needij) / 判斷申請(qǐng)是否大于需求,若大于則出錯(cuò) printf(進(jìn)程 %d 申請(qǐng)的資源大于它需要的資源 ,i); p

9、rintf( 分配不合理,不予分配!n); ch = n; break; else 判斷申請(qǐng)是否大于當(dāng)前資源,若大于則/ if(Requestj Avaliablej) / 出錯(cuò) printf(進(jìn)程 %d 申請(qǐng)的資源大于系統(tǒng)現(xiàn)在可利用的資源,i); printf( 分配出錯(cuò),不予分配!n); ch = n; break; if(ch = y) changdata(i); / 根據(jù)進(jìn)程需求量變換資源 showdata(); / 根據(jù)進(jìn)程需求量顯示變換后的資源 safe(); / 根據(jù)進(jìn)程需求量進(jìn)行銀行家算法判斷 / 主函數(shù) int main() int t = 1,i,j,number,choi

10、ce,m,n,flag; char ming; printf(請(qǐng)首先輸入系統(tǒng)可供資源種類的數(shù)量:); scanf(%d,&n); N = n; for(i = 0;i n;i+) 牰湩晴尨資源 %d 的名稱:,i + 1); scanf(%s,&ming); namei = ming; 牰湩晴尨資源的數(shù)量:); scanf(%d,&number); Avaliablei = number; printf(); 牰湩晴尨 請(qǐng)輸入作業(yè)的數(shù)量:); scanf(%d,&m); M = m; printf(請(qǐng)輸入各進(jìn)程的最大需求量( %d * %d 矩陣)Max:n,m,n); for(i = 0;i

11、 m;i+) for(j = 0;j n;j+) scanf(%d,&Maxij); do flag = 0; printf( 請(qǐng)輸入各進(jìn)程已經(jīng)申請(qǐng)的資源量( %d * %d 矩陣)Allocation:n,m,n); for(i = 0;i m;i+) for(j = 0;j Maxij) flag = 1; Needij = Maxij - Allocationij; if(flag) printf(申請(qǐng)的資源大于最大需求量,請(qǐng)重新輸入!nn); while(flag); showdata(); / 顯示各種資源 safe(); / 用銀行家算法判定系統(tǒng)是否安全 while(1) if(t = 1) printf( 利用銀行家算法預(yù)分配資源 n); share(); t = 0; else br

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論