问题 问答题

考虑某个系统在如下时刻的状态。

AllocationMaxAvailable
A B C D A B C DA B C D
P00 0 1 2 0 0 1 1 5 2 0
P1 1 0 0 0 1 7 5 0
P2 1 3 5 4 2 3 5 6
P30 0 1 40 6 5 6
使用银行家算法回答下面的问题:
(1)Need矩阵是怎样的
(2)系统是否处于安全状态如安全,请给出一个安全序列。
(3)如果从进程P1发来一个请求(0,4,2,0),这个请求能否立刻被满足如安全,请给出一个安全序列。

答案

参考答案:(1)Need矩阵如下图
A B C D
P0 0 0 0 0
P1 0 7 5 0
P2 1 0 0 2
P3 0 6 4 2
(2)此该的安全性
Work Need Allocation W+A Finish
A B C D A B C D A B C D A B C D
P0 1 5 2 0 0 0 0 0 0 0 1 2 1 5 3 2 True
P2 1 5 3 2 1 0 0 2 1 3 5 4 2 8 8 6 True
P1 2 8 8 6 0 7 5 O 1 0 0 0 3 8 8 6 True
P3 3 8 8 6 0 6 5 6 0 0 1 4 3 8 9 10 True
因为找到一个安全序列{PO,P2,P1,P3},故当前系统处于安全状态。
(3)P1发出请求(0,4,2,0)
①进行两个判断:(0,4,2,0)小于P1的Need(0,7,5,0);
(0,4,2,0)小于当前的剩余Available(1,5,2,0)
②假定分配给P1,修改P1的allocation及Need数据,还有系统的Available数据。
P1的allocation变为(1,4,2,0),P1的Need变为(0,3,3,0),系统的Available变为(1,1,0,0)。
③利用安全性算法检查此时系统是否安全。
Work Need Allocation W+A Finish
A B C D A B C D A B C D A B C D
P0 1 1 0 0 0 0 0 0 0 0 1 2 1 1 1 2 True
P2 1 1 1 2 1 0 0 2 1 3 5 4 2 4 6 6 True
P1 2 4 6 6 0 3 3 0 1 4 2 0 3 8 8 6 True
P3 3 8 8 6 0 6 5 6 0 0 1 4 3 8 9 10 True
因为找到一个安全序列(P0,P2,P1,P3),故系统处于安全状态,可以将P1请求的资源立该分配给P1。

解析: 银行家算法基本上都是一样的步骤的,先检查其安全性,虽然书上公式写得比较复杂,但真正做题都比较简单,安全序列可有多个,写出其中一个即可证明其安全,然后是当某进程提出申请后,分三步:①进行两个判断②假定分配③利用安全性算法检查此时系统是否安全。

填空题
单项选择题