操作系统(三十一)死锁的检测和解除
生活随笔
收集整理的這篇文章主要介紹了
操作系统(三十一)死锁的检测和解除
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2.4.4 死鎖的檢測和解除
目錄
2.4.4 死鎖的檢測和解除
2.4.4.1 死鎖的檢測
2.4.4.2 死鎖的解除
2.4.4.1 死鎖的檢測
??死鎖檢測算法:用于檢測系統狀態,以確定系統中是否發生了死鎖。
? 對于死鎖檢測算法有一種專門的數據結構稱為資源分配圖:
一般用矩形表示資源結點,矩形中的小圓代表該類資源的數量。 死鎖檢測算法: ? (1) 在資源分配圖中,找出一個既不阻塞又非獨立的進程結點 Pi。在順利的情況下,Pi可獲得所需資源而繼續運行,直至運行完畢,再釋放其所占有的全部資源,這相當于消去pi所求的請求邊和分配邊,使之成為孤立的結點。 ? (2) p1釋放資源后,便可使 p2獲得資源而繼續運行,直至 p2完成后又釋放出它所占有的全部資源。 ??(3) 在進行一系列的簡化后,若能消去圖中所有的邊,使所有的進程結點都成為孤立結點,則稱該圖是可完全簡化的;若不能通過任何過程使該圖完全簡化,則稱該圖是不可完全簡化的。 S 為死鎖狀態的充分條件是:當且僅當 S 狀態的資源分配圖是不可完全簡化的。該充分條件被稱為死鎖定理。2.4.4.2 死鎖的解除
? 死鎖解除算法:當認定系統中已經發生了死鎖,利用該算法可將系統從死鎖狀態中解脫出來。 ? 死鎖的解除方法:1. 資源剝奪法。掛起(暫時放到外存上)某些死鎖進程,并搶占它的資源,將這些資源分配給其他的死鎖進程。但是應防止被掛起的進程長時間得不到資源而饑餓。
2. 撤銷進程法(或稱終止進程法)。強制撤銷部分、甚至全部死鎖進程,并剝奪這些進程的資源。這種方式的優點是實現簡單,但所付出的代價可能會很大。因為有些進程可能已經運行了很長時間,已經接近結束了,一旦被終止可謂功虧一簣,以后還得從頭再來。
3. 進程回退法。讓一個或多個死鎖進程回退到足以避免死鎖的地步。這就要求系統要記錄進程的歷史信息,設置還原點。
總結
以上是生活随笔為你收集整理的操作系统(三十一)死锁的检测和解除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6000字说透,如何做好产品「适老化」!
- 下一篇: 互联网日报 | 5月25日 星期二 |