操作系统

死锁需要满足的条件

  1. 互斥:资源使用必须互斥,多个进程不能同时使用
  2. 循环等待:请求资源的进程都在等待上一个进程占用的资源,形成一个回环
  3. 非剥夺:进程已获得的资源在完成操作时不可以被剥夺,需要进程自己主动释放
  4. 请求与保持:进程获得资源后,又对其他资源进程请求并且不释放自己已经获得的资源

解除死锁的方法

破环满足的任一条件,如:

  • 乐观锁,破坏互斥条件(请求资源时不会对资源进行上锁)
  • 剥夺资源,即当进程新的资源未得到满足时,释放已占有的资源,从而破坏不可剥夺的条件,数据库deadlock超时
  • 资源有序分配法:系统给每类资源赋予一个序号,每个进程按编号递增的请求资源,从而破坏环路等待的条件,转账场景
  • 资源一次性分配,从而剥夺请求和保持条件、tryLock