[操作系統] 進程管理(2)

銀行家算法-避免死鎖的算法之一

設系統中有三種類型的資源(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是非堵塞結點。

化簡的問題,就把非堵塞結點周圍所有的邊(因爲非阻塞結點執行完之後就釋放資源了,所以線沒用了),看看剩下資源按照上述步驟是否能夠分配,若最後只能下孤立的點,說明這個圖可以化簡的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章