作業系統銀行家演算法報告
學院:班級:
姓名:學號:
共享資源分配與銀行家演算法
一、問題描述
本題主要內容是模擬實現資源分配。銀行家演算法是避免死鎖的一種重要方法,本實驗要求用高階語言編寫和除錯乙個簡單的銀行家演算法程式。加深了解有關資源申請、避免死鎖等概念,並體會和了解死鎖和避免死鎖的具體實施方法。
通過對這個演算法的設計,讓學生能夠對書本知識有更深的理解,在操作和其它方面有更高的提公升。
二、基本要求
具體用銀行家演算法實現資源分配。要求如下:
(1) 設計乙個3個併發程序共享3類不同資源的系統,程序可動態地申請資源和釋放資源,系統按各程序的申請動態地分配資源。
(2) 設計用銀行家演算法 ,實現資源分配 ,應具有顯示或列印各程序依次要求申請的資源數以及依次分配資源的情況。
(3) 確定一組各程序依次申請資源數的序列, 輸出執行結果。
三、演算法描述
1.銀行家演算法::
設程序i提出請求request[n],則銀行家演算法按如下規則進行判斷。
(1)如果request[n]<=need[i,n],則轉(2);否則,出錯。
(2)如果request[n]<=**ailable,則轉(3);否則,出錯。
(3)系統試探分配資源,修改相關資料:
**ailable=**ailable-request
allocation=allocation+request
need=need-request
(4)系統執行安全性檢查,如安全,則分配成立;否則試探險性分配作廢,系統恢復原狀,程序等待。
2.安全性檢查:
(1)設定兩個工作向量work=**ailable;finish[m]=false
(2)從程序集合中找到乙個滿足下述條件的程序,
finish[i]=false
need<=work
如找到,執行(3);否則,執行(4)
(3)設程序獲得資源,可順利執行,直至完成,從而釋放資源。
work=work+allocation
finish=true
go to 2
(4)如所有的程序finish[m]=true,則表示安全;否則系統不安全。
3.資料結構
假設有m個程序n類資源,則有如下資料結構:
#define w 10
#define r 20
int m總程序數
int n資源種類
struct pcb
;struct ser
; 四、主要**
int calculate(struct pcb *p,struct ser *s)
}for(j=0;j
s[j].**ailable=s[j].all_resource-b;
}return 0;
}int scan(struct pcb *p,struct ser *s)
//輸入各程序對資源的最大需求量
printf("\n請輸入3個併發程序對3類資源的最大資源需求量分別為:\n");
for(i=0;i
//輸入各程序對各資源的已占有情況
printf("\n請輸入3個併發程序已分配的資源數分別為:\n");
for(i=0;i
calculate(p,s呼叫計算need和**ailable演算法
return 0;
}int print(struct pcb *p,struct ser *s)
return 0;
}//執行安全性檢查
int security(struct pcb *p,struct ser *s,int a)
for(j=0;j
work[j]=s[j].**ailable;
}for(i=0;i }}
} for(i=0;i{
if(finish[i]==0)
{ printf("系統處於不安全狀態\n分配不成功,系統不安全
for(j=0;j{ s[j].**ailable=s[j].**ailable+p[a-1].
request[jp[a-1].allocation[j]=p[a-1].allocation[j]-p[a-1].
request[j系統收回試分配的資源,修改相關資料
p[a-1].need[j]=p[a-1].need[j]+p[a-1].request[j];
銀行家演算法實驗報告
一 實驗目的 在了解和掌握銀行家演算法的基礎上,能熟練的處理課本例題中所給狀態的安全性問題,能編制銀行家演算法通用程式,將除錯結果顯示在計算機螢幕上,再檢測和筆算的一致性。二 實驗內容 設計五個程序共享三類資源的系統,的資源數量分別為10,5,7。程序可動態地申請資源和釋放資源,系統按各程序的申請動...
銀行家演算法
實驗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...