3、死鎖的必要條件,以及預防
4、死鎖的避免(銀行家演算法)
5、死鎖的解除
死鎖是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去
死鎖通常源於多個進車鞥對於資源的搶奪,不僅對不可搶占資源進行爭奪時會產生死鎖,而且對可消耗性資源進行搶奪時,也會引起死鎖
現在有a,b兩個程序併發執行;每個程序都需要消耗甲,乙兩種資源(甲,乙為不可搶占資源),則會產生下面幾種情況:
一方先獲得所有資源
一方獲得一半的資源
現在有a,b,c三個程序併發執行;甲,乙,丙為三種可消耗資源
程序a能消耗甲資源,也能產生乙資源
程序b能消耗乙資源,也能產生丙資源
程序c能消耗乙資源,也能產生甲資源
如果程序a,b,c都先產生資源,然後再消耗資源,則能正常執行
程序a,b,c都同時先消耗資源,則每乙個程序都需要其他程序產生資源,將永遠地阻塞下去,進入僵持狀態,產生死鎖
現在有a,b兩個程序;甲,乙兩種資源,程序a,b都接收甲乙兩種資源,並釋放,才算是完成了整個流程。
合法的順序
程序a請求甲資源——>程序a請求乙資源——>程序a釋放甲資源——>程序a釋放乙資源——>程序b請求乙資源——>程序b請求甲資源——>程序b釋放乙資源——>程序b釋放甲資源
不合法的順序
程序a請求甲資源——>程序b請求乙資源,此時系統便處於了一種不安全狀態,繼續向前推薦,就可能發生死鎖。
產生死鎖必須同時達到四個必要條件,只要其中乙個不成立,死鎖就不會發生。
死鎖的預防是破壞產生死鎖的必要條件中的乙個。互斥是非共享裝置必須的,不能進行破壞。
1. 破壞「請求和保持」條件
第一協議:所有程序在執行之前,一次性地申請整個執行過程中的所需的所有資源
第二協議:乙個程序只獲得執行初期所需的資源後,開始執行,執行中,釋放已分配的,且已用畢的資源,請求新的資源。
2、破壞「不可搶占」條件
當乙個程序提出了新的資源的請求而不被滿足時,釋放自己已經保持的所有資源
3、破壞「迴圈等待」條件
對系統所有資源進行線性排序,規定每個程序必須按序號遞增的順序請求資源。
在資源的動態過程中,用某種方法防治系統進入不安全狀態,從而避免死鎖
銀行家演算法思路實現(死鎖避免)
死鎖 條件 預防 避免
條件 預防 死鎖的預防是保證系統不進入死鎖狀態的一種策略。它的基本思想是要求程序申請資源時遵循某種協議,從而打破產生死鎖的四個必要條件中的乙個或幾個,保證系統不會進入死鎖狀態。打破互斥條件。即允許程序同時訪問某些資源。但是,有的資源是不允許被同時訪問的,像印表機等等,這是由資源本身的屬性所決定的。所...
作業系統 死鎖的預防 避免和解除
預防死鎖 破壞環路等待條件是屬於死鎖的預防 該方法是通過設定某些限制條件,去破壞產生死鎖的四個必要條件的乙個或多個條件,來預防發生死鎖。易實現,被廣泛使用,但由於所施加的限制條件往往太嚴格,因而可能導致系統資源利用率和吞吐量降低。避免死鎖 典型的銀行家演算法是屬於死鎖的避免 避免死鎖是在資源的動態分...
作業系統 死鎖產生,預防,避免,檢測
死鎖產生的條件 死鎖的預防策略 死鎖避免的方法 死鎖檢測 說死鎖條件之前先要談乙個問題 可重用資源和可消耗資源 可重用資源 資源通常分為兩類 可重用資源和可消耗資源。可重用資源是指一次僅供乙個程序安全使用且不因使用而耗盡的資源。程序得到資源單元並使用後,會釋放這些單元供其他程序繼續使用。可重用資源的...