進程死結終結者——銀行家演算法

來源:互聯網
上載者:User

在學習作業系統中進程的時候,會接觸到進程死結這個名稱。那麼什麼是進程死結?

 

進程死結指的是:如果多個進程同時佔有對方需要的資源而同時請求對方的資源,而它們在得到請求之前不會釋放所佔有的資源,那麼就會導致死結的發生,也就是進程不能實現同步。

 

那麼死結是怎樣產生的?

死結的產生有四個必要條件:

互斥條件:即一個資源每次只能被一個進程使用(在作業系統中這是真實存在的情況)

保持和等待條件:有一個進程已獲得了一些資源,但因請求其他資源被阻塞時,對已獲得的資源保持不放

不剝奪條件:有些系統資源是不可剝奪的,當某個進程已獲得這種資源後,系統不能強行收回,只能由進程使用完成時自己釋放

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

 

而避免死結最具有代表性的就是——銀行家演算法

至於什麼是銀行家演算法,這裡就不再贅述了,說實話,單憑概念很難理解它的含義,還是通過講解例子,來理解到底什麼是銀行家演算法。

 

例題:假設系統中有三類互斥資源R1、R2、R3,可用資源數分別是9、8、5.在T0時刻,系統中有P1、P2、P3、P4和P5五個進程,這些進程對資源的最大需求量和已指派的資源數如下所示,如果進程按照______序列執行,那麼系統狀態是安全的。


 解答過程:

從題目給出的進程資源表可以看出,對於資源R1、R2、R3,它們已經提前各自分配了一部分,現在我們看一下,是否還有剩餘。

R1=9-(1+2+2++1)=2

R2=8-(2+1+1+2+1)=1

R3=5-(1+1+3)=0

同時,對於五個進程,系統分配給了他們各自一部分資源,這一部分資源是否能夠滿足他們,根據還需資源=最大需求量—已指派資源數來求,結果如下 

                       資源

進程

最大需求量

R1    R2   R3

已指派資源數

R1    R2   R3

剩餘資源

R1    R2   R3

還需資源數

R1    R2   R3

P1

6     5    2

1     2    1

 

 

2     1    0

 

5     3    1

P2

2     2    1

 2     1    1

 0     1    0

P3

 8     1    1

 2     1    0

 6     0    1

P4

 1     2    1

 1     2    0

 0     0    1

P5

 3     4    4

 1     1    3

 2     3    1

很明顯,“剩餘資源”只能滿足進程P2的要求

                       資源

進程

最大需求量

R1    R2   R3

已指派資源數

R1    R2   R3

剩餘資源

R1    R2   R3

還需資源數

R1    R2   R3

P2

2     2    1

2     1    1

2     1    0

0     1    0

那麼就先開始運行進程P2。當P2運行之後,已“分配的資源”要釋放出來,此時剩餘資源=上一個進程的剩餘資源+“已指派資源”(中P2已經執行完畢了)

                       資源

進程

最大需求量

R1    R2   R3

已指派資源數

R1    R2   R3

剩餘資源

R1    R2   R3

還需資源數

R1    R2   R3

P2

2     2    1

2     1    1

4     2    1

0     1    0

根據比較可以看出“剩餘資源”完全滿足進程P4,以此類推,可以得到最後的結果表

                       資源

進程

最大需求量

R1    R2   R3

已指派資源數

R1    R2   R3

剩餘資源

R1    R2   R3

還需資源數

R1    R2   R3

 

 

 

2     1    0

 

P2

2     2    1

 2     1    1

4     2    1

 0     1    0

P4

 1     2    1

 1     2    0

 5     4    1

 0     0    1

P1

6     5    2

1     2    1

6     6    2

5     3    1

P5

 3     4    4

 1     1    3

 8     7    2

 2     3    1

P3

 8     1    1

 2     1    0

 10    8    2

 6     0    1

銀行家是計算並不難,主要就是有些繁瑣,在計算的時候需要耐心。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.