死鎖的四個必要條件及死鎖的預防與避免

2021-08-28 03:56:38 字數 1071 閱讀 5657

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

死鎖產生的必要條件

(1)互斥條件:某個資源在一段時間內智慧型由乙個程序戰友,不能同時被兩個以上或兩個的程序占有。

(2)不可搶占條件:程序所獲得的 資源在未使用完畢之前,資源申請者不能強行從資源擁有者手中奪取資源,而只能由該資源的佔有者程序自行釋放。

(3)占有且申請條件:程序至少已經占有乙個資源,但又申請新的資源;由於該資源已被另外程序占有,此時該程序阻塞;但是,它在等待新資源之時,扔繼續占用已占有的資源。

(4)迴圈等待條件:存在一組程序等待序列,其中p1等待p2所占有的某一資源,p2等待p3所占有的某一資源......而pn等待p1所占有的資源,形成乙個程序迴圈等待。

死鎖的預防

死鎖的避免

(1)安全序列

所謂系統是安全的,是指系統中的所有程序能夠按照某一次序分配資源,並且依次地執行完畢,這種程序序列就是安全的。如果存在這樣乙個安全序列,則系統是安全的;如果系統不存在這樣乙個安全序列,則系統是不安全的。不安全狀態並不一定會發生死鎖的危險,但它隱含這樣的危險。只要系統能保持安全狀態就可以避免死鎖的發生。

(2)銀行家演算法

銀行家演算法是乙個著名的避免死鎖的演算法。在安全狀態下系統接到乙個程序資源請求後,就先判斷這個資源是否超過了自己所要申請的總的資源數目,判斷完畢後再繼續進行下乙個判斷,即判斷是否小於系統現有的可以分配的資源數目。如果這兩個判斷都通過,則系統把資源分配給該程序,系統檢查現在的系統是否處於安全狀態,如果安全則正式把資源分配給程序,以完成此次分配,否則剛才的試分配作廢。

死鎖的檢測:當程序進行資源請求時檢查併發程序組是否構成資源的請求和占用環路,如果不存在環路,則系統不存在死鎖;如果存在環路,則系統中可能存在死鎖,也可能不存在死鎖。

死鎖的恢復:重啟系統;撤銷程序或剝奪資源。

死鎖的四個必要條件及處理死鎖

如果乙個程序集合裡面的每個程序都在等待只能由這個集合中的其他乙個程序 包括他自身 才能引發的事件,這種情況就是死鎖。這個定義可能有點拗口,下面用乙個簡單例子說明。資源a b 程序c d 描述如下 資源a和資源b,都是不可剝奪資源,現在程序c已經申請了資源a,程序d也申請了資源b,程序c接下來的操作需...

死鎖的四個必要條件

作業系統中有若干程序併發執行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況。此時,若不借助外界因素,誰也不能釋放資源,誰也不能解 除阻塞狀態。根據這樣的情況,作業系統中的死鎖被定義為系統中...

死鎖的四個必要條件

作業系統中有若干程序併發執行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況。此時,若不借助外界因素,誰也不能釋放資源,誰也不能解 除阻塞狀態。根據這樣的情況,作業系統中的死鎖被定義為系統中...