6、某系统共有4种资源,在TO时刻PO、P1、P2、P3和P4 这5个进程对资源的占用和需求情况见下列矩阵,考虑如下资源分配状态: AV=(1,6,2, 2)AL5*4= 0 0 3 2 1 0 0 0 1 3 5 4 0 3 3 2 0 0 1 4 Need5*4= 0 0 1 2 1 7 5 0 2 3 5 6 0 6 5 2 0 6 5 6 (1)求系统中各种资源总数和各进程对各种资源的最大 需求数目。 (2)该状态是安全状态吗?若安全,请给出安全序列。 (3)如果进程P2提出资源请求(1,2,2,2),能否立 即给予满足?
时间: 2024-03-09 13:46:16 浏览: 41
统计各进程占用的系统的资源
(1) 系统中各种资源总数: 1+6+2+2=11, 4种资源总共有11个。各进程对各种资源的最大需求数目如下:
- 进程PO: 0 0 1 2
- 进程P1: 1 3 5 4
- 进程P2: 0 6 5 6
- 进程P3: 0 3 3 2
- 进程P4: 4 0 0 1
(2) 该状态是安全状态,安全序列为 PO -> P3 -> P1 -> P4 -> P2。具体计算过程如下:
```
Work = Available = (1, 6, 2, 2)
Finish = [False, False, False, False, False] # 进程是否完成
Need = [[0, 0, 1, 2],
[1, 3, 5, 4],
[0, 6, 5, 6],
[0, 3, 3, 2],
[4, 0, 0, 1]]
Allocation = [[0, 0, 3, 2],
[1, 0, 0, 0],
[1, 3, 0, 0],
[0, 3, 3, 0],
[0, 0, 1, 2]]
Work = Work - Allocation[0] = (1, 6, 2, 2) - (0, 0, 3, 2) = (1, 6, -1, 0)
Finish[0] = True
SafeSequence = [0]
Work = Work + Allocation[3] = (1, 6, -1, 0) + (0, 3, 3, 0) = (1, 9, 2, 0)
Finish[3] = True
SafeSequence = [0, 3]
Work = Work + Allocation[1] = (1, 9, 2, 0) + (1, 0, 0, 0) = (2, 9, 2, 0)
Finish[1] = True
SafeSequence = [0, 3, 1]
Work = Work + Allocation[4] = (2, 9, 2, 0) + (0, 0, 1, 2) = (2, 9, 3, 2)
Finish[4] = True
SafeSequence = [0, 3, 1, 4]
Work = Work + Allocation[2] = (2, 9, 3, 2) + (1, 3, 0, 0) = (3, 12, 3, 2)
Finish[2] = True
SafeSequence = [0, 3, 1, 4, 2]
所有进程都完成了,且安全序列为 [0, 3, 1, 4, 2],因此该状态是安全状态。
(3) 进程P2提出资源请求 (1, 2, 2, 2),能否立即给予满足?
可以计算出该请求的需求向量为 (1, 2, 2, 2),而该向量小于等于 P2 的需求向量和当前可用资源向量的差,即:
(1, 2, 2, 2) <= (2, 3, 2, 2)
因此该请求可以立即满足。如果满足该请求,系统的资源分配状态会变为:
AV' = (0, 4, 0, 0)
AL' = [[0, 0, 3, 2],
[1, 0, 0, 0],
[2, 3, 2, 2],
[0, 3, 3, 0],
[0, 0, 1, 2]]
Need' = [[0, 0, 1, 0],
[1, 3, 5, 4],
[0, 1, 0, 4],
[0, 3, 3, 0],
[4, 0, 0, 1]]
其中,AV' 表示可用资源向量,AL' 表示已分配资源矩阵,Need' 表示需要资源矩阵。
阅读全文