銀行家算法
考慮下面的系統快照:
回答以下問題:
1.計算需求矩陣Need.
2.此狀態是否爲安全狀態,如果是,則找出安全序列.
3.在此基礎上P1 申請(0,4,2,0)能否立即分配?爲什麼?
【解答】
1.這裏的最大需求量矩陣我們把它命名爲Max,把已分配的資源矩陣命名爲Allocation,第一問的需求矩陣Need = Max - Allocation =
2.安全狀態就是每一項都能正常合理分配的狀態,所以這裏第一步:
令Work = Available = (1,5,2,0),Finish[i] = false;
先分配給P0, then Work = (1,5,3,2),Finish[0] = true;
然後分配給P2,then Work = (2,8,8,6),Finish[2] = true;
然後分配給P1,then Work = (3,8,8,6),Finish[1] = true;
然後分配給P3,then Work = (3,14,11,8),Finish[3] = true;
然後分配給P4,then Work = (3,14,12,12),FInish[4] = true;
因爲一直都是true,所以{P0,P2,P1,P3,P4}是一個安全序列,當然,安全序列並不是唯一的,一般都是按照順序一步一步找出來的。
3.P1立即請求(0,4,2,0),
首先需要進行兩步判斷:
- 請求向量是否小於A的Max
- 請求向量是否小於Available
這裏我們能看出(0,4,2,0)<(1,7,5,0),同時(0,4,2,0)<(1,5,2,0)
假設可以立即分配,
令Work = Available =(1,1,0,0)Finish [i] = false;
先分配給P0, then Work = (1,1,1,2),Finish[0] = true;
然後分配給P2, then Work = (2,4,6,6),Finish[2] = true;
然後分配給P1, then Work =(3,8,8,6),Finish[1] = true;
然後分配給P3, then Work =(3,14,11,8),Finish[3] = true;
最後分配給P4, then Work =(3,14,12,12),Finish[4] =true;
所以{P0,P2,P1,P3,P4}是一個安全序列,也並不唯一
分段地址變換
已知段表和以下邏輯地址,請計算相應的物理地址:
a.< 0 , 430 >
b.< 1 , 10 >
c.< 2 , 500 >
d.< 3 , 400 >
e.< 4 , 112 >
段號 | 基址 | 長度 | 保護 |
---|---|---|---|
0 | 219 | 600 | R |
1 | 2300 | 14 | R/W |
2 | 90 | 100 | R/W |
3 | 1327 | 580 | R |
4 | 1952 | 96 | R |
【解答】
對a來說,段號爲0,430<600,物理地址爲430+219= 649
對b來說,段號爲1,10<14,物理地址爲2300+10 = 2310
對c來說,段號爲2,500>100,所以發生越界中斷
對d來說,段號爲3,400<580,物理地址爲1327+400 =1727
對e來說,段號爲4,112>96,所以發生越界中斷
【總結】
這種題沒有啥難的,主要就是用所給的邏輯地址和各段的段長進行比較。
本文到此結束,歡迎大家在評論區探討~~~