银行家算法简析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mcl2840072208/article/details/82934912

银行家算法简析

银行家算法简析

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

所需数据结构

  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,则安全。

例题

process allocation need available 序号 new available
P0 0 0 3 2 0 0 1 2 1 6 2 2 1 1,6,5,4
P1 1 0 0 0 1 7 5 0 4 2,9,9,10
P2 1 3 5 4 2 3 5 6 . 5 3,12 ,14,14
P3 0 3 3 2 0 6 5 2 2 1,9,8,6
P4 0 0 1 4 0 6 5 6 3 1,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 ;

process allocation need available
P2 2 5 7 6 1 1 3 4 0,4,0,0.
P0 0 0 3 2 0 0 1 2
P1 1 0 0 0 1 7 5 0
P3 0 3 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6

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

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

猜你喜欢

转载自blog.csdn.net/mcl2840072208/article/details/82934912