死鎖的概念 處理方法

2021-08-04 20:39:32 字數 1812 閱讀 1882

1 產生死鎖的原因

(1)競爭資源。程序競爭數量不足的資源。

(2)程序間推進順序非法。程序請求和釋放資源的順序不當。

2 產生死鎖的必要條件

(1)互斥條件

程序對分配到的資源進行排他性使用,即在一段時間內某資源只由乙個程序占用。

(2)請求和保持條件

程序在保持了至少乙個資源的時候提出了新的資源請求,但該資源已被其它程序占有,而自己又對已經獲得的資源不釋放。

(3)不剝奪條件

程序已獲得的資源,在未使用完之前,不能被剝奪。

(4)環路等待條件

發生死鎖時存在乙個程序—資源的環形鏈。程序集合中,p0等待p1占用的資源,p1等待p2占用的資源,......,pn等待p0占用的資源。

3 處理死鎖的方法

3.1 預防死鎖

設定某些限制條件,破壞產生死鎖的四個必要條件中的乙個或幾個條件。

(1)摒棄「請求和保持條件」條件

系統規定所有程序在開始執行之前,都必須一次性地申請其在整個執行過程所需的全部資源

缺點:嚴重浪費資源,使程序延遲執行。

(2)摒棄「不剝奪」條件

當乙個已經保持了某些資源的程序,再提出新的資源請求而不能立即得到滿足時,必須釋放它保持了的所有資源,待以後需要時再重新申請。

缺點:實現複雜,要付出很大代價。資源的釋放會造成前段工作實效。

(3)摒棄「環路等待」條件

系統將所有資源按型別進行線性排隊,並賦予不同的序號。如:輸入機1,印表機2,磁帶機3,磁碟4。所有程序對資源的請求必須嚴格按照資源序號遞增的次序提出

缺點:系統中資源的序號必須相對穩定,這就限制了新型別裝置的增加。另外,程序使用各類資源的順序可能和系統規定的申請順序不同,造成對資源的浪費。

3.2 避免死鎖

防止系統進入不安全狀態,從而避免發生死鎖。

安全狀態:

存在一種程序順序 ,系統能按照此順序(安全序列)來為每個程序pi分配其所需要的資源,直至滿足每個程序對資源的最大需求,使每個程序都可以順利完成。

不安全狀態:

不存在這樣的安全序列。

銀行家演算法:

當程序pi發出資源請求後,系統試探著把資源分配給pi,並判斷分配後的狀態是否為安全狀態。如果安全,才正式將資源分配給pi,如果不安全,則恢復原來的資源分配狀態,讓程序pi等待。

判斷安全狀態的方法:

從程序集合中找到乙個能滿足其資源需求的程序,給它分配資源,等其完成後可**其擁有的資源。然後再不斷迴圈。若最後所有程序都可以順利執行完成,則當前狀態為安全狀態,否則為不安全狀態。

3.3 檢測死鎖

允許系統發生死鎖,但可以檢測出死鎖的發生。

資源分配圖

e=是資源請求邊,由程序pi指向資源rj,它表示程序pi請求乙個單位的資源rj。e=是資源占有邊,由資源rj指向程序pi,它表示程序pi占有乙個單位的資源rj。

每次找出在占有和請求的約束下,能順利完成的程序pi,消去其所有的請求和占有資源的邊。若最後所有的程序都成為孤立點,則當前狀態為安全狀態;否則為不安全狀態。

3.4 解除死鎖

當檢測到系統發生死鎖時,撤銷或掛起一些程序,以便**一些資源,再將這些資源分配給處於阻塞狀態的程序,使之轉為就緒狀態,繼續執行。

程序死鎖的概念,必要條件,處理方法

概念 1 多個併發程序因爭奪系統資源而產生相互等待的現象。2 是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當程序處於這種僵持狀態時,若無外力作用,它們都將無法 再向前推進 原理 當一組程序中的每個程序都在等待某個事件發生,而只有這組程序中的其他程序才能觸發該事件,這就稱這組程序發生了死鎖。產...

處理死鎖和預防死鎖的方法

目前,處理死鎖的方法可歸結為以下四種 1 預防死鎖。這是一種較為簡單和直觀的事先預防的方法。該方法是通過設定某些限制條件,去破壞產生死鎖的四個必要條件中的乙個或幾個條件,來預防發生死鎖。預防死鎖是一種較易實現的方法,已被廣泛使用。但由於所施加的限制條件往往太嚴格,因而可能導致系統資源利用率和系統吞吐...

OS 死鎖的處理方法

將死鎖比喻成火災,處理死鎖的方法同樣可以模擬處理火災,從而將處理死鎖分為預防 避免 檢測與恢復四個方面。預防的目的就是從源頭杜絕死鎖的發生,確保系統永遠都不會進入死鎖狀態。針對coffman的死鎖發生的4個必要條件,從這4個必要條件入手,可以得出預防死鎖的具體方法。1.破壞互斥條件 如果乙個資源不會...