银行家算法简析

银行家算法简析

银行家算法简析

最具有代表性的避免死锁算法

所需数据结构

  1. 可利用资源向量 available
  2. 最大需求向量 max
  3. 已分配矩阵向量 allocation
  4. 需求矩阵向量 need
  5. 工作向量 work(可提供的资源数目)
  6. 完成标志 finish

算法解析

request 是进程Pi的请求向量,表示某进程请求资源数目

  1. if request < need ; continue ; else 不分配资源
  2. if request <available ; continue ; else 不分配资源
  3. available = available – request ;
  4. need = need -request
  5. if 安全 ; 分配资源 ;else 不分配资源;

安全算法
假设将资源分配给进程,运算出 allocation + work (new available)即为当前进程结束后空闲出的资源,再找出新的进程满足need < new available 将其finish = true , new available + = allocation 重复执行 , 如果finish 全为1,则安全。

例题

processallocationneedavailable序号new available
P00 0 3 20 0 1 21 6 2 211,6,5,4
P11 0 0 01 7 5 042,9,9,10
P21 3 5 42 3 5 6.53,12 ,14,14
P30 3 3 20 6 5 221,9,8,6
P40 0 1 40 6 5 631,9,9,10

1.该状态是否安全
2.若进程P2 提出请求 (1,2,2,2) 后 是否分配资源?

1.如表黄色部分 有 安全序列,则安全
2.当P2 提出 12 2 2 时,request < available , request < need ;
available = 0 4 0 0 ;

processallocationneedavailable
P22 5 7 61 1 3 40,4,0,0.
P00 0 3 20 0 1 2
P11 0 0 01 7 5 0
P30 3 3 20 6 5 2
P40 0 1 40 6 5 6

available 无法满足进程其他资源,不分配资源。

参考资料
1.《计算机操作系统第四版》,汤小丹 ,梁红兵 ,等。

    原文作者:银行家问题
    原文地址: https://blog.csdn.net/mcl2840072208/article/details/82934912
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞