最近開始備考電腦四級,基本沒有遇到什麼問題,感覺電腦四級就是考理解型記憶力,銀行家演算法的題算是在電腦四級裡少有的計算題。
例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
關於銀行家演算法的拓展說明:(以下內容為《全國電腦等級考試四級教程——作業系統原理》原文)
銀行家演算法是通過動態地檢測系統中資源分派情況和進程對資源的需求情況來決定如何分配資源的,在能確保系統處於安全狀態時才把資源分派給申請者,從而避免系統發生死結。由於銀行家演算法是在系統運行期間實施的,要花費相當多的時間,該演算法需要m×n²操作。銀行家演算法要求每類資源的數量是固定不變的,而且必須事Crowdsourced Security Testing道資源的最大需求量,這難以做到。不安全狀態並非一定是死結狀態,如果一個進程申請的資源當前是可用的,但該進程必須等待,這樣資源使用率會下降。
參考資料:
【1】全國電腦等級考試四級教程——作業系統原理
【2】全國電腦等級考試四級網路工程師未來教育題庫