作業系統 死鎖

2021-10-03 09:26:12 字數 2433 閱讀 4197

一組程序中,每個程序都無限等待被該組程序中的另一程序所占有的資源,因而永遠無法得到資源,這種現象稱為程序死鎖,這一組程序就稱為死鎖程序。死鎖會導致大量資源浪費。

資源數量有限,鎖和訊號量錯誤使用。

可重用資源:可被多個程序多次使用

可消耗資源:只可使用一次、可建立和銷毀的資源

活鎖:先加鎖再輪詢,既無進展也沒有阻塞;

飢餓:資源分配策略導致

互斥使用(資源獨佔):乙個資源每次只能給乙個程序使用

占有且等待(請求和保持):程序在申請新的資源的同時保持對原有資源的占有

不可搶占:資源申請者不能強行的從資源佔有者手中奪取資源,資源只能由佔有者自願釋放

迴圈等待:存在乙個程序等待佇列p1,p2,…pn,其中p1等待p2占有的資源,p2等待p3占有的資源,…,pn等待p1的資源,形成乙個等待環路。

資源分配圖(resource allocation graph,rag),是用有向圖描述系統資源和程序的狀態。

二元組g=(v,e)。v:結點的集合,分為p(程序),r(資源)兩部分,

p=r=

e:有向邊的集合,其元素為有序二元組,

(pi,rj)或(rj,pi)

系統由若干類資源構成,一類資源稱為乙個資源類;每個資源類中包含若干個同種資源,稱為資源例項

資源類:用方框表示

資源例項:用方框中的黑圓點表示

程序:用圓圈中加程序名表示

分配邊:資源例項—>程序

申請邊:程序—>資源類,如下圖所示:

如果資源分配圖中沒有環路,則系統中沒有死鎖,如果圖中存在環路則系統中可能存在死鎖。

如果每個資源類中只包含乙個資源例項,則環路是死鎖存在的充分必要條件。

步驟:1、找乙個非孤立且只有分配邊的程序結點:去掉分配邊,將其變為孤立結點

2、再把相應的資源分配給乙個等待該資源的程序:即將該程序的申請邊變為分配邊

重複1、2步。

定義:在設計系統時,通過確定資源分配演算法,排除發生死鎖的可能性

具體做法:破壞產生死鎖的四個必要條件之一。

3.2.1 破壞「互斥使用」條件

資源轉換技術:把獨佔資源轉換成共享資源

3.2.2 破壞「請求和保持」條件

1 實現方案1:要求每個程序在執行前必須一次性申請它所要求的的所有資源。但是該方案資源利用率低,而且容易產生飢餓現象。

2 實現方案2:在允許程序動態申請資源的前提下規定,當乙個程序在申請新的資源不能立即得到滿足而變為等待狀態之前,必須釋放已占有的全部資源,若需要再重新申請。

3.2.3 破壞「不可搶占」條件

實現方案:當乙個程序申請的資源被其他程序占用時,可以通過作業系統搶占這一資源(兩個程序優先順序不同)。該方案的局現性在於:適用於狀態易於儲存和恢復的資源。

3.2.4 破壞「迴圈等待」條件

通過定義資源型別的線性順序實現。

實現方案:資源有序分配法,具體來說就是,把系統所有資源編號,程序在申請資源時必須嚴格按照資源編號的遞增次序進行,否則作業系統不予分配。

在系統執行過程中,對程序發出的每乙個系統能夠滿足的資源申請進行動態檢查,並根據檢查結果決定是否分配資源,若分配後系統發生死鎖或可能發生死鎖,則不予分配。

安全狀態:如果系統中存在乙個由所有程序構成的安全序列p1,p2,…,pn,則系統處於安全狀態。

乙個程序序列是安全的,如果對於每乙個程序pi(1≤i≤n):

它以後還需要的資源量不超過系統當前剩餘資源量與所有程序pj(j【作業系統】死鎖避免之銀行家演算法

允許死鎖發生,但是作業系統會不斷監視系統進展情況判斷是否發生死鎖;一旦發生死鎖,將會解除死鎖並以最小的代價恢復作業系統的執行。

檢測時機:

1、當程序由於資源請求不滿足而等待時檢查死鎖,缺點是系統開銷大

2、定時檢測

3、系統資源利用率下降時檢測死鎖

死鎖解除最核心的是以最小的代價恢復系統的執行。有如下方法:

作業系統死鎖

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

作業系統 死鎖

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

作業系統 死鎖

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