天天看點

程序(第二部分)

程序的死鎖。

隻有給一個程序配置設定滿了五個資源它才能夠正常地運作完。那麼系統要有多少個這樣的資源才有可能不發生死鎖呢?答案是13個。為什麼不是15個?如果有13個就絕對不可能發生死鎖了。

看一下圖:

程式(第二部分)

藍色的部分就表示還未配置設定資源的部分。綠色是12個。倘若系統有13個資源,則把剩餘的一個資源放置在任何一個藍色塊就能夠滿足。

程式(第二部分)

解決死鎖的政策:

程式(第二部分)

如果C程序得不到它需要的5個資源,那麼C程序就不會運作.是以C程序一開始就等待,一直要等到它資源配足的時候它才會運作,這樣子效率就降低了.

程式(第二部分)

判斷它是不是安全序列方法非常簡單.模拟這些順序來執行這些程序就能夠判斷,如果說程序都能夠執行完畢,那麼系統就是安全的.不能夠執行完畢,那系統就是不安全.做這個工作之前,我們要計算一個資料出來.現在已經配置設定了這麼多資源出去了,系統現在剩餘的資源是多少?

R1現有的資源數量:9-1-2-2-1-1=2.

程式(第二部分)

現在需要判斷一個序列是否可以執行,那麼我們就需要了解每一個程序現在還需要多少資源?是以我們求一下還需資源的數量.

求出還需資源數的清單:

程式(第二部分)

拿這個清單和系統還有的資源來比較.如果說系統現在剩餘的資源個數不能夠滿足它還需的資源個數,那麼它肯定無法完成.

程式(第二部分)

這一步可以配置設定給P2足夠數量的資源.

C選項是不是也是安全序列呢?

由于現有的資源數量比所需的資源數量要多,是以P2能夠正常運作,标記為true.系統的資源數不滿足P1的要求,是以P1不能夠正常運作完畢.這樣就說明了這個序列不是一個安全序列.

銀行家算法就講完了.