银行家算法

一、背景

        银行家算法是一个避免死锁的著名算法。是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法。

二、数据结构

  1. Available:系统当前可分配资源向量
  2. Max:各进程最大需求向量
  3. Allocation:各资源已分配资源向量
  4. Need:各资源所需资源向量

三、安全序列

        根据系统中,各进程相关参数(最大资源需求数=已分配资源数+所需资源数),以及当前系统资源可分配数。

        在进程集合中,进行以下步骤,进行安全检测:

  1. 为各进程设置完成标志位为false
  2. 在未完成进程集合中找到一个进程,满足:Need[i]<Available
  3. 执行该进程完毕,并释放该进程资源,Available=Available+Allocation[i],并设置标志位为true
  4. 循环执行步骤2、3,直到所有标志位为true

四、设计思想

  1. 在T0时刻进行安全性检查,找到一个安全序列,则判断系统是安全的
  2. 若有进程发出资源请求,先判断其合法性,需要满足两个条件:a.请求的各数目小于等于该进程执行完成所需要的各资源数目;b.请求的各资源数目小于等于系统当前可分配的各资源数目。若条件a不满足,则请求资源错误,不继续判断;若条件a满足,再判断条件b。若条件b不满足,则系统不分配资源给他,让该进程等待;若条件b满足,则执行步骤3。
  3. 系统假定可以为该进程分配资源,并修改该进程相关参数(最大需求数,已分配资源数,所需资源数),以及当前系统的资源可分配数。
  4. 利用安全性算法检查此系统是否安全,如果能够找到一个安全序列,那么判定该系统是安全的。将资源分配给它;否则,系统不分配资源,让该进程等待,并撤销假定状态,修改相关参数。
  5. 循环步骤2~4,直至各进程都执行完毕。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值