假设计算机系统中有三类互斥资源 R1、R2和 R3 可用资源数分别为9、5和3,若在T0时刻系统中有P1,P2,P3,P4,P5五个进程,这些进程对资源的最大需求量和已分配资源数如下表所示。在 T0 时刻系统剩余的可用资源数分别为(问题1)。如果进程按(问题2)序列执行,那么系统状态是安全的。

本题考察的是死锁避免中的银行家算法与安全序列判定。
问题1
先求 T0 时刻的已分配总量:
P1(2,1,0),P2(2,1,0),P3(1,1,1),P4(1,1,1),P5(1,1,0)。
合计已分配为 (7,5,2)。系统总资源为 (9,5,3)。
剩余可用资源 = 总资源 − 已分配 = (9−7, 5−5, 3−2) = (2,0,1)。
所以选择 D。
问题2
计算各进程尚需资源 Need = Max − Alloc:
P1 Need (4,0,1);P2 Need (1,1,0);P3 Need (3,2,0);P4 Need (2,2,1);P5 Need (1,0,1)。
初始可用 (2,0,1)。
只满足 P5(1,0,1),执行后释放其分配 (1,1,0),可用变为 (3,1,1)。
此时满足 P2(1,1,0),执行释放 (2,1,0),可用 (5,2,1)。
随后 P4(2,2,1) 可执行,释放 (1,1,1),可用 (6,3,2);
再执行 P3(3,2,0),释放 (1,1,1),可用 (7,4,3);
最后 P1(4,0,1) 可执行,得到安全序列 P5→P2→P4→P3→P1。
A选项 起始为 P1,不满足初始可用,错误。
B选项 起始为 P4,不满足初始可用,错误。
C选项 给出序列与上面推导一致,正确。
D选项 第二步为 P1,在 (3,1,1) 下不满足其 Need(4,0,1),错误。
所以选择 C。
