軟考(軟件設計師)--操作系統基礎知識之進程管理(三)

一、死鎖

指多個進程在運行過程中因爭奪資源而造成的一種僵局,當進程處於這種狀態時,若無外力作用,他們都將無法再向前推進。

二、產生死鎖原因

  1. 競爭資源
  2. 進程間推進順序非法

競爭資源引起進程死鎖
可把系統中的資源分爲兩類:

  1. 可剝奪性資源:(比如CPU)
  2. 不可剝奪資源:(指的就是不可剝奪資源)

產生死鎖的必要條件:

  1. 互斥條件
  2. 請求和保持條件
  3. 不剝奪條件
  4. 環路等待條件

互斥條件:
進程訪問的時臨界資源,即在一段時間內某資源由一個進程佔用,如果此時有其它進程請求該資源,則請求者只能等待,知道佔有該資源的餓進程用完釋放。
請求和保持條件
一進程在請求新的資源的同時,保持對己分配資源的佔有。
不剝奪條件
進程已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完由自己釋放。
環路等待條件
指在發生死鎖時,必然存在一個進程–資源的環形鏈。

三、處理死鎖的基本方法

  1. 預防死鎖
  2. 避免死鎖
  3. 檢測死鎖
  4. 解除死鎖

預防死鎖:
是一種建檔的餓直管的事先預防方法。該方法是通過設置某些限制條件,去破壞產生死鎖的四個必要條件的一個或幾個,來預防發生死鎖。

  • 摒棄“請求和保持”條件
  • 摒棄“不剝奪”條件
  • 摒棄“環路等待”條件

避免死鎖:
同樣屬於事先預防的策略,這種方法不是預先加上各種限制條件以預防產生死鎖的可能性,而是用某種方法去防止系統進入不安全狀態,使死鎖不至於最終發生。
(銀行家算法避免死鎖)記住

檢測死鎖:
並並不需實現採取任何限制性措施,也不必檢查系統是否已經進入不安全區。
此方法允許系統在運行過程中發生死鎖,但可通過系統所設置的檢測機構,及時的檢測出死鎖的發生,並準確的確定與死鎖有關的進程和資源;然後採取實當的措施,從系統中將已發生的死鎖清除掉。

解除死鎖:
是與死鎖檢測配套的一種措施。當檢測到系統中已發生死鎖時,需將進程從死鎖狀態在中解脫出來。

  • 常用的實施方法時撤銷或掛起一些進程,以便回收一些資源,再將這些資源分配給已處於阻塞狀態的進程,使之轉爲就緒狀態,以繼續運行。
  • 死鎖的檢測與解除措施,有可能使系統獲得較好的餓資源利用率和吞吐量,但在實際上南多也最大。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章