作業系統概念第七章死鎖筆記

2022-06-10 01:48:06 字數 2827 閱讀 3260

死鎖是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序

程序在使用資源之前必須先申請資源,在使用資源之後要釋放資源。程序所申請的資源數量不能超過系統所有資源的總量。

在正常操作模式下,程序只能按如下順序使用資源:

①申請:如果申請不能立即被允許,那麼申請程序必須等待,直到它獲得該資源為止。

②使用:程序對資源進行操作。

③釋放:程序釋放資源

下面四個同時滿足就會死鎖

系統資源分配圖是一種用於精確描述死鎖問題的有向圖,這個圖的點有兩類

表示方法:

程序pi已經申請了rj的乙個例項,並正在等待該資源:pi->rj,稱為申請邊

資源型別rj的乙個例項已經分配給了程序pi:rj->pi,稱為分配邊

申請邊和分配邊不同時存在與兩點之間,當該申請可以得到滿足時,申請邊立即轉換為分配邊

根據資源分配圖的定義,可以用該圖簡單的判斷是否有死鎖:

如果資源分配圖沒有環,那麼一定沒有死鎖

如果資源分配圖有環,那麼如果所有的資源只有乙個例項,那麼一定會發生死鎖。

如果資源分配圖有環,但一些資源的例項不止乙個,那麼不一定會發生死鎖。

從原理上,有一下幾種方法:

使用協議預防和避免死鎖,確保系統不會進入死鎖

允許系統進入死鎖狀態,但能檢測它,並加以恢復

忽視這種問題,認為死鎖不可能在系統內發生(多為作業系統採用的方法)

死鎖預防是確保死鎖發生的必要條件不全被滿足,每個條件都可以採取一些手段來避免

通常不能通過否定互斥條件來預防死鎖,有的資源本身就是非共享的

為了確保這一條件不發生,需要保證:當乙個程序申請乙個資源的時候,它不能占有其他資源,對於這一要求,有以下協議可以採用:

每個程序在開始的時候就申請所有需要的資源,從而確保如果乙個程序如果無法申請到應得的資源就不會呼叫。(實現要求申請資源的系統呼叫在所有其他系統呼叫之前進行)

要求程序在沒有資源時才能申請資源。乙個程序在任意時刻都能申請資源,但必須確保他釋放了其他的資源。(用完就丟)

這兩種協議的有兩個主要缺點:

資源利用率低,許多資源可能已分配,但很長時間沒有被使用

可能導發生飢餓,如乙個程序需要多個資源,但因為有乙個資源沒有辦法申請而永久等待

為了確保這一條件,有乙個協議可以解決:

如果乙個程序申請了另乙個不能立即分配的資源,處於等待狀態,那麼這個程序現已分配的其他任何資源都可被搶占
這是最後乙個條件,要確保此條件不成立的方法是對所有資源型別進行完全排序。並要求每個程序按遞增順序申請資源。

給所有的資源分配乙個不同的整數,以進行排序,乙個程序開始的時候可以申請任意資源,假設資源對應的整數是ri,那麼其後申請的任意資源rj必須滿足rj > ri,除非ri得到釋放

死鎖預防普遍的***是低裝置利用率和系統吞吐率。

安全序列:

如果系統能按某個順序為每個程序分配資源(不超過最大值)並能避免死鎖,那麼系統狀態就是安全的,即如果存在乙個安全序列,那麼系統就處於安全狀態。否則系統處於不安全狀態

不安全狀態不是死鎖狀態,兩者是包含於被包含的關係。

可以通過乙個例項來看一下安全狀態和不安全狀態

程序最大需求

情況1(安全)

情況2(不安全)

p01055

p1422

p2923

假設現在的最大資源總數為12,情況1時系統處於安全狀態。情況2時是危險狀態

程序終止後,這個程序占有的所有資源都會被**。

以及程序終止有兩種方式:

終止所有產生死鎖的程序。這樣可以保證終止了死鎖,但是很明顯代價很大,因為恢復後可能很多計算過程都需要重新完成。

一次終止乙個程序直到死鎖狀態被打破。但這種方法開銷很大,因為每結束乙個程序,都需要呼叫檢測演算法檢查程序是否仍然處於死鎖中。

因此如何終止程序是乙個經濟問題,也就是如何讓程序終止後的代價最小化,這需要考慮多個方面,包括但不限於:程序優先順序、程序已執行時間、程序當前使用資源數,程序最大資源需求、程序是否互動、需要終止的程序數量。

通過搶占乙個程序的資源給其他程序,從而一步步打破死鎖。這乙個辦法需要處理的問題有三個:

選擇乙個犧牲品。要搶占資源,需要判斷搶占哪乙個程序的資源,這同樣是乙個「代價最小」的問題。

回滾。當乙個程序被另乙個程序搶占資源的時候,需要對該程序進行一定的處理,很顯然因為缺少資源,該程序不能正常執行,那麼就需要讓該程序回滾到乙個狀態以便最後能重新執行。

飢餓。當基於乙個策略來判斷誰來作為被搶占資源的程序時,同乙個程序很容易被反覆選中作為被搶占資源的程序(破窗效應),這是搶占資源的演算法需要考慮的問題。乙個方法是在代價因素中加入乙個程序的回滾次數。

作業系統 第七章 死鎖

死鎖問題 color 原因 例 系統模型 每一種資源ri有wi種例項 每乙個程序通過如下順序來使用資源 使用資源 釋放資源 必要條件 資源分配圖 申請邊 有向邊pi rj,表示程序pi申請了資源rj的乙個例項 分配邊 有向邊rj pi,表示資源rj的乙個例項分配給程序pi 例 有環但沒有死鎖的資源分...

作業系統導論第七章

tags categories 作業系統該如何決定切換程序?如何執行程序使得效率最大化?more 1 周轉時間 t 周轉 時間 t 完成時間 t到達 時間t t t t周轉時間 t完成 時間 t到達時 間 2 響應時間 t 響應 時間 t 第一次執 行時間 t到達時 間t t t t響應時間 t第一...

作業系統筆記整理 第七章 檔案管理

檔案管理 把所管理的程式和資料組織成一系列的檔案,並能進行合理的儲存 使用等操作。資料項 描述物件某種屬性的字符集 是資料組織中可以命名的最小邏輯資料單位。關鍵字 乙個記錄中的乙個或幾個資料項的集合,用於唯一的標識乙個記錄。檔案讀寫操作 檢索 讀寫 開啟 每次讀寫前都要重複檢索增大開銷。所以為了方便...