进程分别为PA,PB,PC,PD,PE,计算allocation
时间: 2024-05-19 16:17:50 浏览: 116
和max-matrix如下表所示。请使用银行家算法,判断下面的进程是否处于安全状态,如果处于安全状态,请给出安全序列。如果不处于安全状态,请说明原因。
| 进程 | Max_Matrix | Allocation |
|------|------------|------------|
| P1 | 0 1 0 | 0 0 1 |
| P2 | 2 0 0 | 2 0 0 |
| P3 | 3 0 2 | 3 0 2 |
| P4 | 2 1 1 | 2 1 1 |
| P5 | 0 0 2 | 0 0 2 |
银行家算法的安全检查流程如下:
1. 初始化:将 Available 向量初值赋为 Work 向量的值,Finish 向量初值为 0。
2. 找到一个进程 i,满足 Finish[i]=0 且 Need[i] ≤ Work。
3. 如果找不到满足条件的进程 i,则说明系统处于不安全状态;否则执行以下操作:
1. Work = Work + Allocation[i]
2. Finish[i] = 1
3. 若 Finish[1...n] 均为 1,则说明系统处于安全状态,此时安全序列就是所有已经完成的进程。
首先,我们需要计算每个进程的 Need 矩阵,表示该进程所需的资源量,计算方法如下:
Need[i] = Max[i] - Allocation[i]
| 进程 | Max_Matrix | Allocation | Need |
|------|------------|------------|------------|
| P1 | 0 1 0 | 0 0 1 | 0 1 0 |
| P2 | 2 0 0 | 2 0 0 | 0 0 0 |
| P3 | 3 0 2 | 3 0 2 | 0 0 0 |
| P4 | 2 1 1 | 2 1 1 | 0 0 0 |
| P5 | 0 0 2 | 0 0 2 | 0 0 0 |
然后,计算 Work 向量的初值,即 Available 向量的初值:
Work = Available = 3 1 2
接着,执行银行家算法的安全检查。首先找到 Need ≤ Work 的进程,即 P2 和 P5,它们都可以被满足。因此,我们先执行 P2 进程,此时 Work 值变为 5 1 2,Finish[2] 被标记为 1。然后执行 P5 进程,此时 Work 值变为 5 1 4,Finish[5] 被标记为 1。接着考虑 P1 进程,但是 Need[1] = 0 1 0 > Work = 5 1 4,因此 P1 进程不能被执行。接着考虑 P3 进程,但是 Need[3] = 0 0 0 > Work = 5 1 4,因此 P3 进程不能被执行。最后考虑 P4 进程,但是 Need[4] = 0 0 0 > Work = 5 1 4,因此 P4 进程不能被执行。
因此,系统处于不安全状态,无法得到安全序列。
阅读全文