第五章 死鎖
1.死鎖的產生
領會
死鎖的定義
在多道程序系統中,一組進程中的每一個進程均無限期地等待被該組進程中的另一個進程所佔有且永遠不會釋放的資源
死鎖產生的原因
競爭資源,系統資源在分配時出現失誤,進程間對資源的相互爭奪所造成僵局
多道程序運行時,進程推進順序不合理
死鎖產生的必要條件
互斥條件
不可剝奪條件
請求和保持條件
循環等待條件
2.死鎖預防
領會
死鎖預防的概念
在任何系統操作前,事先評估系統的可能情況,嚴格採取措施使得死鎖的四個必要條件不成立
資源的靜態分配策略
一個進程在申請新資源的要求不能立即得到滿足時,便處於等待狀態。而一個處於等待狀態的進程的全部資源可以被剝奪
資源的有序分配法
將系統中所有資源順序編號,較爲緊缺、稀少的資源的編號較大。一個進程只能得到編號較小的資源,才能申請編號較大的資源;釋放資源時,硬按編號遞減的次序進行
3.死鎖避免
綜合應用
死鎖避免的概念
系統對進程發出的每一個系統能夠滿足的資源申請進行動態檢查,並根據檢查結果決定是否分配資源;如果分配後系統可能發生死鎖,則不予分配,否則予以分配
安全狀態與安全序列
若果操作系統能保證所有的進程在有限時間內得到需要的全部資源,則稱系統處於“安全狀態”
銀行家算法
4.死鎖的檢測與解除
簡單應用
死鎖檢測的時機
一次資源分配後
每次調度後
定時器定時運行檢測
某個進程長期位於阻塞態或阻塞進程過多時
死鎖的解除方法
剝奪資源
撤銷進程
5.資源分配圖
簡單應用
資源分配圖
P爲進程集合
R爲資源集合
資源分配圖
死鎖定理
如果資源分配圖中沒有環路,則系統沒有死鎖
如果資源分配圖中出現了環路,可能存在死鎖
如果處於環路中的每個資源類中均只包含一個資源實例,則環路的存在即意味着死鎖的存在
如果處於環路中的每個資源類中資源實例的個數不全爲1,則環路的存在是產生死鎖的必要條件而不是充分條件
資源分配圖化簡方法
在資源分配圖中,找出一個既非等待又非鼓勵的進程節點P,由於Pi可獲得它所需要的全部資源,且運行完後釋放它所佔用的全部資源,故可在資源分配圖中消去Pi所有的申請邊和分配邊,使之成爲既五申請邊又無分配邊的孤立結點
將Pi所釋放的資源分配給申請它們的進程,即在資源分配圖中將這些進程對資源的申請邊改爲分配邊
重複前兩步驟,直到找不到符合條件的進程結點
6.哲學家就餐問題
簡單應用
同時最多隻能有4個人進餐