Banker’s Algorithm随记

记于操作系统实验课

关于Banker’s Algorithm算法的过程

变量定义

对于n个进程$p_1…p_n$,这些进程想要访问$m$种资源。

定义矩阵$Max_{n*m}:m_{i, j}=k$表示进程$p_{i}$想要访问$k$个资源$R_{j}$

定义矩阵$Allocation_{n*m}:a_{i, j}=k$表示进程$p_{i}$已经被分配了$k$个$R_{j}$资源。

定义矩阵$Need_{n*m}:n_{i, j}=k$ 表示进程$p_{i}$还需要分配$k$个$R_{j}$资源。

e.g.

线程占用最大资源及已经分配资源

线程占用最大资源及已经分配资源

Need矩阵情况

Need矩阵

算法步骤

  1. 将当前的可用资源$(3, 3, 2)$与$p_0 ~ p_4$的need进程比较。

  2. 比较发现$p_0$无法进行,比较$p_1$,可以执行。
    I. 首先将$need_1$的三组数从可用的资源$(3, 3, 2)$中减掉,剩余$(2, 1, 0)$
    II. 再将剩余的$(2, 1, 0)$加上$p_1$的最大资源,及完成$p_0$后的worker数量,结果是$(2, 1, 0) + (3, 2, 2) = (5, 3, 2)$

  3. 用以上的规律得出剩下全部worker的值。

执行结果

worker情况

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值