發表於
2012/10/3 21:15:41
2937
人閱讀
1、死鎖
:在計算機系統中有許多互斥資源(如印表機)或軟體資源(如臨界區),若兩個程序同時使用印表機,或者同時進入臨界區必然會出現問題。所謂死鎖,是指兩個以上的程序互相都要求對方已經占有的資源導致無法繼續執行下去的現象。
2、死鎖產生的必要條件:
(1)互斥條件:即乙個資源每次只能被乙個程序使用,在作業系統中這是真實存在的情況。
(2)保持和等待條件:有乙個程序已獲得了一些資源,但因請求其他資源被阻塞時,對已獲得的資源保持不放。
(3)不剝奪條件:有些系統資源是不可剝奪的,當某個程序已獲得這種資源後,系統不能強行收回,只能由程序使用完時自己釋放。
(4)環路等待條件:若干個程序形成環形鏈,每個都占用對方要申請的下乙個資源。
3、死鎖預防:
死鎖預防是採用某種策略,限制併發程序對資源的請求,破壞死鎖產生的4個必要條件之一,使系統在任何時刻都不滿足死鎖的必要條件。
(1)預先靜態分配法。破壞了「不可剝奪條件」。預先分配所需資源,保證不等待資源。該方法的問題是降低了對資源的請求,降低程序的併發程度;有時可能無法預先知道所需資源。
(2)資源有序分配法。破壞了「環路條件」。把資源分類按順序。保證不形成環路。該方法存在的問題是限制程序對資源的請求;由於資源的排序占用系統開銷。
4、死鎖避免:
避免是指程序在每次申請資源時判斷這些操作是否安全,典型演算法是「銀行家演算法」。但這種演算法會增加系統的開銷。
5、死鎖檢測
:判斷系統是否處於死鎖狀態,如果是,則執行死鎖解除策略。
6、死鎖解除:與死鎖檢測結合使用,它使用的方式就是剝奪。即將資源強行分配給別的程序。
銀行家演算法:
例題:某系統有四種互斥資源r1,r2,r3和r4,可用資源數分別是3、5、6和8。假設在t0時刻有p1、p2、p3和p4四個程序,並且這些程序對資源的最大需求量和已分配資源數如下表所示,那麼在t0時刻系統中r1、r2、r3和r4的剩餘資源數分別為(1)。如果從t0時刻開始程序按(2) 順序逐個排程執行,那麼系統狀態是安全的。
(1)a.3、5、6和8 b.3、4、2和2
c.0、1、2和1 d.0、1、0和1
(2)a.p1→p2
→p4→p3 b.p2→p1
→p4→p3
c.p3→p2
→p1→p4 d.p4→p2
→p3→p1
①求剩餘資源數
用可用資源數減去那些已分配的資源數:
所以(1)選擇d。
②求出還需資源數
分析,因為剩餘的可用資源為(0,1,0,1),與上面的還需資源數比較,只有滿足p3的還需資源數,所以,淘汰了abd,選擇c。
驗證c.
死鎖,銀行家演算法
我們知道作業系統中很多種資源,如cpu,記憶體,io裝置等,每種資源又有很多例項,對於這些資源,程序該如何訪問?請求 獲取 申請空閒資源 使用 占用 程序占用資源 釋放 資源狀態由占用變為空閒 為了更好的了解死鎖,我們將資源分類 1 預防死鎖。這是一種較簡單和直觀的事先預防的方法。方法是通過設定某些...
死鎖與銀行家演算法
死鎖定義 死鎖是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的程序稱為死鎖程序。死鎖條件 1 互斥條件 指程序對所分配到的資源進行排它性使用,即在一段時間內某資源...
避免死鎖 銀行家演算法
了解了什麼是死鎖,以及死鎖產生的原因,懂得如何去避免死鎖。在前面 作業系統之 死鎖問題 已經提到。在死鎖的避免上有現今有兩種比較著名的方案,一是有序資源分配法,二是銀行家演算法。這裡講述一下銀行家演算法。銀行家演算法 banker s algorithm 是乙個避免死鎖 deadlock 的著名演算...