Linux 進程管理 ————–死結

來源:互聯網
上載者:User

死結
在多道程式系統中,多個進程式並發執行,共用系統資源,從而提高了資源使用率和系統輸送量,但可能發生一種危險----死結。所謂死結,是指多個進程因競爭資源而形成的一種僵局,若無外力作用,這些進程都將永遠不能再向前推進。
(1)產生死結的原因和必要條件
A、產生死結的原因
產生死渙的主要原因可歸結為以下兩點
(1)競爭資源
(2)進程推進順序不當。

B、產生死結的必要條件
(1)互斥條件
一個資源在一段時間內只能被一個進程所使用,具有排它性。
(2)請求和保持條件
一個進程在請求新資源而阻塞時,對已獲得資源又保持不放。
(3)不剝奪條件
進程已獲得的資源,在未使用完之前不能被剝奪,只能在使用完時由自己釋放。
(4)環路等待條件
在發生死結時,必然存在一個進程--------資源的環形鏈.即進程集合{P1,p2,....,Pn}中的P1正在等待P2佔用的資源,P2正在等待P3佔用的資源,....,Pn正在等待P1佔用的資源.
只要同時具備上述4個必要條件,系統就會發生死結,只要上述條件之不一滿足,系統就不會發生死結.
C、處理死結的方法
由於死結狀態的出現會給整個系統帶來嚴重的後果,所以如何解決死結問題引起了人們的普遍關注。目前常用的方法有以下三種:
(1)預防死結
為了使系統中不發生死結現象,在系統設計初期即選取擇一些限制條件,來破壞產生死結的四個必要條件之一或其中幾個。這樣,系統中就不會出現死結現象。這種方法對預防死結的發生非常有效,但有可能降低系統資源的利用率。
(2)避免死結
由於一方面預防死結的方法會降低系統資源使用率,另一方面死結的必要條件是存在示必就一定會使系統發生死結,因此為提高系統資源的利用率,可採用避免死結。避免死結並不嚴格限制死結必要條件的存在,而是在資源的動態分配過程中,使用某種方法去防止系統進入不安全狀態,從而避免死結的緊終出現。
(3)檢測和解除死結
由於死結產生的機率總是比較小的,所以在一些相對簡單的系統中,為節省預防或避免死結中所增加的系統開銷,系統中允許出現死結狀態。在這種系統中,專門設定了一個檢測機構,可以隨時檢測出死結的發生,並能確定與死結有關的進程和資源,然後採用適當的方法解除系統中的死結狀態。

常用的解除死結的方法有兩種:一是強制性地撤銷一些死結進程,並剝奪它們的資源給其他的時程;另一種是使用一個有效掛起和解除掛起機構來掛起一些進程,以便從被掛起進程中剝奪一些資源,用來解除死結。

預防死結
(1)打破“請求和保持”條件
打破“請求和保持”條件,即把進程運行中所要求的所有資源在進程開始動行之前,一次性地分配給進程,只要有一種資源不能滿足,該進程就必須等待。這樣,進程在運行過程中就不再需要新的資源,這種方法又稱為預先靜態分配法。
(2)打破“不剝奪”條件
打破“不剝奪”條件,即強迫那些請求新資源而沒有立即得到滿足的進程釋放它已保持的其他資源。這意味著一個進程在運行過程可以暫時釋放已佔有的資源,即允許其他進程剝奪使用該資源,從而破壞了“不剝奪”條件的出現。
(3)打破“環路等待”條件
死結產生時,一定存在一種進程和資源的迴圈鏈。打破“環路等待”條件就是在資源的分配過程中,對資源的請求做出某種限制,使環路不可能出現。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.