死锁是指两个或更多的线程或进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那他们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。
死锁的成因通常是由于资源分配不当或者资源申请和释放的顺序不当所导致的。例如,在系统中有两个进程P1和P2,同时申请资源R1和R2,如果P1先申请了R1,而P2先申请了R2,然后P1再申请R2,而P2又申请R1,那么就会发生死锁。
死锁的解决办法通常有两种:一种是通过人为干预,即手动调整资源的分配情况,使得死锁得以解除;另一种是通过设计算法,在系统运行过程中自动检测和解决死锁问题。