死锁的原因:

  • 资源竞争:请求有限资源的进程数大于可用资源
  • 进程推进顺序非法

死锁的必要条件

  • 互斥条件:一个资源只能被一个进程占有
  • 不可剥夺:进程占有的资源不会被释放
  • 请求 & 保持:请求另一个资源的同时自己的资源不释放
  • 循环等待:形成循环等待链

死锁的处理策略

  • 预防:未运行状态就保证不会发生死锁,一次性请求所有资源,资源剥夺,按顺序分配
  • 避免:运行了也不会发生死锁,限制阻塞时间,寻找安全进行顺序
  • 检测:定期检查死锁是否发生
  • 解除:剥夺资源、撤销进程、恢复到死锁前的状态