《现代操作系统》—— 第12章 死锁

  1. 死锁的基本概念:
    • 死锁定义:在一组进程中,每个进程都无限等待该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。
    • 危害:如果死锁发生,会导致系统资源大量浪费,甚至导致系统崩溃


    • 发生死锁的原因:资源有限,或锁和信号量使用错误
    • 产生死锁的必要条件:
      • 互斥使用(资源独占):一个资源每次只能给一个进程使用
      • 占有且等待(请求和保持,部分分配):进程在申请新的资源的同时保持对原有资源的占有
      • 不可抢占(不可剥夺):资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放
      • 循环等待:存在一个进程等待队列{P1,P2,...,Pn},其中P1等待P2占有的资源,P2占有P3的资源,...,Pn等待P1占有的资源,形成一个进程等待环路
  2. 用图判断进程组内是否存在死锁:
    • 资源分配图:
    • 资源分配图画法说明:
    • 死锁定理:
    • 资源分配图的化简:


      • 画至最简后,如果图中所有节点都是孤立的,则说明没有死锁;否则说明系统中存在死锁
  3. 死锁的预防
    • 解决死锁的方法:
    • 预防死锁:
    • 死锁避免
      • 关于死锁避免的讨论——根据资源限制


      • 死锁避免的定义:


      • 安全序列的概念


      • 死锁避免的典例——银行家算法
        • 银行家算法也是基于上面对死锁避免的讨论,资源受限时,实时计算当前申请是否会导致不安全状态,从而决定是否进行资源分配。
  4. 死锁的检测与解除
    • 死锁检测:
      • 一个简单的死锁检测算法:
      • 死锁的解除
posted @ 2020-07-21 20:39  凉风SK  阅读(182)  评论(0编辑  收藏  举报