2.4.1 死鎖的基本概念——作業系統筆記

Yuyakeee發表於2020-11-15


1. 什麼是死鎖

  • 各程式互相等待對方手裡的資源,導致各程式都阻塞,無法向前推進的現象。

2. 死鎖產生的必要條件

  • 產生死鎖必須同時滿足以下四個條件
  • 互斥條件:只有對必須互斥使用的資源的爭搶才會導致死鎖。
  • 不剝奪條件:程式所獲得的資源在未使用完之前,不能被剝奪
  • 請求和保持條件:程式已經保持了至少一個資源,但又提出了新的資源請求,而該資源又被其他程式佔有,此時請求程式被阻塞,但又對自己已有的資源保持不放。
  • 迴圈等待條件:存在一種程式資源的迴圈等待鏈,每一個程式已獲得的資源同時被下一個程式所請求。

3. 什麼時候會發生死鎖

  1. 對系統資源的競爭,各程式對不可剝奪的資源的競爭。
  2. 程式推進順序非法,請求和釋放資源的順序不當,也同樣會導致死鎖。
  3. 訊號量的使用不當也會造成死鎖。

4. 死鎖的處理策略

  1. 預防死鎖:破壞死鎖產生的必要條件。
  2. 避免死鎖:用某種方式防止系統進入不安全狀態,從而避免死鎖(銀行家演算法)
  3. 死鎖的檢測和解除:允許死鎖的發生,不過作業系統會負責檢測出死鎖的發生,然後才去某種措施解除死鎖。

相關文章