是什麼
每個程序無限等待被該組程序中另一程序占有的資源;與之對比,活鎖為先加鎖再輪詢不阻塞不推進,饑餓是由于資源配置設定政策如優先級導緻得不到資源
死鎖條件:
- 互斥使用(資源獨占)
- 占有且等待(部分配置設定)
- 不可搶占(不可剝奪)
- 循環等待(程序等待環路)
死鎖定理
在資源配置設定圖中,無環路必無死鎖,有環路可能有死鎖,有環且資源類隻包含一個執行個體必有死鎖
死鎖預防,破壞死鎖必要條件
- 獨占轉為共享資源
- 一次性申請和配置設定
- 主動釋放部分配置設定
- 作業系統幫助搶占
- 資源有序配置設定法(資源按熱度編号,程序按資源号增序請求)
死鎖避免
對程序發出的每一個能滿足的資源申請進行動态檢查,根據配置設定後系統是否為不安全狀态(死鎖)決定是否配置設定
解決死鎖
- 鴕鳥算法(不考慮死鎖)
- 死鎖預防(靜态配置設定)
- 死鎖避免(動态評估)
- 死鎖檢測和解除
安全序列
程序式列中任意程序,它還需要的資源不超過目前系統剩餘資源與它之前的所有程序占有資源的和;此時系統為安全狀态,一定無死鎖,若不存在任何安全序列則為不安全狀态,一定導緻死鎖