【正确答案】这是一道常见的考查银行家算法的题,出题的概率很高,解起来却很简单。先写出各个向量和矩阵的值,然后按银行家算法和安全性算法的步骤在纸上演算就可以了。
先根据Allocation矩阵和Max矩阵计算Need矩阵。
[*]
(1)现在对T0时刻的状态进行安全性分析:
由于Available向量为(2,3,3),所以Work向量初始化为(2,3,3)。
见下表,存在安全序列(P4,P2,P3,P5,P1),所以T0时刻处于安全状态。
[*]
(2)T0时刻由于Available向量为(2,3,3),而P2请求资源Request
2向量为(0,3,4),显然C资源的数量不够,所以不能实施资源分配。
(3)Request
4(2,0,1)<Need
4(2,2,1),Request
4(2,0,1)<Available(2,3,3)。
所以先试着把P4申请的资源分配给它,Available变为(0,3,2)。
这里别忘记修改系统的Available向量和P4的Allocation
4以及Need
4向量。得到的系统状态见下表。
[*]
然后进行系统安全性检测:
此时Available为(0,3,2),所以Work初始化为(0,3,2)。
尝试把资源分配给P4后的系统安全性检测过程:
见下表,存在安全序列(P4,P2,P3,P5,P1),所以系统仍处于安全状态,所以能将资源分配给P4。
[*]
(4)Request
1(0,2,0)<Available(0,3,2)
Request
1(0,2,0)<Need
1(3,4,7)
所以先试着把P1申请的资源分配给它,Available变为(0,1,2)。
这里别忘记修改系统的Available向量和P1的Allocation
1以及Need
1向量。
得到的系统状态见下表。
[*]
然后进行系统安全性检测:
此时Available为(0,1,2),所以Work初始化为(0,1,2)。
此时的Work小于任意的Need
i向量,而且存在Finish[i]=false(其实是所有的Finish[i]都是false),所以系统处于不安全状态,即不能分配资源(0,2,0)给P1。