銀行家算法-避免死鎖的算法之一
設系統中有三種類型的資源(A,B,C)和五個進程(P1,P2,P3,P4,P5),A資源的數量是17,B資源的數量是6,C資源的數量爲19。在T0時刻系統的狀態如下表:
最大資源需求量 | 已經分配資源量 | |
A,B,C | A,B,C | |
P1 | 4,0,11 | 4,0,5 |
P2 | 5,3,6 | 4,0,2 |
P3 | 4,2,5 | 2,1,4 |
P4 | 5,5,9 | 2,1,2 |
P5 | 4,2,4 | 3,1,3 |
系統採用銀行家算法實施死鎖避免策略,下列哪一個序列是安全序列?
A.P3,P1,P4,P2,P5
B.P1,P3,P5,P2,P4
C.P4,P2,P3,P5,P1
D.P2,P3,P1,P4,P5
A總數是17個,已經分配出去了4+4+2+2+3=15個,還剩2個,同理B還剩下6-(1+1+1)=3個,C還剩下19-(5+2+4+2+3)=3個,所以在T0時刻,A,B,C三個資源能夠自由分配的只有(2,3,3)個了,再看五個進程還差多少,P1還差0個A,0個B,6個C,其他進程還需要分配的資源看下錶
P1 | P2 | P3 | P4 | P5 | |
A,B,C | 0,0,6 | 1,3,4 | 2,1,1 | 3,4,7 | 1,1,1 |
再看,我只有(2,3,3)個資源,可以分配給P3或者P6,都分配給他們之後,他們執行完之後還會主動釋放資源。看選項A,先分配給P3,P3得到這些資源後能完全執行下去,執行完畢後釋放自己的資源,P3釋放後總共資源個數爲(4,4,7)這些資源分配給哪個進程都能執行完畢,所以A是安全序列,不會出現死鎖。其他選項在第一步就不行,因爲資源給他們,那些進程也執行不下去。
資源分配圖怎麼看
先看資源還剩多少個,R1、R2、R3是資源,分別有2,3,2個。從R1開始的箭頭有倆,分別指向P1和P3,說明給了P1和P3一人一個(所以還剩下0個);同理,R2給了P1一個,P3一個,P2一個(還剩下0個),R3給了P2一個(還剩下1個)。
再看進程還需要多少資源,有個從P1到R2的線,說明P1還需要一個R2,同理,P2還需要一個R1,P3還需要一個R3.
因爲只有R3還剩一個,所以只能分配給P3,所以P3是非堵塞結點。
化簡的問題,就把非堵塞結點周圍所有的邊(因爲非阻塞結點執行完之後就釋放資源了,所以線沒用了),看看剩下資源按照上述步驟是否能夠分配,若最後只能下孤立的點,說明這個圖可以化簡的。