關於死鎖的考點總結(死鎖的定義、產生原因、四個必要條件、如何避免)

一、死鎖的定義

死鎖是一種由於多個進程競爭資源陷入的一種僵局,若無外力作用,所有進程都將無法向前推進。


二、死鎖的產生原因

  1. 競爭資源
  2. 進程間推進順序非法

三、死鎖的四個必要條件

  1. 互斥條件
  2. 不可剝奪條件
  3. 保持並請求條件
  4. 環路等待條件

四、如何避免死鎖

  1. 同一順序訪問對象 (避免出現循環)
  2. 避免事務中的用戶交互 (減少持有資源的時間,較少鎖競爭)
  3. 保持事務簡短並處於一個批處理中 (減少持有資源的時間)
  4. 使用較低的隔離級別 (使用較低的隔離級別(例如已提交讀)比使用較高的隔離級別(例如可序列化)持有共享鎖的時間更短,減少鎖競爭)
  5. 使用基於行版本控制的隔離級別

銀行家算法是一個避免死鎖的著名算法:

當一個進程申請使用資源的時候,銀行家算法通過【先 試探 分配給該進程資源】,然後【通過安全性算法判斷分配後的系統是否處於安全狀態】,若不安全則試探分配作廢,讓該進程繼續等待。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章