os
银行家算法
| 进程\资源 | work | Need | Allocation | work+Allocation | Available |
|---|---|---|---|---|---|
计算机操作系统p1 28例题解析
第一问
1.列表
| 进程\资源 | work | Need | Allocation | work+Allocation | Available |
|---|---|---|---|---|---|
2.将题目中的Available(1622)写入work
| 进程\资源 | work | Need | Allocation | work+Allocation | Available |
|---|---|---|---|---|---|
| 1622 | |||||
3.在题目中的Need中找到一个Need使它满足小于work
(比如题中:0012<1622。(注意:这不是一个四位数比较,而是单独四个数对应位置比较)0012这一行是P0,那么就把P0这一行写入表格)
| 进程\资源 | work | Need | Allocation | work+Allocation | Available |
|---|---|---|---|---|---|
| P0 | 1622 | 0012 | 0032 | 1654 | true |
(注意:这不是一个四位数比较,而是单独四个数对应位置比较)
4.下一个work是上一个work+Allocation
(比如题中:0012<1622。(注意:这不是一个四位数比较,而是单独四个数对应位置比较)0012这一行是P0,那么就把P0这一行写入表格)
| 进程\资源 | work | Need | Allocation | work+Allocation | Available |
|---|---|---|---|---|---|
| P0 | 1622 | 0012 | 0032 | 1654 | true |
| 1654 | |||||
5.在题目中的Need中找到一个Need(这个Need不包括我们已经分配过的,比如P0)使它满足小于work
| 进程\资源 | work | Need | Allocation | work+Allocation | Available |
|---|---|---|---|---|---|
| P0 | 1622 | 0012 | 0032 | 1654 | true |
| P3 | 1654 | 0652 | 0332 | 1986 | true |
6.重复以上操作
work+Allcation时要注意(注意:这不是一个四位数加法,而是单独四个数对应位置做加法)
| 进程\资源 | work | Need | Allocation | work+Allocation | Available |
|---|---|---|---|---|---|
| P0 | 1622 | 0012 | 0032 | 1654 | true |
| P3 | 1654 | 0652 | 0332 | 1986 | true |
| P4 | 1986 | 0656 | 0014 | 199 10 | true |
| P1 | 199 10 | 1750 | 1000 | 299 10 | true |
| P1 | 299 10 | 2356 | 1354 | 3 12 14 14 | true |
7.总结
当遇到false,不能找到一个安全序列,这个状态是不安全的
能找到一个一个安全序列P0P3P4P1P2,所有这个状态是安全
第二问
1.看所提出请求的Request必须要小于等于Need,若不小于失败
例题:P2的Request(1,2,2,2)要小于等于Need(2,3,5,6)
2.看所提出请求的Request必须要小于等于Available,若不小于等待
例题:P2的Request(1,2,2,2)要小于等于Available(2,3,5,6)
3.尝试分配,并将Available,Allocation,Need重新分配
Available=Available-Request
所请求的进程发生了变化
所请求的进程Allocation=Allocation+Request
所请求的进程Need=Need-Request
例题
Available=Available-Request=1622-1222=0400
所请求的进程P2发生了变化
所请求的进程P2:Allocation=Allocation+Request=1354+1222=2576
所请求的进程P2:Need=Need-Request=2356-1222=1134
4.如第一问判断安全
| 进程\资源 | work | Need | Allocation | work+Allocation | Available |
|---|---|---|---|---|---|
| 0400 | |||||
找不到一个进程的Need使它满足小于work,则为false

浙公网安备 33010602011771号