一組程序中,每個程序都無限等待被該組程序中的另一程序所占有的資源,因而永遠無法得到資源,這種現象稱為程序死鎖,這一組程序就稱為死鎖程序。死鎖會導致大量資源浪費。
資源數量有限,鎖和訊號量錯誤使用。
可重用資源:可被多個程序多次使用
可消耗資源:只可使用一次、可建立和銷毀的資源
活鎖:先加鎖再輪詢,既無進展也沒有阻塞;
飢餓:資源分配策略導致
互斥使用(資源獨佔):乙個資源每次只能給乙個程序使用
占有且等待(請求和保持):程序在申請新的資源的同時保持對原有資源的占有
不可搶占:資源申請者不能強行的從資源佔有者手中奪取資源,資源只能由佔有者自願釋放
迴圈等待:存在乙個程序等待佇列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,即搶占式排程。儲存器也可以搶占,如記憶體換頁。一般來說,可搶占資源不會引...