解決死鎖的方法


1.解決死鎖主要方法如下:

(1)不考慮此問題,樂觀的角度,鴕鳥算法

(2)不讓死鎖發生:

    ①死鎖預防。

      靜態策略,通過設計合適的資源分配算法,不讓死鎖發生

    ②死鎖避免

      動態策略,以不讓死鎖發生為目標,跟蹤並評估資源分配過程,根據評估結果決策是否分配

(3)讓死鎖發生:死鎖的檢測與解除

2.死鎖預防的具體方法:主要是破壞產生死鎖的四個必要條件中的任何一個條件。

(1)破壞“互斥使用/資源獨占”條件

  使用資源轉換技術,將獨占資源變為共享資源

(2)破壞“占有且等待”條件

①方案1:每個進程在運行前必須一次性的申請它所要求的全部資源,且僅當該進程所要的資源均可滿足時才一次性的分配。

    資源利用率低,“飢餓”現象

②在允許進程動態申請資源的前提下規定,一個進行在申請新資源,且不能立即得到滿足,必須釋放已占有的全部資源。若需要再重新申請

(3)破壞“不可搶占”條件

可以通過操作系統搶占這一資源(根據進程的不同優先級)

局限性:適用於狀態易於保存和恢復的資源,如CPU(搶占式的調度算法),內存(頁面置換算法)

(4)破壞“循環等待”條件

通過定義資源類型的線性順序實現

方案:資源有序分配法。(如哲學家就餐問題)

     也就是把資源中所有的資源編號,進程在申請資源時,必須嚴格按照資源編號的遞增次序進行,否則操作系統不予分配。(資源使用的頻繁性?)

3.死鎖避免的方法

(1)對不同分區進行不同的處理,左下可同時分配資源;右下區域可能會產生死鎖,應該先分配P,釋放后再分配Q;左上同理;右上區域時會產生死鎖現象,不予分配資源。對可能發生死鎖和可能產生死鎖的不予分配資源,否則(安全狀態)分配資源。

(2)安全狀態是指每個進程Pi以后還需要的資源量不超過系統當前剩余資源量與所有進程Pj當前占有資源量之和。

4.死鎖的檢測與解除

(1)允許死鎖發生,但是操作系統會不斷監視系統進展情況,判斷死鎖是否真的發生。(進程等待時檢測,定時檢測,系統資源利用率下降)

(2)一旦死鎖發生,采用專門的措施,解除死鎖並以最小的代價恢復系統運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM