【梳理】简明操作系统原理:银行家算法(内附文档高清截图)

银行家算法
W. Dijkstra的银行家算法是一种避免死锁的算法。命名原因是该算法原本为银行设计,确保银行发放贷款时,不会发生不能满足全部客户的需求的情况。
1、银行家算法需要的数据结构
设1个CPU核心上有:
s个进程。进程向量
P ⃗=(p,p_2,…,p_s)
t种空闲资源。空闲资源向量
F ⃗=(f_1,f_2,…,f_t)
最大需求矩阵
M =(m_i ,j )(s×t)
m_i ,_j表示:第i个进程p_i在运行过程中需要j种资源的最大数量。
分配矩阵
A=(a_i ,j )(s×t)
a_i ,_j表示:进程p_i已经分配到资源j的数量。
需求矩阵
N=(n_i ,j )(s×t)
n_i ,_j表示:进程p_i在对资源j的需求最大的时刻,仍然需要分配的资源j的数量。
不难看出
∀i∈{1,…,s}, j∈{1,…,t}, n_i ,_j=m_i ,_j-a_i ,_j
2、银行家算法的步骤
设现在开始向进程p_i尝试分配需要的资源。进程p_i需要的每种资源的数量用请求向量R_i=(r_i ,_1,〖 r〗_i ,_2,…, r_i ,_t)表示。
银行家算法的步骤是:
【1】如果r_i ,_j≤n_i ,_j,则跳至【2】;否则报错,因为进程p_i需要的资源用量超过原先已知的最大值。
【2】如果r_i ,_j≤a_i ,_j,则跳至【3】;否则,当前可用资源不足,进程p_i需要等待,或尝试为另一个进程分配资源。
【3】系统开始尝试将资源分配给进程p_i。先修改如下的值:
F ⃗_j-=r_i ,_j

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值