定义

死锁是指两个或多个进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的僵局,若无外力干涉,它们都将无法继续推进。

核心直觉

就像两辆车在单行道上迎面相遇,谁都不肯倒车让路,结果两辆车都永远卡在原地。在计算机系统中,当进程 A 占有资源 X 并等待资源 Y,而进程 B 占有资源 Y 并等待资源 X 时,就会发生这种“互相卡死”的现象。

关键点

  • 四个必要条件:互斥、占有并等待、非抢占、循环等待。只有这四个条件同时满足才会发生死锁。
  • 应对策略:通常包括死锁预防(破坏必要条件)、死锁避免(如银行家算法)、死锁检测与解除,以及直接忽略(鸵鸟算法)。

参考资料