面试题答案
一键面试- 首先计算每个进程还需要的资源量(需求 - 已分配):
进程 还需要的资源(A, B, C) P0 (7 - 0, 5 - 1, 3 - 0) = (7, 4, 3) P1 (3 - 2, 2 - 0, 2 - 0) = (1, 2, 2) P2 (9 - 3, 0 - 0, 2 - 2) = (6, 0, 0) P3 (2 - 2, 2 - 1, 2 - 1) = (0, 1, 1) P4 (4 - 0, 3 - 0, 3 - 2) = (4, 3, 1) - 接着计算当前系统可用资源量: 初始资源量为(10, 5, 7),已分配资源量为(0 + 2 + 3 + 2 + 0, 1 + 0 + 0 + 1 + 0, 0 + 0 + 2 + 1 + 2) = (7, 2, 5)。 所以可用资源量为(10 - 7, 5 - 2, 7 - 5) = (3, 3, 2)。
- 然后使用银行家算法进行安全性检查:
- 初始时,可用资源为(3, 3, 2)。
- 进程P3还需要(0, 1, 1),可用资源可以满足P3的需求。P3运行完后释放资源,此时可用资源变为(3 + 2, 3 + 1, 2 + 1) = (5, 4, 3)。
- 进程P1还需要(1, 2, 2),可用资源可以满足P1的需求。P1运行完后释放资源,此时可用资源变为(5 + 2, 4 + 0, 3 + 0) = (7, 4, 3)。
- 进程P4还需要(4, 3, 1),可用资源可以满足P4的需求。P4运行完后释放资源,此时可用资源变为(7 + 0, 4 + 0, 3 + 2) = (7, 4, 5)。
- 进程P0还需要(7, 4, 3),可用资源可以满足P0的需求。P0运行完后释放资源,此时可用资源变为(7 + 0, 4 + 1, 5 + 3) = (7, 5, 8)。
- 进程P2还需要(6, 0, 0),可用资源可以满足P2的需求。P2运行完后释放资源,此时可用资源变为(7 + 3, 5 + 0, 8 + 2) = (10, 5, 10)。
当前系统处于安全状态,安全序列为:P3,P1,P4,P0,P2。