一、實驗目的:
在了解和掌握銀行家演算法的基礎上,能熟練的處理課本例題中所給狀態的安全性問題,能編制銀行家演算法通用程式,將除錯結果顯示在計算機螢幕上,再檢測和筆算的一致性。
二、實驗內容:
設計五個程序共享三類資源的系統,的資源數量分別為10,5,7。
程序可動態地申請資源和釋放資源,系統按各程序的申請動態地分配資源。要求程式具有顯示和列印各程序的某一時刻的資源分配表和安全序列;顯示和列印各程序依次要求申請的資源號以及為某程序分配資源後的有關資源資料。
3、實驗要求:
本實驗要求用高階語言編寫和除錯乙個簡單的銀行家演算法程式。用銀行家演算法實現資源分配。
4、實驗思路:
設request--i為程序p[i]的請求向量,如果requesti[j]=k,表示程序p[i]需要k個rj資源。當系統發出請求後,系統按下述步驟開始檢查:
(1)、如果requesti[j]<=need[i][j],轉向步驟2;否則報告出錯,申請的資源已經大於它需要的最大值。
(2)、如果requesti[j]<=**ailable[j],轉向步驟3;否則報告出錯,尚無足夠的資源。
(3)、系統試探著把資源分配給p[i],並修改下列資料結構中的值:
**ailable[j]=**ailable[j]-request[j]
allocation[i][j]=allocation[i][j]+request[j]
need[i][j]=need[i][j]-request[j]
(4)、系統進行安全性演算法,檢查此次分配後,系統是否還處於安全狀態,若安全,把資源分配給程序p[i];否則,恢復原來的資源分配狀態,讓程序p[i]等待。
五、實驗原始碼:
#include<>
#define true 1
#define false 0
#define m 5
#define n 3
int **ailable[n]=;
int max[m][n]=,,,,};
int allocation[m][n]=,,,,};
int need[m][n],p[m];
void init()
} }void output()
} }int compare(int need,int work)
} return true;
}int issecurity(int **ailable,int need[n],int allocation[n])
for(j=0;j work[j]=**ailable[j];
} while(true)
finish[i]=true;
p[k++]=i;
flag=true;
break;
}}if(flag==false)
return true;
}} }void operate()
getchar();
if(i<0) break;
printf("input a request\n");
for(j=0;j scanf("%d",&request[j]);
}for(j=0;j if(request[j]>need[i][j])
}for(j=0;j if(request[j]>**ailable[j])
}if(f1==true) continue;
for(j=0;j **ailable[j]-=request[j];
allocation[i][j]+=request[j];
need[i][j]-=request[j];
}flag=issecurity(**ailable,need,allocation);
if(flag==true)
output();
printf("\nn");
}else
output();
printf("\nn");
}} }void main()
6、實驗結果:
7、實驗總結:
作業系統的基本特徵是併發與共享,系統允許多個程序併發執行,並且共性系統的軟、硬體資源。為了最大限度的利用計算機系統的資源,作業系統應採用動態分配的策略,但是這樣就容易因資源不足,分配不當而引起「死鎖」。本次的實驗就是利用銀行家演算法來避免「死鎖」,通過此實驗熟練的掌握了利用高階語言c語言編寫和除錯乙個動態分配資源的簡單程式,加深了解了死鎖產生的條件和原因。
銀行家演算法實驗報告
作業系統銀行家演算法報告 學院 班級 姓名 學號 共享資源分配與銀行家演算法 一 問題描述 本題主要內容是模擬實現資源分配。銀行家演算法是避免死鎖的一種重要方法,本實驗要求用高階語言編寫和除錯乙個簡單的銀行家演算法程式。加深了解有關資源申請 避免死鎖等概念,並體會和了解死鎖和避免死鎖的具體實施方法。...
銀行家演算法
實驗2 銀行家演算法 2學時 一 實驗目的 理解銀行家演算法,掌握程序安全性檢查的方法及資源分配的方法。二 實驗內容 編寫程式實現銀行家演算法,並驗證程式的正確性。三 實驗要求 編制模擬銀行家演算法的程式,並以下面給出的例子驗證所編寫的程式的正確性。例子 某系統有a b c d 4類資源共5個程序 ...
銀行家演算法
include include include define m 5 define n 3 define false 0 define true 1 m個程序對n類資源最大資源需求量 int max m n 系統可用資源數 int ailable n m個程序對n類資源最大資源需求量 int all...