1. 程式人生 > >解決死鎖四大方式

解決死鎖四大方式

優先 方式 限制 四大 直接 方法 其它 檢測 可用

解決死鎖的基本方法:
預防死鎖:
資源一次性分配:(破壞請求和保持條件)
可剝奪資源:即當某進程新的資源未滿足時,釋放已占有的資源(破壞不可剝奪條件)
資源有序分配法:系統給每類資源賦予一個編號,每一個進程按編號遞增的順序請求資源,釋放則相反(破壞環路等待條件)

避免死鎖:
預防死鎖的幾種策略,會嚴重地損害系統性能。因此在避免死鎖時,要施加較弱的限制,從而獲得 較滿意的系統性能。由於在避免死鎖的策略中,允許進程動態地申請資源。因而,系統在進行資源分配之前預先計算資源分配的安全性。若此次分配不會導致系統進入不安全狀態,則將資源分配給進程;否則,進程等待。其中最具有代表性的避免死鎖算法是銀行家算法。

檢測死鎖
首先為每個進程和每個資源指定一個唯一的號碼;

之後我們可以建立一個有向圖:(類似二分圖)

如果a持有b資源,那麽從A向B構造一個有向邊,如果a要使用b資源,b向a構造一個有向邊,如果這個圖出現了一個環,那麽二分圖構造失敗,會發生死鎖





解除死鎖:
當發現有進程死鎖後,便應立即把它從死鎖狀態中解脫出來,常采用的方法有:
剝奪資源:從其它進程剝奪足夠數量的資源給死鎖進程,以解除死鎖狀態;
撤消進程:可以直接撤消死鎖進程或撤消代價最小的進程,直至有足夠的資源可用,死鎖狀態.消除為止;所謂代價是指優先級、運行代價、進程的重要性和價值等。

解決死鎖四大方式