1. 程式人生 > 實用技巧 >作業系統之程序管理:19、死鎖的處理策略:避免死鎖(銀行家演算法)

作業系統之程序管理:19、死鎖的處理策略:避免死鎖(銀行家演算法)

19、死鎖的處理策略:避免死鎖

思維導圖

在這裡插入圖片描述

安全序列

在這裡插入圖片描述

來看這樣的情況:
由上述表格可知,B仍需50,A仍需30,T仍需20,我手中剩餘40
方案一
我將30借給B,我手中剩餘10;B仍需20,A仍需30,T仍需20;此時我手中剩餘的錢借給誰都滿足不了他們的需求;不安全
方案二
我將30借給A;A滿足後將所有錢歸還,此時我手中剩餘50;
然後將50借給B;B滿足後將所有錢歸還,此時我手中剩餘70;
然後我在將20借給T;T滿足後將所有錢歸還;此時手中剩餘100;
這樣都達到了B、A、T的需求;安全序列為:A->B->T(不唯一,滿足即可)。我們稱這樣一個序列為安全序列。

在這裡插入圖片描述
如果系統處於安全狀態,就一定不會發生死鎖。如果系統進入不安全狀態,就可能發生死鎖。(處於不安全狀態未必死鎖,但死鎖一定處於不安全狀態)

在這裡插入圖片描述

剩餘資源數:(3,3,2)
第一次分配:P1,滿足;釋放後剩餘:(5,3,2)
第二次分配:P3,滿足;釋放後剩餘:(7,4,3)
第三次分配:P0,滿足;釋放後剩餘:(7,5,3)
第四次分配:P2,滿足;釋放後剩餘:(10,5,5)
第五次分配:P4,滿足;釋放後剩餘:(10,5,7)
安全序列:P1–P3–P0–P2–P4(不唯一)

銀行家演算法實現步驟

在這裡插入圖片描述

銀行家演算法的實現

在這裡插入圖片描述