(操作系統原理)死鎖原理

進程-資源分配圖:

設一個計算機系統中有許多類資源和許多個進程。每一個資源類用一個方框表示,方框中的黑圓點表示該資源類中的各個資源,每個進程用一個圓圈來表示,用有向邊來表示進程申請資源和資源被分配的情況。約定Pi→Rj 爲請求邊,表示進程Pi 申請資源類Rj 中的一個資源得不到滿足而處於等待Rj 類資源的狀態,該有向邊從進程開始指到方框的邊緣,表示進程Pi 申請Rj 類中的一個資源。反之Rj→Pi 爲分配邊,表示Rj 類中的一個資源已被進程Pi 佔用,由於已把一個具體的資源分給了進程Pi,故該有向邊從方框內的某個黑圓點出髮指向進程。


檢測系統是否處於死鎖狀態:

(1)如果進程-資源分配圖中無環路,則此時系統沒有發生死鎖。
(2)如果進程-資源分配圖中有環路,且每個資源類中僅有一個資源,則系統中發生了死鎖,環路中的進程便爲死鎖進程。
(3)如果進程-資源分配圖中有環路,且涉及的資源類中有多個資源,則環路的存在未必就會發生死鎖。如果能在進程-資源分配圖中找出一個既不阻塞又非獨立的進程,它在有限的時間內有可能獲得所需資源類中的資源繼續執行,直到運行結束,再釋放其佔有的全部資源。相當於消去了圖中此進程的所有請求邊和分配邊,使之成爲孤立結點。接着可使進程-資源分配圖中另一個進程獲得前面進程釋放的資源繼續執行,直到完成又釋放出它所佔用的所有資源,相當於又消去了圖中若干請求邊和分配邊。如此下去,經過一系列簡化後,若能消去圖中所有邊,使所有進程成爲孤立結點,則該圖是可完全簡化的;否則則稱該圖是不可完全簡化的。系統爲死鎖狀態的充分條件是:當且僅當該狀態的進程-資源分配圖是不可完全簡化的。

該充分條件稱爲死鎖定理。

發佈了28 篇原創文章 · 獲贊 7 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章