MST

星途 面试题库

面试题:并发与同步场景下银行家算法的基本应用

假设系统中有三类资源A、B、C,数量分别为10、5、7 。当前有5个进程P0 - P4,它们对资源的最大需求和已分配资源情况如下表所示: | 进程 | 最大需求(A, B, C) | 已分配资源(A, B, C) | | ---- | ---- | ---- | | P0 | (7, 5, 3) | (0, 1, 0) | | P1 | (3, 2, 2) | (2, 0, 0) | | P2 | (9, 0, 2) | (3, 0, 2) | | P3 | (2, 2, 2) | (2, 1, 1) | | P4 | (4, 3, 3) | (0, 0, 2) | 请使用银行家算法判断当前系统是否处于安全状态,如果是,给出安全序列。
12.0万 热度难度
操作系统并发与同步

知识考点

AI 面试

面试题答案

一键面试
  1. 首先计算每个进程还需要的资源量(需求 - 已分配):
    进程还需要的资源(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)
  2. 接着计算当前系统可用资源量: 初始资源量为(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, 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。