四、银行家算法

银行家算法1哔哩哔哩bilibili

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

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

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

Process Allocation Need Available
A B C D A B C D A B C D
P0 0 0 3 2 0 0 1 2 1 6 2 2
P1 1 0 0 0 1 7 5 0
P2 1 3 5 4 2 3 5 6
P3 0 3 3 2 0 6 5 2
P4 0 0 1 4 0 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
    P0 1 6 2 2 0 0 1 2 0 0 3 2 1 6 8 4 true
  6. 将work+Allocation作为下一行的work,重复该过程

    进程/资源 work可提供的 Need需要的 Allocation分配 work+Allocation分配释放收回 finish
    P0 1 6 2 2 0 0 1 2 0 0 3 2 1 6 8 4 true
    P3 1 6 5 4 0 6 5 2 0 3 3 2 1 9 8 6 true
    P1 1 9 8 6 1 7 5 0 1 0 0 0 2 9 8 6 true
    P2 2 9 8 6 2 3 5 6 1 3 5 4 3 12 13 10 true
    P4 3 12 13 10 0 6 5 6 0 0 1 4 3 12 14 14 true

如果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

Process Allocation Need Available
A B C D A B C D A B C D
P0 0 0 3 2 0 0 1 2 0 4 0 0
P1 1 0 0 0 1 7 5 0
P2 2 5 7 6 1 1 3 4
P3 0 3 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐