银行家算法

1、银行家算法中的数据结构
  • 可利用资源向量Available
    含有m个元素,每个元素代表一类可利用的资源数目,初值是该类全部可用资源的数目。数值随该类资源的分配和回收而动态改变。

  • 最大需求矩阵Max
    最大需求矩阵Max定义了每一个进程对各类资源的最大需求。

  • 分配矩阵Allocation
    分配矩阵Allocation定义了系统中各类资源当前已分配给每一进程的资源数。

  • 需求矩阵Need
    表示每一个进程尚需的各类资源数目

2、安全性算法

步骤一:初始化
Work向量:供进程继续运行的各类资源数,Work = Available
Finish向量:表示系统是否有足够资源分配给进程,Finish[i]=Flase,如果系统有足够资源分配给进程,另Finish[i] = True

步骤二:找满足下列条件的进程
Finish[I] = false
Need[I,j] <= Work[j]
若满足条件,执行步骤三,否则执行步骤四

步骤三:进程Pi释放资源,重新计算Work,并修改Finish
Work[j] = Work[I]+Allocation[I,j]
Finish[I] = True
继续执行步骤二

步骤四:判断Finish
若所有进程的Finish[I] = True,表示系统处于安全状态,否则系统处于不安全状态

3、银行家算法

设Requesti是进程Pi的请求向量。如果requesti[j]=k,表示进程Pi只需要k个Rj类型的资源。
Pi发出资源请求后,按下述步骤检查:

步骤一:判断请求资源的个数是否超过需求个数
如果Requesti[j] <= Need[I,j],则继续步骤二,否则出错

步骤二:判断请求的资源个数是否小于等于系统能够提供的有效资源个数
如果Requesti[j] <= Avaliable[j],则继续步骤三,否则,进程Pi等待

步骤三: 系统尝试把资源分配给进程
Available[j] = Available[j] - Requesti[j]
Allocation[I,j] = Allocation[I,j]+Requesti[j]
Need[I,j] = Need[I,j] - Requesti[j]

步骤四:执行安全行算法
分配完资源后,系统执行安全行算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配后进程,否则,将试探分配作废,恢复原来的资源分配状态,让进程Pi等待。

4、例子
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值