1. 程式人生 > >銀行家演算法簡析

銀行家演算法簡析

銀行家演算法簡析

銀行家演算法簡析

最具有代表性的避免死鎖演算法

所需資料結構

  1. 可利用資源向量 available
  2. 最大需求向量 max
  3. 已分配矩陣向量 allocation
  4. 需求矩陣向量 need
  5. 工作向量 work(可提供的資源數目)
  6. 完成標誌 finish

演算法解析

request 是程序Pi的請求向量,表示某程序請求資源數目

  1. if request < need ; continue ; else 不分配資源
  2. if request <available ; continue ; else 不分配資源
  3. available = available - request ;
  4. need = need -request
  5. 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.《計算機作業系統第四版》,湯小丹 ,樑紅兵 ,等。