銀行家演算法簡析
阿新 • • 發佈:2018-12-18
銀行家演算法簡析
銀行家演算法簡析
最具有代表性的避免死鎖演算法
所需資料結構
- 可利用資源向量 available
- 最大需求向量 max
- 已分配矩陣向量 allocation
- 需求矩陣向量 need
- 工作向量 work(可提供的資源數目)
- 完成標誌 finish
演算法解析
request 是程序Pi的請求向量,表示某程序請求資源數目
- if request < need ; continue ; else 不分配資源
- if request <available ; continue ; else 不分配資源
- available = available - request ;
- need = need -request
- if 安全 ; 分配資源 ;else 不分配資源;
安全演算法
假設將資源分配給程序,運算出 allocation + work (new available)即為當前程序結束後空閒出的資源,再找出新的程序滿足need < new available 將其finish = true , new available + = allocation 重複執行 , 如果finish 全為1,則安全。
例題
process | allocation | need | available | 序號 | new available |
---|---|---|---|---|---|
P0 | 0 0 3 2 | 0 0 1 2 | 1 6 2 2 | 1 | 1,6,5,4 |
P1 | 1 0 0 0 | 1 7 5 0 | 4 | 2,9,9,10 | |
P2 | 1 3 5 4 | 2 3 5 6 | . | 5 | 3,12 ,14,14 |
P3 | 0 3 3 2 | 0 6 5 2 | 2 | 1,9,8,6 | |
P4 | 0 0 1 4 | 0 6 5 6 | 3 | 1,9,9,10 |
1.該狀態是否安全
2.若程序P2 提出請求 (1,2,2,2) 後 是否分配資源?
答
1.如表黃色部分 有 安全序列,則安全
2.當P2 提出 12 2 2 時,request < available , request < need ;
available = 0 4 0 0 ;
process | allocation | need | available |
---|---|---|---|
P2 | 2 5 7 6 | 1 1 3 4 | 0,4,0,0. |
P0 | 0 0 3 2 | 0 0 1 2 | |
P1 | 1 0 0 0 | 1 7 5 0 | |
P3 | 0 3 3 2 | 0 6 5 2 | |
P4 | 0 0 1 4 | 0 6 5 6 |
available 無法滿足程序其他資源,不分配資源。
參考資料
1.《計算機作業系統第四版》,湯小丹 ,樑紅兵 ,等。