(1) 【得分点:计算正确得2分】
可用资源Available = 总资源 - 所有进程已分配资源之和。
总资源: A=10, B=5, C=7
已分配资源之和:
A: 0 (P0) + 2 (P1) + 3 (P2) + 2 (P3) + 0 (P4) = 7
B: 1 (P0) + 0 (P1) + 0 (P2) + 1 (P3) + 0 (P4) = 2
C: 0 (P0) + 0 (P1) + 2 (P2) + 1 (P3) + 2 (P4) = 5
因此,Available = (10-7, 5-2, 7-5) = (3,3,2)
(2) 【得分点:正确检查安全状态并给出安全序列得4分,其中序列正确得2分,步骤正确得2分】
使用银行家算法检查安全状态:
当前 Available = (3,3,2)
检查进程:
P1 Need=(1,2,2) ≤ Available=(3,3,2),是。假设分配P1,P1完成释放Allocation=(2,0,0),则Available=(3,3,2)+(2,0,0)=(5,3,2)
P3 Need=(0,1,1) ≤ (5,3,2),是。分配P3,释放(2,1,1),Available=(5,3,2)+(2,1,1)=(7,4,3)
P4 Need=(4,3,1) ≤ (7,4,3),是。分配P4,释放(0,0,2),Available=(7,4,3)+(0,0,2)=(7,4,5)
P0 Need=(7,4,3) ≤ (7,4,5),是。分配P0,释放(0,1,0),Available=(7,4,5)+(0,1,0)=(7,5,5)
P2 Need=(6,0,0) ≤ (7,5,5),是。分配P2。
因此,存在安全序列,例如 P1, P3, P4, P0, P2。系统处于安全状态。
(3) 【得分点:正确判断并说明理由得2分,其中检查请求和安全性各1分】
P1请求Request=(1,0,2):
检查Request ≤ Need? Request=(1,0,2) ≤ P1 Need=(1,2,2),是。
检查Request ≤ Available? (1,0,2) ≤ Available=(3,3,2),是。
假设分配:
P1 Allocation 变为 (2+1,0+0,0+2) = (3,0,2)
P1 Need 变为 (3,2,2) - (3,0,2) = (0,2,0)
Available 变为 (3,3,2) - (1,0,2) = (2,3,0)
检查系统安全性:
当前 Available=(2,3,0)
进程:
P1 Need=(0,2,0) ≤ (2,3,0),是。分配P1,P1完成释放(3,0,2),Available=(2,3,0)+(3,0,2)=(5,3,2)
P3 Need=(0,1,1) ≤ (5,3,2),是。分配P3,释放(2,1,1),Available=(5,3,2)+(2,1,1)=(7,4,3)
P4 Need=(4,3,1) ≤ (7,4,3),是。分配P4,释放(0,0,2),Available=(7,4,3)+(0,0,2)=(7,4,5)
P0 Need=(7,4,3) ≤ (7,4,5),是。分配P0,释放(0,1,0),Available=(7,4,5)+(0,1,0)=(7,5,5)
P2 Need=(6,0,0) ≤ (7,5,5),是。分配P2。
存在安全序列,如 P1, P3, P4, P0, P2。因此系统安全,应该分配。