假定系统有进程集合(Po,Pl,P2,P3,P4),资源集合为(A,B,C),资源数量分别为(10,8,7)。假定某时刻系统的状态如表所示。
时间: 2023-10-28 19:05:06 浏览: 129
枚举系统中正在运行的进程
5星 · 资源好评率100%
| 进程 | Max | Allocation | Need |
|------|-----|------------|------|
| P0 | 7 | 0 | 7 |
| P1 | 3 | 3 | 0 |
| P2 | 9 | 3 | 6 |
| P3 | 2 | 2 | 0 |
| P4 | 4 | 2 | 2 |
| 资源 | Available |
|------|-----------|
| A | 3 |
| B | 3 |
| C | 2 |
其中,Max表示进程所需的资源数量,Allocation表示已经分配给进程的资源数量,Need表示进程还需要的资源数量。
请回答以下问题:
1. 在上述状态下,能否安全地分配资源?如果可以,请给出一个安全序列。
2. 如果要求分配给进程P1资源(0,1,0),这个分配是否安全?为什么?
答案:
1. 可以安全地分配资源,安全序列为P1->P3->P4->P0->P2。
安全判断过程如下:
- 对于资源A,Available为3,需要的资源总数为7+3+6+2+2=20,因此,Available至少为20-7-3-6-2-2=0。
- 对于资源B,Available为3,需要的资源总数为0+3+6+0+2=11,因此,Available至少为11-0-3-6-0-2=0。
- 对于资源C,Available为2,需要的资源总数为7+0+0+0+2=9,因此,Available至少为9-7-0-0-0-2=0。
- 取出一个Need<=Available的进程(例如P1),将该进程对应的Allocation加到Available中,重复上述步骤,直到所有进程都被考虑过。
2. 这个分配不安全。假设按照该分配方式进行,系统状态将变为:
| 进程 | Max | Allocation | Need |
|------|-----|------------|------|
| P0 | 7 | 0 | 7 |
| P1 | 3 | 4 | 0 |
| P2 | 9 | 3 | 6 |
| P3 | 2 | 2 | 0 |
| P4 | 4 | 2 | 2 |
| 资源 | Available |
|------|-----------|
| A | 3 |
| B | 2 |
| C | 2 |
此时,无论按照什么顺序分配资源,都无法满足进程P0和P2的资源需求,因此不安全。
阅读全文