• 关于死锁的简单知识


    计算机中的独占性资源,在任意时刻它们只能被一个进程使用,比如磁带,打印机等。为了避免工作混乱,操作系统可以授权一个进程临时排斥其他进程访问某种资源的能力。这样一来,死锁问题也随之产生。死锁可能发生在进程之间,机器之间,数据库系统中。

    大部分死锁都与资源相关。资源分为可抢占式资源和不可抢占式资源,一般来说,可抢占式资源发生死锁的概率较低。


    资源死锁的4个必要条件:

    1)互斥条件:指进程对所分配到的资源进行排它性使用,每个资源要么是分配给一个进程,要么是可用的。

    2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。

    3)不可抢占条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。

    4)环路等待条件:指在发生死锁时,必然存在一个进程-资源的环形链,每个进程都在等待下一个进程的资源。

    死锁发生时,这四个条件一定是同时满足的,如果任何一个不成立,死锁就不会发生。

    对于基础的情况,我们可以通过资源分配图来判断有没有发生死锁,只需要按照请求和释放的次序一步步进行,每一步之后都检查是否包含了环路,如果有环路,就有死锁,反之,就没有。

    而处理死锁,有以下几种方法:

    1)死锁检测和恢复  在这种情况下,系统并不阻止死锁的发生,先是允许死锁,在检测到死锁发生后,采取措施进行恢复。

      可以利用抢占恢复,回滚恢复,还可以通过杀死进程来恢复,可能代价也比较大。

    2)仔细对资源进行分配,动态的避免死锁。

      有一个2进程避免死锁的资源轨迹图,避开阴影部分;还有著名的银行家算法。

    3)通过破坏引起死锁的4个条件之一,防止死锁产生。

      破坏互斥条件:尽量少分配那些不是绝对必须的资源

      破坏请求和保持条件:规定进程在开始前请求所需的全部资源。此方法目前认为是最好的。

      破坏不可抢占条件:对一些资源进行合理的虚拟化,使用面较窄。

      破坏环路等待条件;对资源按照顺序编号。

  • 相关阅读:
    koa学习
    nodejs工作大全
    《程序员周先生之前端开发面试题》
    使用vue技术应当使用的技术和兼容性选择
    IdentityServer4简单入门demo系列 (一)认证服务端
    IdentityServer4客户端获取Token的方法
    wpf 右键菜单的使用
    wpf 在用户控件里,关掉父级窗口
    EntityFramework集成Sqlite的详细步骤
    wpf DataGrid 里的列模版的值绑定
  • 原文地址:https://www.cnblogs.com/kekoukele987/p/7406793.html
Copyright © 2020-2023  润新知