銀行家算法實例(轉)


例1.設系統中有三種類型的資源(A,B,C)和五個進程(P1,P2,P3,P4,P5),A資源的數量是17,B資源的數量是6,C資源的數量為19。在T0時刻系統的狀態如下表:

 

 

最大資源需求量

已分配資源量

 

A,B,C

A,B,C

P1

4,0,11

4,0,5

P2

5,3,6

4,0,2

P3

4,2,5

2,1,4

P4

5,5,9

2,1,2

P5

4,2,4

3,1,3

 

 

系統采用銀行家算法實施死鎖避免策略,若當前系統剩余資源(A,B,C)分別為(2,3,3),下列哪一個序列是安全序列?

A.P3,P1,P4,P2,P5

B.P1,P3,P5,P2,P4

C.P4,P2,P3,P5,P1

D.P2,P3,P1,P4,P5

幾乎所有關於銀行家算法的單選題的數據都差不多,在解這道題之前先來解釋一下什么是安全序列。安全序列是指一個進程序列{P1,…,Pn}是安全的,即對於每一個進程Pi(1≤i≤n),它以后尚需要的資源量不超過系統當前剩余資源量與所有進程Pj (j < i )當前占有資源量之和。這句話說得比較抽象,在解析過程中我們進行理解。

解析:我們首先算出各個進程尚需要的資源量,尚需要的資源量=最大資源需求量-已分配資源量,由此可得各進程尚需要的資源量為

 

  P1 P2 P3 P4 P5
A,B,C 0,0,6 1,3,4 2,1,1 3,4,7 1,1,1

接下來,我們分析選項A,P3需要的資源量為(2,1,1),而系統剩余資源為(2,3,3),因此進程P3進程得以完成,並且釋放它占有的資源量,即已分配資源量,此時系統剩余資源量為(2+2,3+1,3+4)=(4,4,7),(4,4,7)大於(或等於)其它所有進程(即P1,P1,P2,P4,P5)尚需要的資源量(注意,這里的“大於”指的是A,B,C三類分別大於),因此選項A的序列是安全序列

 

選項B:P1需要的資源為(0,0,6),顯然系統剩余資源不滿足條件,B為不安全序列。

選項C:P4需要的資源為(3,4,7),顯然系統剩余資源不滿足條件,C為不安全序列。

選項D:P2需要的資源為(1,3,4),顯然系統剩余資源部滿足條件,D為不安全序列。

幾乎所有銀行家算法的單選題都可以用上述方法一眼秒殺,當然這只是計算機四級的前奏,在單選題中,我們可以通過排除法輕松地選出答案,但是計算機四級是有多選題的,多選題的銀行家算法可能就得花上一分多鍾去判斷出正確選項,一定要仔細再仔細,腦袋轉不過來極有可能出錯。以下是一道關於銀行家算法的多選題,自己感受一下吧,也是so easy的。

例2.某操作系統的當前資源分配如下表所示。

 

進程

最大資源需求

已分配資源數量

 

R1 R2 R3

R1 R2 R3

P1

7 5 3

0 1 0

P2

3 2 2

2 0 0

P3

9 0 2

3 0 2

P4

2 2 2

2 1 1

P5

4 3 3

0 0 2

 

假設當前系統可用資源R1、R2和R3的數量為(3,3,2),且該系統目前處於安全狀態,那么下列哪些是安全序列?

A.P2P4P5P1P3

B.P2P4P5P3P1

C.P4P1P2P3P5

D.P3P2P5P4P1

E.P4P2P3P5P1

解析:方法參見例1.

答案:ABE


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM