九、死锁

86 阅读1分钟

死锁

多个进程由于竞争资源而造成的阻塞现象,若无外力作用,这些进程无法继续推进

死锁产生的原因有系统资源的竞争以及进程推进顺序非法

死锁产生原因

  • 互斥条件:共享资源只能被一个进程访问
  • 不可剥夺条件:访问共享资源进程,资源不能被剥夺
  • 请求并保持条件:保持当前的资源,并且请求其他资源
  • 循环等待条件:存在共享资源的循环等待链

死锁预防

  • 破坏互斥条件:将共享资源改为可以同时访问
  • 破坏不可剥夺条件:请求新资源无法满足时必须释放已有资源
  • 破坏请求并保持条件:进程开始运行时一次性申请所有需要资源
  • 破坏循环等待链:对所有资源进行排序,所有进程必须要按照资源序号进行申请

死锁检测

  • 利用资源分配图,图中有资源和节点
  • 死锁原理:
    • 当且仅当此状态下资源分配图不可完全简化
    • 简化过程类似于“拓扑排序”算法

死锁的解除

  • 资源剥夺:
    • 挂起死锁进程
    • 剥夺其资源
    • 把资源分配给其他线程
  • 撤销进程
  • 进程回退:回退到足以避免死锁的地步

资源分配图检测死锁

image.png