美文网首页
操作系统(死锁避免)----银行家算法解题

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

作者: 睡前听卡农 | 来源:发表于2020-10-26 18:57 被阅读0次

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

    产生死锁的四个条件:

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

    死锁的处理

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

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

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

    例题:假设系统中有三类互斥资源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。

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

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

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

    相关文章

      网友评论

          本文标题:操作系统(死锁避免)----银行家算法解题

          本文链接:https://www.haomeiwen.com/subject/aekzmktx.html