操作系统原理经典题型——银行家算法(小白也能看懂)

四、银行家算法

银行家算法1哔哩哔哩bilibili

操作系统——银行家算法(Banker's Algorithm) - 王陸 - 博客园 (cnblogs.com)

操作系统-银行家算法哔哩哔哩bilibili

问题1:题目会给你一个表格,然后让你判断是否安全

ProcessAllocationNeedAvailable
A B C DA B C DA B C D
P00 0 3 20 0 1 21 6 2 2
P11 0 0 01 7 5 0
P21 3 5 42 3 5 6
P30 3 3 20 6 5 2
P40 0 1 40 6 5 6

(1)该状态是否安全? (2)若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?

解题过程:

  1. 先构建出以下表格(别管为什么,只写英文就行)

    进程/资源work可提供的Need需要的Allocation分配work+Allocation分配释放收回finish
  2. 把available抄到work第一行

  3. 然后找题目的need全都小于等于work的填到表上面(能找到finish就是ture)

  4. allocation照抄

  5. 最后把work和Allocation两个加起来填到work+Allocation

    进程/资源work可提供的Need需要的Allocation分配work+Allocation分配释放收回finish
    P01 6 2 20 0 1 20 0 3 21 6 8 4true
  6. 将work+Allocation作为下一行的work,重复该过程

    进程/资源work可提供的Need需要的Allocation分配work+Allocation分配释放收回finish
    P01 6 2 20 0 1 20 0 3 21 6 8 4true
    P31 6 5 40 6 5 20 3 3 21 9 8 6true
    P11 9 8 61 7 5 01 0 0 02 9 8 6true
    P22 9 8 62 3 5 61 3 5 43 12 13 10true
    P43 12 13 100 6 5 60 0 1 43 12 14 14true

如果finish全是true,那么他就是安全的,安全序列为{P0、P3、P1、P2、P4}

问题2

如果某进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它?

解题过程:

  1. 先看R是否小于Need,若不则失败

  2. 先看Request是否小于Need,若不小于则失败

    Request(1,2,2,2) ≤ Need(2,3,5,6)

  3. 再看R是否小于Available,若不小于则等待

    Request(1,2,2,2) ≤ Available(1,6,2,2)

  4. 如果以上条件都满足则尝试分配,修改以下值

     Available = Available - Request
     ​
     Need = Need - Request
     ​
     Allocation = Allocation + Request

ProcessAllocationNeedAvailable
A B C DA B C DA B C D
P00 0 3 20 0 1 20 4 0 0
P11 0 0 01 7 5 0
P22 5 7 61 1 3 4
P30 3 3 20 6 5 2
P40 0 1 40 6 5 6

之后再使用第一题的安全检查,重新检查一遍,如果还是安全,那就是可以,否则不行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我嘞个乖乖鹅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值