熱點推薦:
您现在的位置: 電腦知識網 >> 電腦常識 >> 正文

系統進程死鎖的預防措施有什麼

2013-11-11 15:08:04  來源: 電腦常識 

  預防死鎖的根本辦法就是要使死鎖產生的個必要條件之一不存在下面來分析一下破壞這些條件的可能性

  破壞互斥條件

  破壞互斥條件即允許多個進程同時訪問資源由於多數資源的必須互斥訪問這一固有特性不能改變因此死鎖的預防通過破壞這個必要條件實現在很多場合是行不通的例如打印機資源必須互斥使用否則幾個進程同時使用每個進程各打印一行這種輸出信息的方式顯然是不能被用戶接受的

  破壞占有和等待條件

  采用資源靜態分配法可破壞這一條件該方法是指在進程運行前一次性地_請分配它運行所需的全部資源若系統有足夠的資源分配給某一進程則一次性地將其所需資源分配給該進程這樣在進程運行期間便不會再提出任何資源請求從而使等待條件不成立如果分配時有一種資源要求不能滿足則進程需要的其他資源也先不分配給進程從而避免進程在等待期間占用任何資源破壞了占用條件從而避免死鎖的發生

  該方法控制簡單且容易實現但由於進程運行期間對所需資源的全部占用使得某些使用時間很短的資源被長時間占用這樣會嚴重影響系統資源的充分利用導致資源利用率降低同吋也影響到未獲得全部資源的進程推遲運行

  破壞不剝奪條件

  采用剝奪式控制方法可以破壞該條件該方法是使一個已保持了某些資源的進程由於新的資源要求目前得不到滿足它必須先暫時釋放巳保持的所有資源(一種剝奪式)然後去等待以後再一起向系統提出巾請這樣也能防止死鎖這種方法實現起來相對W難為了保護進程自動放棄資源的現場以及後來的再次恢復需要付出高昂的代價並且這種方法只適用於處理機和存儲器資源對其他資源此法不宜使用

  破壞循環等待條件

  采用資源順序分配法可破壞該條件這種分配方法的基本思想是:把系統的全部資源分成多個層次一個進程得到某一層的一個資源後它只能再_請較高一層的資源;當一個進程要釋放某層的一個資源時必須先釋放所占有的較高層的資源;當一個進程獲得了某一層的一個資源後它想再申請該層中的另一個資源就必須先釋放在該層中巳占有的資源或者說進程釋放資源的順序是按照中請資源的相反順序進行的這樣可以預防循環等待現象的發生因此不會發生死鎖使用該方法要特別注意的問題是對資源所處層次的安排在通常情況下把各進程經常用到的比較普遍的資源安排在較低的層次上把重要且相對匮乏的資源安排在較高的層次上以便實現對各資源的最大限度的利用該方法相對於前面介紹的方法在資源利用率和系統吞吐量上都有明顯的改善但也存在一些缺陷

  ()低層次的資源必須在進程請求分配髙層次的資源之前提前申請這對於暫時不需使用的低層次資源來說會因空閒等待而產生浪費

  ()各類設備的資源層次一經設定便不能經常隨意改動這就限制了新類型設備的增加

  ()各資源的層次是按照大多數進程使用資源的順序設置的對於資源使用與此層次相閃配的進程資源能得到有效的利用否則資源的浪費現象將仍然存在


From:http://tw.wingwit.com/Article/Common/201311/6233.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.