计算机操作系统

计算机操作系统_第1张图片

1. T0 时刻是否为安全状态?

步骤 1: 计算当前可用资源
  • 总资源数量:

    • A: 17
    • B: 5
    • C: 20
  • 已分配资源:

    • P1: (2, 1, 2)
    • P2: (4, 0, 2)
    • P3: (4, 0, 5)
    • P4: (2, 0, 4)
    • P5: (3, 1, 4)
  • 当前可用资源:

    • A: 17 - (2 + 4 + 4 + 2 + 3) = 2
    • B: 5 - (1 + 0 + 0 + 0 + 1) = 3
    • C: 20 - (2 + 2 + 5 + 4 + 4) = 3
步骤 2: 找到安全序列

我们需要找到一个安全序列,使得每个进程在该序列下都能完成其任务。

  1. 选择一个可以完成的进程(即其需求不超过当前可用资源)。
  2. 释放该进程的资源
  3. 重复上述步骤直到所有进程都完成
示例:
  1. P5:

    • 需求: (4, 2, 4)
    • 当前可用: (2, 3, 3)
    • 不满足条件。
  2. P4:

    • 需求: (4, 2, 5)
    • 当前可用: (2, 3, 3)
    • 不满足条件。
  3. P3:

    • 需求: (4, 0, 11)
    • 当前可用: (2, 3, 3)
    • 不满足条件。
  4. P2:

    • 需求: (5, 3, 6)
    • 当前可用: (2, 3, 3)
    • 满足条件。
    • 释放资源: (4, 0, 2) -> (2, 3, 3) + (4, 0, 2) = (6, 3, 5)
  5. P1:

    • 需求: (5, 5, 9)
    • 当前可用: (6, 3, 5)
    • 满足条件。
    • 释放资源: (2, 1, 2) -> (6, 3, 5) + (2, 1, 2) = (8, 4, 7)

2. 若进程 P4 请求资源 (2, 0, 1),能否实现资源分配?

步骤 1: 更新当前可用资源
  • 当前可用资源: (2, 3, 3)
  • 请求资源: (2, 0, 1)
  • 新的可用资源: (2, 3, 3) - (2, 0, 1) = (0, 3, 2)
步骤 2: 判断新的安全状态
  1. P5:

    • 需求: (4, 2, 4)
    • 当前可用: (0, 3, 2)
    • 不满足条件。
  2. P4:

    • 需求: (4, 2, 5)
    • 当前可用: (0, 3, 2)
    • 不满足条件。
  3. P3:

    • 需求: (4, 0, 11)
    • 当前可用: (0, 3, 2)
    • 不满足条件。
  4. P2:

    • 需求: (5, 3, 6)
    • 当前可用: (0, 3, 2)
    • 不满足条件。
  5. P1:

    • 需求: (5, 5, 9)
    • 当前可用: (0, 3, 2)
    • 不满足条件。

结论

  • 在 T0 时刻,系统是安全的,安全序列为 P2 -> P1 -> P3 -> P4 -> P5。
  • 请求 P4 (2, 0, 1) 后,系统不再是安全的,因此不能实现资源分配。

    计算机操作系统_第2张图片

你可能感兴趣的:(服务器,运维)