银行家算法

        银行家算法(Banker's Algorithm)是一种避免死锁的著名算法,由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计。该算法以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。

一、基本概念

        在银行家算法中,操作系统被比作银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源则相当于用户向银行家贷款。为保证资金的安全,银行家制定了一系列规则,这些规则被应用于操作系统中以避免死锁的发生。

二、原理

        银行家算法的基本思想是,在分配资源之前,先判断系统是否处于安全状态。若处于安全状态,则进行资源分配;否则,推迟分配以避免死锁的发生。安全状态是指存在一个由系统中所有进程构成的安全序列,即对于每一个进程,它以后尚需要的资源量不超过系统当前剩余资源量与所有已占用资源量之和。

三、需要了解的概念

  1. Available数组:表示系统中每类资源的可用数量。
  2. Max矩阵:定义了系统中每个进程对每类资源的最大需求。
  3. Allocation矩阵:表示系统中每类资源当前已分配给每个进程的数量。
  4. Need矩阵:表示每个进程尚需的各类资源数量,可以通过Max矩阵减去Allocation矩阵得到。

举例如下:

1、这个图中R1,R2,R3表示资源类型,P0,P1,P2,P3,P4表示进程。

2、以第一行P0为例,P0需要的资源数量分别为7 5 3,此时已经分给P0的资源数量为0 1 0。

3、剩下的进程也是一样,同时总资源数为10 5 7,用这个总数减去已经分配的资源可以得到Available数组(也就是剩下的可分配资源数)

4、通过Max矩阵减去Allocation矩阵可以得到need矩阵(也就是总需求减去已经有的资源,就是还需要的资源数)

四、安全状态的判断

举例:P0申请(0 2 0)的资源(注意:与上面的初始数据不同)

1、首先0 2 0是小于P0的所需的,同时0 2 0也是小于可分配的资源,所以是可以尝试的。

2、把0 2 0分配给P0后需要进行安全性判断。

3、那此时,分配给P0的资源就由(0,1,0)加上(0,2,0)为(0,3,0)

所需的资源也需要减去(0,2,0)变成(7,2,3)

剩余的资源Available数组也需要变化

4、判断:通过计算可以发现剩余的可分配资源为(2,1,0),然而此时P0还需(7,2,3)

P1需要(0,2,0)P2需要(6,0,0)P3需要(0,1,1)P4需要(4,3,1)

        通过比较可以发现剩下的资源无论怎么分配都不能使这个几个进程完成,这样的话就陷入了死锁,所以这个申请是不安全的,不能给。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值