操作系统之银行家算法

银行家算法是一种预防死锁的方法,通过预分配资源和安全性检查确保系统安全。系统中存在A、B、C三种资源,分别有10、5、7个单位。当进程请求不超过其最大需求且系统资源充足时,才允许分配。判断系统安全性的关键在于所有进程能否按某种顺序完成,若能找到这样的顺序则系统安全,否则不安全。在处理进程请求时,需要确保请求合理且不会导致死锁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

银行家算法

银行家算法是解决死锁问题的。那么怎么解决呢? 死锁的一个原因就是互斥资源, 如上图,有A,B,C三个资源,数量分别是10,5,7,MAX表示的是每个进程需要该资源,需要多少,Allocation表示现在分配了多少,Need表示他们还需要多少,自然Max-Allocation就能算出need。那么怎样算Available呢?某个资源一共有的减去分配了的,就是当前可用的。 work表示当前可用的资源的数目,刚开始肯定就是3 3 2,这个表示我们的系统中的资源还剩多少,然后判断可以分配给哪个进程,把这个进程的名字写在前面,然后need就是这个进程需要的资源数,Allocation是这个进程当前分配了多少,work+Allocation为把两个加起来,意思就是系统执行这个进程,完了以后会释放之前分配给他的,然后这个系统中当前有的资源数就是work+Allocation。执行完,最后的work+Allocation应该跟刚开始系统的资源数相同。 「怎样判断系统是否安全呢?」 如果每个进程都能执行,也就是finish都为true,那么这个系统就是安全的,反之就不安全。


P1发出请求向量,是在他原来需要的1 2 2里,先要请求1 0 2,所以先要判断请求的向量是不是比需要的多,如果多肯定是不对的。第二步,请求的向量需要比当前可用的少,这两个条件都满足以后,我们就把Allocation的向量增加请求向量,把Need向量减少请求向量,然后继续进行计算。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值