【答案解析】若此时P1发出资源请求Request1(1,0,1),按银行家算法进行检查:
Request1(1,0,1)≤Need1(2,2,2)
Request1(1,0,1)≤Available(2,1,2)
试分配并修改相应的数据结构,由此形成的资源分配情况如下表所示:
|
进程
|
Allocation
|
Max
|
Available
|
|
R1
|
R2
|
R3
|
R1
|
R2
|
R3
|
R1
|
R2
|
R3
|
|
P1
|
2
|
0
|
1
|
1
|
2
|
1
|
1
|
1
|
1
|
|
P2
|
4
|
1
|
1
|
2
|
0
|
2
|
|
P3
|
2
|
1
|
1
|
1
|
0
|
3
|
|
P4
|
0
|
0
|
2
|
4
|
2
|
0
|
再利用安全性算法检查系统是否安全,可用资源Available(1,1,1)已不能满足任何进程,系统进入不安全状态,此时系统不能将资源分配给P1。 若此时P2发出资源请求Request2(1,0,1),按银行家算法进行检查: Request2(1,0,1)≤Need2(2,0,2) Request2(1,0,1)≤Available(2,1,2) 试分配并修改相应的数据结构,由此形成的资源分配情况如下表所示:
|
进程
|
Allocation
|
Max
|
Available
|
|
R1
|
R2
|
R3
|
R1
|
R2
|
R3
|
R1
|
R2
|
R3
|
|
P1
|
1
|
0
|
0
|
2
|
2
|
2
|
1
|
1
|
1
|
|
P2
|
5
|
1
|
2
|
1
|
0
|
1
|
|
P3
|
2
|
1
|
1
|
1
|
0
|
3
|
|
P4
|
0
|
0
|
2
|
4
|
2
|
0
|
再利用安全性算法检查系统是否安全,安全性检查情况如下表所示。可以看出,此时存在一个安全序列{P2,P3,P4,P1},故该状态是完全的,可立即给P2申请的资源分配给它。
|
进程
|
Work
|
Need
|
Allocation
|
Work+Allocation
|
Finish
|
|
R1
|
R2
|
R3
|
R1
|
R2
|
R3
|
R1
|
R2
|
R3
|
R1
|
R2
|
R3
|
|
P2
|
1
|
1
|
1
|
1
|
0
|
1
|
5
|
1
|
2
|
6
|
2
|
3
|
True
|
|
P3
|
6
|
2
|
3
|
1
|
0
|
3
|
2
|
1
|
1
|
8
|
3
|
4
|
True
|
|
P4
|
8
|
3
|
4
|
4
|
2
|
0
|
0
|
0
|
2
|
8
|
3
|
6
|
True
|
|
P1
|
8
|
3
|
6
|
2
|
2
|
2
|
1
|
0
|
0
|
9
|
3
|
6
|
True
|