進程死鎖(銀行家算法)

一、死鎖在計算機系統中有許多互斥資源(如打印機)或軟件資源(如臨界區),若兩個進程同時使用打印機,或者同時進入臨界區必然會出現問題。所謂死鎖,是指兩個以上的進程互相都要求對方已經佔有的資源致使沒法繼續運行下去的現象。算法

二、死鎖產生的必要條件:安全

(1)互斥條件:即一個資源每次只能被一個進程使用,在操做系統中這是真實存在的狀況。併發

(2)保持和等待條件:有一個進程已得到了一些資源,但因請求其餘資源被阻塞時,對已得到的資源保持不放。spa

(3)不剝奪條件:有些系統資源是不可剝奪的,當某個進程已得到這種資源後,系統不能強行收回,只能由進程使用完時本身釋放。操作系統

(4)環路等待條件:若干個進程造成環形鏈,每一個都佔用對方要申請的下一個資源。排序

三、死鎖預防:死鎖預防是採用某種策略,限制併發進程對資源的請求,破壞死鎖產生的4個必要條件之一,使系統在任什麼時候刻都不知足死鎖的必要條件。進程

(1)預先靜態分配法。破壞了「不可剝奪條件」。預先分配所需資源,保證不等待資源。該方法的問題是下降了對資源的請求,下降進程的併發程度;有時可能沒法預先知道所需資源。資源

(2)資源有序分配法。破壞了「環路條件」。把資源分類按順序。保證不造成環路。該方法存在的問題是限制進程對資源的請求;因爲資源的排序佔用系統開銷。io

四、死鎖避免:避免是指進程在每次申請資源時判斷這些操做是否安全,典型算法是「銀行家算法」。但這種算法會增長系統的開銷。軟件

五、死鎖檢測判斷系統是否處於死鎖狀態,若是是,則執行死鎖解除策略。

六、死鎖解除:與死鎖檢測結合使用,它使用的方式就是剝奪。即將資源強行分配給別的進程。

 

銀行家算法:

例題:某系統有四種互斥資源R1,R2,R3和R4,可用資源數分別是三、五、6和8。假設在T0時刻有P一、P二、P3和P4四個進程,而且這些進程對資源的最大需求量和已分配資源數以下表所示,那麼在T0時刻系統中R一、R二、R3和R4的剩餘資源數分別爲(1)。若是從T0時刻開始進程按   (2)     順序逐個調度執行,那麼系統狀態是安全的。 

(1)A.三、五、6和8          B.三、四、2和2

           C.0、一、2和1          D.0、一、0和1

(2)A.P1P2→P4→P3      B.P2P1→P4→P3

     C.P3P2→P1→P4      D.P4P2→P3→P1

 

①求剩餘資源數

用可用資源數減去那些已分配的資源數:

 

 R1=3-(1+0+1+1)=3-3=0

 R2=5-(1+1+1+1)=5-4=1

 R3=6-(2+2+1+1)=6-6=0

 R4=8-(4+2+0+1)=8-7=1

 

因此(1)選擇D。

 

②求出還需資源數

分析,由於剩餘的可用資源爲(0,1,0,1),與上面的還需資源數比較,只有知足P3的還需資源數,因此,淘汰了ABD,選擇C。

驗證C.P3P2→P1→P4

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息