作業系統總結(五) 死鎖

2021-10-01 05:12:31 字數 1167 閱讀 4211

四個必要條件:

處理方法:

死鎖檢測與死鎖恢復

程序 p1 和 p2 所請求的資源都得不到滿足,只有程序 p3 可以,讓 p3 執行,之後釋放 p3 擁有的資源,此時 a = (2 2 2 0)。p2 可以執行,執行後釋放 p2 擁有的資源,a = (4 2 2 1) 。p1 也可以執行。所有程序都可以順利執行,沒有死鎖。

演算法總結如下:

每個程序最開始時都不被標記,執行過程有可能被標記。當演算法結束時,任何沒有被標記的程序都是死鎖程序。

尋找乙個沒有標記的程序 pi,它所請求的資源小於等於 a。

如果找到了這樣乙個程序,那麼將 c 矩陣的第 i 行向量加到 a 中,標記該程序,並轉回 1。

如果沒有這樣乙個程序,演算法終止。

死鎖預防

破壞占用和等待條件

破壞不可搶占條件

破壞環路等待

死鎖避免

安全狀態:

圖a中的第二列has表示已擁有的資源數,max表示請求最大的資源數,free表示還有可以使用的資源數。從圖a開始出發,先讓b 擁有所需要的全部資源,然後釋放掉,然後再繼續c,a,當所有程序都能順利完畢就說明沒有死鎖。

狀態安全。

定義:如果沒有死鎖發生,並且即使所有程序突然請求對資源的最大需求,也仍然存在某種排程次序能夠使得每乙個程序執行完畢,則稱該狀態是安全的。

安全狀態的檢測與死鎖的檢測類似,因為安全狀態必須要求不能發生死鎖。下面的銀行家演算法與死鎖檢測演算法非常類似,可以結合著做參考對比。

單個資源的銀行家 演算法

上圖 c 為不安全狀態,因此演算法會拒絕之前的請求,從而避免進入圖 c 中的狀態。

3. 多個資源的銀行家演算法

上圖中有五個程序,四個資源。左邊的圖表示已經分配的資源,右邊的圖表示還需要分配的資源。最右邊的 e、p 以及 a 分別表示:總資源、已分配資源以及可用資源,注意這三個為向量,而不是具體數值,例如 a=(1020),表示 4 個資源分別還剩下 1/0/2/0。

檢查乙個狀態是否安全的演算法如下:

查詢右邊的矩陣是否存在一行小於等於向量 a。如果不存在這樣的行,那麼系統將會發生死鎖,狀態是不安全的。

假若找到這樣一行,將該程序標記為終止,並將其已分配資源加到 a 中。

重複以上兩步,直到所有程序都標記為終止,則狀態時安全的。

如果乙個狀態不是安全的,需要拒絕進入這個狀態。

作業系統死鎖

作業系統死鎖,在作業系統課程當中屬於比較關注的乙個知識點,在這裡做個簡單的梳理。死鎖的四個必要條件 作業系統中有若干程序併發執行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況。此時,若不借...

作業系統 死鎖

多執行緒以及多程序改善了系統資源的利用率並提高了系統 的處理能力。然而,併發執行也帶來了新的問題 死鎖。死鎖是指多個程序在執行過程中因爭奪資源而造成的一種僵局,當前程序處於這種狀態時,若無外力作用,它們都將無法再向前推進。關於死鎖的一些結論 競爭資源 當系統中供多個程序共享的資源如印表機 公用佇列等...

作業系統 死鎖

把需要排他性使用的物件稱為資源。資源可以是硬體也可以是軟體,比如印表機或者資料庫中的乙個加鎖記錄。資源可以分為兩類 可搶占資源和不可搶占資源。搶占這個詞,在程序和執行緒排程時就提到了這個概念,那時是程序或者執行緒可以搶占cpu,即搶占式排程。儲存器也可以搶占,如記憶體換頁。一般來說,可搶占資源不會引...