什么是银行家算法?详解操作系统中的银行家算法以及银行家算法例题

银行家算法(英语:Bankers Algorithm)是一个避免死锁的著名算法 在银行中,客户申请贷款的数量是有限的,每个客户在第

银行家算法(英语:Banker's Algorithm)是一个避免死锁的著名算法

  在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。

其中的几个重要参数

  Max(最多需要多少资源)

  Allocation(原本已经分配出去的资源)

  Need(需要多少资源)

例题:由5个进程组成进程集合P={P0,P1,P2,P3,P4},且系统中有3类资源A,B,C,假设在某时
刻有表3-4所示的进程资源分配情况。

要判断是否为安全状态,首先先找出它的Need,Need即Max(最多需要多少资源)减去Allocation(原本已经分配出去的资源)

我们重新画一下图,把Max放在左边,Allocation放在右边,然后用Max减去Allocation得到Need

我们看xyz等于1,4,0也就是Available(1,4,0)的时候要怎么做

当Available为(1,4,0)时,看能满足哪一个Need的需求,(0,0,1)不行,因为Available的z为0,不能满足1,(0,7,5)也不行,以此类推,第一次只能满足Need(1,0,0),这个时候就用(1,4,0)加上Need(1,0,0)对应的Allocation(1,3,5),此时的值为(2,7,5),再用(2,7,5)重复上面的步骤,看能满足哪一个Need的需求,此时所有的Need都能满足,所以系统处于安全状态。

我们看xyz等于0,6,2也就是Available(0,6,2)的时候

当Available为(0,6,2)时,只能满足p3的需求,加上p3的allo,那么值就为(0,6,4),此时能满足p4了,加上p4的(0,0,1),那么值就为(0,6,5),此时能满足p0,但是加上p0的allo后依旧无法满足p1和p2,所以系统处于安全状态。

其他俩个以此类推

发布者:admin,转转请注明出处:http://www.yc00.com/web/1753494986a5046642.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信