Post

死锁

死锁

多个进程因循环等待资源而造成无法执行的现象

死锁产生的必要条件

  • 互斥使用
    • 某一时间段内的某资源仅为一个进程所占有,其他进程请求该资源只能等待
  • 不可抢占
    • 资源不能被强行夺走,只能由拥有该资源的进程自行释放
  • 请求和保持
    • 进程至少占有一个资源,又提出了新的资源请求
  • 循环等待
    • 在资源分配图中存在一个环路

死锁处理方法

死锁预防

破坏死锁的必要条件

  • 破坏互斥使用
    • 资源的固有特性,通常无法破除
  • 破除不可抢占
    • 如果一个进程占有资源并申请另一个不能立即分配的资源,那么已分配资源就可被抢占
    • 只对状态能保存和恢复的资源(如CPU,内存空间)有效,对打印机等外设不适用
  • 破除请求和保持
    • 在进程执行前,一次性申请所有需要的资源
  • 破除循环等待
    • 对资源类型排序,资源申请必须按序进行

死锁避免

  • 判断此次请求是否造成死锁,若会造成死锁,则拒绝该请求
  • 安全状态:系统中的所有进程存在一个可完成的执行序列P1, P2, …, Pn,则称系统处于安全状态
  • 安全序列:上面的执行序列P1, P2, …, Pn
  • 银行家算法
    • 可利用资源矩阵Available
    • 最大需求矩阵Max
    • 分配矩阵Allocation
    • 需求矩阵Need
    • 工作向量work

死锁检测

  • 只要可用资源足够,则分配,发现问题再处理
  • 资源分配图
  • 死锁定理

死锁恢复

  • 资源剥夺法
    • 挂起某些死锁进程,并抢占它们的资源
  • 撤销进程法
    • 强制撤销部分甚至全部死锁进程,并剥夺这些进程的资源
  • 进程回退法
    • 让一个进程回退到足以避免死锁的地步,进程回退时自愿释放资源而非被剥夺

死锁忽略

鸵鸟策略:出现死锁的概率很小,并且出现之后处理死锁会花费很大的代价,还不如不做处理,OS中这种置之不理的策略称之为鸵鸟策略,是平衡性能和复杂性而选择的一种方法

  • 对死锁不在意,出现则重启OS
  • 大多数操作系统使用它
This post is licensed under CC BY 4.0 by the author.