死鎖的解除

當死鎖偵測程序偵測到死鎖存在時,應設法將其解除,讓系統從死鎖狀態中恢復過來。常用的解除死鎖的方法包括:

方法 說明 優點 缺點
立即結束所有進程 結束所有進程的執行,並重新啟動作業系統 簡單 損失大,之前的工作全部作廢
撤銷所有死鎖進程 撤銷涉及死鎖的所有進程,解除死鎖後繼續運行 能徹底破壞死鎖的循環等待條件 代價高,可能會導致一些重要進程被終止,進程已做的工作會遺失,恢復過程麻煩。
逐一撤銷死鎖進程 逐一撤銷涉及死鎖的進程,回收其資源,直至死鎖解除 靈活,可根據進程特性選擇撤銷順序 需判斷先撤銷哪些進程,可能比較複雜
搶奪資源 從涉及死鎖的進程中搶奪資源,重新分配給其他進程 能在不終止進程的情況下解除死鎖 可能導致其他進程的不穩定,需謹慎處理

逐一撤銷死鎖進程的條件選擇

逐一撤銷死鎖進程時,可以選擇符合下列條件的進程優先撤銷:

  • 消耗的 CPU 時間最少者

  • 產生的輸出最少者

  • 預計剩餘執行時間最長者
  • 佔有資源數最少者
  • 優先最低者

這種方法透過彈性選擇撤銷的進程,可以在盡量減少影響的情況下解除死鎖。