作業系統面試 死鎖(三) 死鎖檢測和死鎖恢復

2021-07-13 22:57:29 字數 665 閱讀 8637

本文是對作業系統概念(第七版)——死鎖的學習總結,不足之處,歡迎批評指正。

本文討論的兩塊內容是死鎖檢測和死鎖恢復。

1、死鎖檢測

首先針對每種資源型別只有乙個例項的情況。

該演算法使用資源分配圖的乙個變種,稱為等待圖。從資源分配圖中,刪除所有資源型別的節點,合併合適邊,就可以得到等待圖。

合併的過程如下:如果pi指向資源rj,而rj右指向pk,那麼刪除節點rj之後,直接得到pi->pk這樣的結果。當前僅當等待圖中有乙個環,系統中存在死鎖。檢測環的演算法複雜度為o(n^2)

第二種情況是每種資源型別還有多個例項的情況。

如果對某個i,finish[i]=false,那麼說明系統處於死鎖狀態,且程序i死鎖,時間複雜度為o(m*n^2)。

2、死鎖恢復

打破死鎖有兩種方法:

(1)簡單地終止乙個或多個程序以打破迴圈等待。——程序終止

(2)從乙個或多個死鎖程序那裡搶占乙個或多個資源。——資源搶占

程序終止有以下兩中方法:

(i)終止所有死鎖程序。

(ii)一次只終止乙個程序直到取消死鎖迴圈為止。

如果選擇資源搶占,那麼將必須考慮三個問題:

(i)選擇乙個犧牲品

(ii)回滾

(iii)飢餓(在代價因素中加上回滾次數,回滾的越多則越不可能繼續被作為犧牲品)

作業系統面試(死鎖)

外鏈轉存失敗 img vs8tclxs 1562162502867 主要有以下四種方法 把頭埋在沙子裡,假裝根本沒發生問題。因為解決死鎖問題的代價很高,因此鴕鳥策略這種不採取任務措施的方案會獲得更高的效能。當發生死鎖時不會對使用者造成多大影響,或發生死鎖的概率很低,可以採用鴕鳥策略。大多數作業系統,...

作業系統 死鎖和死鎖處理策略

本文在作業系統的角度梳理下死鎖和作業系統的死鎖處理策略。在併發環境下,各程序因競爭資源而造成的一種互相等待對方手裡的資源,導致各程序都阻塞,都無法向前推進的現象。發生死鎖後,若無外力干涉,則這些程序都無法向前推進。互斥條件 不剝奪條件 請求和保持條件 迴圈等待條件 對不可剝奪資源的不合理分配,可能導...

作業系統中提前檢測死鎖和死鎖解除的方法

以上小節討論了死鎖預防和死鎖避免的幾種方法,但是這些方法都比較保守,並且都是以犧牲系統效率和浪費資源為代價的,這恰恰與作業系統設計目標相違背。假如系統為程序分配資源時,不採取任何限制性措施來避免和預防死鎖,減少因避免和預防死鎖策略帶來的開銷,同時本著提高資源利用率的原則分配資源,但作業系統在執行過程...