目錄死鎖
what
why形成原因:
產生死鎖的四個必要條件:
how預防死鎖
避免死鎖
檢測死鎖
解除死鎖(恢復)
參考《作業系統精髓與設計原理》
多程序(執行緒)在執行過程中,因爭奪資源而造成的一種互相等待的現象,若無外部介入,它們都將無限等待下去。
客觀因素,系統資源不足,如:兩個程序都申請記憶體資源;
主觀因素,程序(執行緒)執行順序不當、資源分配不當。
互斥:任意時刻乙個資源只能給乙個程序使用;
不可剝奪:程序已獲得資源,在未使用完之前,不能強行剝奪,只能在使用完成後由程序自己釋放;
請求保持:當程序因請求資源而阻塞時,對已獲得的資源保持不放;
迴圈等待:環路中每乙個程序所占有的資源同時被另乙個程序申請,形成乙個環路,如下圖所示。
事實上迴圈等待的成立蘊含了前三個條件的成立,可以通過破壞上述任意乙個條件的成立來預防死鎖發生。
通常程式設計要求滿足以上條件是正常的,如:為確保資料庫的一致性和完整性,互斥是非常有必要的;程序間也不能隨意進行資源的搶占。
間接預防:
直接預防:
由於在避免死鎖的策略中,允許程序動態地申請資源。因而,系統在進行資源分配之前預先計算資源分配的安全性。若此次分配不會導致系統進入不安全的狀態,則將資源分配給程序;否則,程序等待。其中最具有代表性的避免死鎖演算法是銀行家演算法。
見死鎖檢測演算法。
一旦檢測出死鎖,就應立即釆取相應的措施,以解除死鎖。
死鎖解除的主要方法有:
取消所有死鎖程序(最常用方法);
回滾重啟所有程序(原來的死鎖可能再次發生);
連續取消死鎖程序直到不再存在死鎖(每終止乙個程序就需要重新檢測死鎖);
連續搶占資源直到不再存在死鎖(每搶占一次資源就需要重新檢測死鎖);
方法3.4基於以下原則選擇取消程序或搶占程序資源
執行完所需時間、程序優先順序最低、已占用系統資源量、處理器消耗時間最少、產生的輸出最少。
作業系統之死鎖
一組程序中,每個程序都無限等待被該組程序中另一程序所占有的資源,因而永遠無法得到的資源,這種現象稱為程序死鎖,這一組程序就稱為死鎖程序,如果死鎖發生,會浪費大量系統資源,甚至導致系統崩潰。死鎖產生的必要條件 產生死鎖必須同時滿足以下四個條件,只要其中任一條件不成立,死鎖就不會發生。死鎖預防 防止死鎖...
作業系統之死鎖
通俗的講,死鎖是指多個程序因競爭資源而造成的一種僵局 互相等待 無外力作用,這些程序都將無法向前推進。死鎖產生的原因如下 1.系統資源的競爭 2.程序推進順序非法 死鎖產生的必要條件 產生死鎖必須同時滿足以下四個條件,只要其中乙個條件不成立,死鎖就不會發生 1.互斥條件 程序要求對所分配的資源進行排...
作業系統之死鎖
目錄 1.必要條件 2.處理方法 3.鴕鳥策略 4.死鎖檢測與死鎖恢復 1 每種型別乙個資源的死鎖檢測 2 每種型別多個資源死鎖檢測 3 死鎖恢復 5.死鎖預防 1 破壞互斥條件 2 破壞占有和等待條件 3 破壞不可搶占條件 4 破壞環路等待 6.死鎖避免 1 安全狀態 2 銀行家演算法 主要有以下...