銀行家算法的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
銀行家算法的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
銀行家算法的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
銀行家算法的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
銀行家算法的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(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)介

銀行家算法的設(shè)計(jì)與實(shí)現(xiàn)1.實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)銀行家算法設(shè)計(jì)與實(shí)現(xiàn),可以加深對(duì)死鎖的理解,掌握死鎖的預(yù)防、避免、檢測(cè)和解除的基本原理,重點(diǎn)掌握死鎖的避免方法—銀行家算法。使學(xué)生初步具有研究、設(shè)計(jì)、編制和調(diào)試操作系統(tǒng)模塊的能力。實(shí)驗(yàn)內(nèi)容與要求:?設(shè)計(jì)銀行家算法的核心數(shù)據(jù)結(jié)構(gòu)、安全性檢查算法;?畫出銀行家算法流程圖;編程實(shí)現(xiàn)算法功能;給出運(yùn)行結(jié)果、測(cè)試界面截圖、程序清單工作量要求:完成以上設(shè)計(jì)要求中的所有算法功能可以用下面的數(shù)據(jù)作為測(cè)試數(shù)據(jù)假定系統(tǒng)中有五個(gè)進(jìn)程{P0,P1,P2,P3,P4}和三類資源{A,B,C},各種資源的數(shù)量分別為10、5、7,在T0時(shí)刻的資源分配情況如圖所示。MaxAllocatin口NeedAvailable進(jìn)萌、ABCABCABCARCPo7 5 30107 4 333 2〔2 30)Pi5 22200122(3 0 2)(0 2小9 0 23 0 2&00222211Q1 14 3 30024 3 1TO時(shí)刻的資源分配表請(qǐng)求序列(1)P1發(fā)出請(qǐng)求向量Request1(1,0,2)(2)P4發(fā)出請(qǐng)求向量Request4(3,3,0)(3)P0發(fā)出請(qǐng)求向量RequstO(O,2,0)提交源代碼以及實(shí)驗(yàn)報(bào)告。銀行家算法流程圖:源代碼:#include<stdio.h>#definemaxprocess50#definemaxresource100intavailable[maxprocess];intmax[maxprocess][maxresource];intallocation[maxprocess][maxresource];intneed[maxprocess][maxresource];intrequest[maxprocess][maxresource];intfinish[maxprocess];intp[maxprocess];intm,n;voidInit();//初始化intSafe();//安全性算法voidBank();//銀行家算法intmain(){Init();Safe();Bank();}voidInit(){inti,j;printf(〃請(qǐng)輸入進(jìn)程的數(shù)目:\n〃);scanf("%d",&m);printf(〃請(qǐng)輸入資源的種類:\n");scanf(〃%d〃,&n);printf(〃請(qǐng)輸入每個(gè)進(jìn)程最多所需的各資源數(shù),按照%dx%d矩陣輸入\n〃,m,n);for(i=0;i<m;i++){for(j=0;j<n;j++){scanf(〃%d〃,&max[i][j]);}}printf(〃請(qǐng)輸入每個(gè)進(jìn)程已分配的各資源數(shù),也按照%dx%d矩陣輸入\n〃,m,n);for(i=0;i<m;i++){for(j=0;j<n;j++){scanf(〃%d〃,&allocation[i][j]);need[i][j]=max[i][j]-allocation[i][j];if(need[i][j]<0){printf(〃您輸入的第%d個(gè)進(jìn)程所擁有的第%d個(gè)資源數(shù)錯(cuò)誤,請(qǐng)重新輸入:〃,i+l,j+l);j--;continue;}printf("請(qǐng)輸入各自資源現(xiàn)有的數(shù)目:\n〃);for(i=0;i<n;i++){scanf("%d",&available[i]);}}voidBank(){inti,cusneed;//charagain;while(1){printf(〃請(qǐng)輸入要申請(qǐng)資源的進(jìn)程號(hào)\n〃);scanf("%d",&cusneed);printf(〃請(qǐng)輸入進(jìn)程所請(qǐng)求的各資源的數(shù)量\n〃);for(i=0;i<n;i++){scanf(〃%d〃,&request[cusneed][i]);}for(i=0;i<n;i++){if(request[cusneed][i]>need[cusneed][i]){printf(〃您輸入的請(qǐng)求數(shù)超過(guò)進(jìn)程的需求量!請(qǐng)重新輸入!\n〃);continue;if(request[cusneed][i]>available[i]){printf(〃您輸入的請(qǐng)求數(shù)超過(guò)系統(tǒng)現(xiàn)有的資源數(shù)!請(qǐng)重新輸入!");continue;}}for(i=0;i<n;i++){available[i]-=request[cusneed][i];allocation[cusneed][i]+=request[cusneed][i];need[cusneed][i]-=request[cusneed][i];}if(Safe()){printf(〃同意分配請(qǐng)求\n〃);}else{printf(〃您的請(qǐng)求被拒絕!\n〃);for(i=0;i<n;i++){available[i]+=request[cusneed][i];allocation[cusneed][i]-=request[cusneed][i];need[cusneed][i]+=request[cusneed][i];}}for(i=0;i<m;i++){finish[i]=0;}}}intSafe(){inti,j,k,l=0;intWork[maxresource];for(i=0;i<n;i++){Work[i]=available[i];}for(i=0;i<m;i++){finish[i]==0;}for(i=0;i<m;i++){if(finish[i]==1){continue;}else{for(j=0;j<n;j++){if(need[i][j]>Work[j]){break;}}if(j==n){finish[i]=1;for(k=0;k<n;k++){Work[k]+=allocation[i][k];}p[l++]=i;i--;}else{continue;if(l==m){printf("系統(tǒng)是安全的\n");printf("安全序列:\n");for(i=0;i<l;i++){printf("%d",p[i]);if(i!=l-1){printf("-->");}}return1;}}printf("系統(tǒng)是不安全的\n");return0;I諳輸入進(jìn)程的數(shù)目:5諳輸入資源的種類:3請(qǐng)輸入每個(gè)進(jìn)程最窯所需的各費(fèi)源數(shù),按照5咄矩陣輸入75332202222請(qǐng)輸入每個(gè)進(jìn)程己分配的各資源數(shù),也按照5姑矩陣輸入01020002211002請(qǐng)輸入各自資源現(xiàn)有的數(shù)目:57系統(tǒng)是安全的安全序列:0->1->2->3->4請(qǐng)輸入要申請(qǐng)資源的進(jìn)程號(hào)1請(qǐng)輸入進(jìn)程所請(qǐng)求的各資源的數(shù)呈102系統(tǒng)是不安全的 I您的請(qǐng)隸被拒細(xì)!請(qǐng)輸入要申請(qǐng)資源的進(jìn)程號(hào)4請(qǐng)輸入進(jìn)程所請(qǐng)求的各資源的數(shù)量330系統(tǒng)是不安全的您的請(qǐng)求被拒絕!請(qǐng)輸入要

溫馨提示

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