银行家算法

「银行家算法」用于死锁避免

银行家拥有一笔周转资金。客户要求分期贷款,如果客户能够得到各期贷款,就一定能够归还贷款,否则就一定不能归还贷款。银行家应谨慎的贷款,防止出现坏帐

用银行家算法避免死锁

  • 操作系统对应:银行家
  • 操作系统管理的资源对应:周转资金
  • 进程对应:要求贷款的客户

算法

  • 系统中的所有进程进入进程集合。
  • 安全状态下系统收到进程的资源请求后时,进行
    • 先把资源试探性分配给它。
      • 对于系统剩下的可用资源和进程集合的其他进程
        • 系统在进程集合中找到剩余资源能满足最大需求量的进程
        • 检查资源是否能够保证这个可以进程运行完毕并归还全部资源。
        • 若可以归还
          • 把这个进程从集合中去掉,系统的剩余资源更多了,continue
        • 否则
          • 有进程执行不完,系统处于不安全状态,拒绝分配,break
      • 进程集合为空,中止循环
    • 若进程集合为空
      • 说明所有其余进程都可以被顺利运行并释放资源,系统处于安全状态,因此可以放心地满足最开始的那个进程的资源需求
    • 否则
      • 有进程执行不完,系统处于不安全状态,本次资源分配暂不实施,让申请进程等待。

多资源银行家算法

思想和方式与单资源情况是类似的。多资源需要每次考虑各种资源能否被安全回收,不花时间讲。