操作系統---死鎖的檢測和解除


死鎖的檢測和解除

資源分配圖

資源分配圖是一種數據結構 :

graph LR A[數據分配圖] -->B[兩種結點] A-->C[兩種邊] B-->D[進程結點:對應一個進程] B-->E[資源結點:對應一類資源,一類資源可能有多個] C-->F[進程結點->資源結點:表示進程想申請幾個資源<每條邊代表一個>] C-->G[資源節點->進程結點:表示已經為進程分配了幾個資源<每條邊代表一個>]

如圖:

1591346986377

用資源分配圖判斷系統是否死鎖

方法 :

1591347046229

e.x.

沒有死鎖的資源分配圖 :

1591347095188

死鎖了的資源分配圖 :

1591347144597

死鎖的解除

資源剝奪法

掛起(暫時放在外存)某些 死鎖 進程, 並搶占它的資源, 讓這些資源分配給其他的死鎖進程, 注意需要防止被掛起的進程長時間得不到資源而飢餓

撤銷進程法

強制某些死鎖進程, 並剝奪這些進程的資源.

優點 : 實現簡單

缺點 : 代價大, 比如有些進程已經運行了很長時間甚至接近結束, 突然剝奪將功虧一簣

進程回退法

讓一個或多個死鎖進程回退到足以避免死鎖的地步

缺點 : 不太容易實現--系統需要記錄進程的歷史信息並設置還原點

可以根據 :

  • 進程優先級
  • 已執行多長時間
  • 還要多久能完成
  • 已經使用了多少資源

等方式決定對那個死鎖進程執行解除方案


ref : https://www.bilibili.com/video/BV1YE411D7nH?p=31


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM