计算机操作系统
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: 找到安全序列
我们需要找到一个安全序列,使得每个进程在该序列下都能完成其任务。
- 选择一个可以完成的进程(即其需求不超过当前可用资源)。
- 释放该进程的资源。
- 重复上述步骤直到所有进程都完成。
示例:
-
P5:
- 需求: (4, 2, 4)
- 当前可用: (2, 3, 3)
- 不满足条件。
-
P4:
- 需求: (4, 2, 5)
- 当前可用: (2, 3, 3)
- 不满足条件。
-
P3:
- 需求: (4, 0, 11)
- 当前可用: (2, 3, 3)
- 不满足条件。
-
P2:
- 需求: (5, 3, 6)
- 当前可用: (2, 3, 3)
- 满足条件。
- 释放资源: (4, 0, 2) -> (2, 3, 3) + (4, 0, 2) = (6, 3, 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: 判断新的安全状态
-
P5:
- 需求: (4, 2, 4)
- 当前可用: (0, 3, 2)
- 不满足条件。
-
P4:
- 需求: (4, 2, 5)
- 当前可用: (0, 3, 2)
- 不满足条件。
-
P3:
- 需求: (4, 0, 11)
- 当前可用: (0, 3, 2)
- 不满足条件。
-
P2:
- 需求: (5, 3, 6)
- 当前可用: (0, 3, 2)
- 不满足条件。
-
P1:
- 需求: (5, 5, 9)
- 当前可用: (0, 3, 2)
- 不满足条件。
结论
- 在 T0 时刻,系统是安全的,安全序列为 P2 -> P1 -> P3 -> P4 -> P5。
- 请求 P4 (2, 0, 1) 后,系统不再是安全的,因此不能实现资源分配。