【正确答案】若此时P1发出资源请求Request(1,0,1),按银行家算法进行检查:
Request(1,0,1)≤Need(2,2,2)
Request(1,0,1)≤Available(2,1,2)
试分配并修改相应的数据结构,由此形成的资源分配情况如表1所示。
{{B}}表1 重新分配后资源情况{{/B}}
|
| 进程 |
Allocation |
Need |
Available |
| P1 |
2 0 2 |
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发出资源请求Request(1,0,1),按银行家算法进行检查: Request(1,0,1)≤Need(2,0,2) Request(1,0,1)≤Available(2,1,2) 试分配并修改相应的数据结构,由此形成的资源分配情况如表2所示。
{{B}}表2 重新分配后资源情况{{/B}}
|
| 进程 |
Allocation |
Need |
Available |
| P1 |
1 0 1 |
1 2 1 |
1 1 1 |
| P2 |
5 1 2 |
1 0 1 |
|
| P3 |
2 1 1 |
1 0 3 |
|
| P4 |
0 0 2 |
4 2 0 |
|
再利用安全性算法检查系统是否安全,可得到表3所示的安全性检测情况。
{{B}}表3 安全性检测情况{{/B}}
|
|
Work |
Need |
Alloeation |
Work+Alloeation |
Finish |
| 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 1 |
9 3 7 |
true |
从表2中可以看出,此时存在一个安全序列{P2、P3、P4、P1},所以该状态是安全的,可以立即将P2所申请的资源分配给它。