操作系统(死锁避免)—-银行家算法解题

死锁:是指两个以上的进程都因要求对方已经占有的资源,导致无法运行下去的现象,死锁是系统的一种出错状态,不仅浪费大量的系统资源,甚至会导致整个系统的崩溃,所以死锁是尽量预防和避免的。

产生死锁的四个条件:

  • 互斥条件
  • 请求保持条件
  • 不可剥夺条件
  • 环路条件

死锁的处理

  • 死锁的预防
  • 死锁的避免
  • 死锁的检测
  • 死锁的解除

银行家算法是死锁避免的重要算法。

银行家算法:资源==钱;收回资源==收回贷款;收不回资源==不会放贷;

例题:假设系统中有三类互斥资源R1,R2,R3。可用资源分别是9,8,5.在T0时刻系统有P1,P2,P3,P4,P5五个进程,这些进程最大的需求和已分配的资源如下所示,如果按_执行,那么系统的状态是安全的。

进程资源 最大需求(Max) 已分配资源(Allocation)
R1 R2 R3 R1 R2 R3
p1 6 5 2 1 2 1
p2 2 2 1 2 1 1
p3 8 1 1 2 1 0
p4 1 2 1 1 2 0
p5 3 4 4 1 1 3

解:第一步:根据可用资源,可以求得剩余资源。

R1=9-(1+2+2+1+1)=2

R2=8-(2+1+1+2+1)=1

R3=5-(1+1+0+0+3)=0

第二步:根据剩余资源求得还需要的资源数。

公式:还需资源(Need)=最大需求(Max)-已分配资源(Allocation)。

进程资源 最大需求(Max) 已分配资源(Allocation) 还需资源(Need)
R1 R2 R3 R1 R2 R3 R1 R2 R3
p1 6 5 2 1 2 1 5 3 1
p2 2 2 1 2 1 1 0 1 0
p3 8 1 1 2 1 0 6 0 0
p4 1 2 1 1 2 0 0 0 1
p5 3 4 4 1 1 3 2 3 1

第三部,根据剩余资源数,求出安全序列。

根据剩余资源可得,p2可以执行(条件:每个值都必须≦剩余资源)

进程资源 现有资源(Available) 需要资源(Need) 已经分配资源(Allocation) 现有资源+已经分配资源(Available+Allocation) 完成
p2 2 1 0 5 3 1 2 1 1 4 2 1 True
Need的值必须小于421才可以执行
p4 4 2 1 0 0 1 1 2 0 5 4 1 True
p5 5 4 1 2 3 1 1 1 3 6 5 4 True
p1 6 5 4 5 3 1 1 2 1 7 7 5 True
p3 7 7 5 6 0 0 2 1 0 9 8 5 True

由此可见安全序列为P2–>p4–>p5–>p1–>p3。

其实安全序列不是唯一的,这是为什么呢?

大家可以看出来,现有资源要大于需要资源的情况下是有多种选择的,因此安全序列不唯一。

这个是我觉得做题起来比较容易理解的方法,并不是从原理上来解释银行家算法,要是大家有兴趣看原理,可以从操作系统这本书上面钻研。

【信息由网络或者个人提供,如有涉及版权请联系COOY资源网邮箱处理】

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容