死锁是指在多个进程(或线程)间竞争有限资源时,由于彼此相互等待对方释放已占用资源而陷入的一种无法推进的状态。简单来说,死锁就是一种永久性的阻塞。
死锁的发生必须满足以下四个必要条件,也称为死锁产生的四个条件:
互斥条件:每个资源同一时刻只能被一个进程占用。
请求与保持条件:一个进程在请求其他资源时,仍然保持已经占用的资源。
不剥夺条件:已经分配给进程的资源不能被强制性地剥夺。
循环等待条件:若干个进程之间形成一种头尾相连的循环等待资源关系。也就是说,每个进程都在等待下一个进程所持有的资源,直到形成一个环路。
当以上四个条件同时满足时,就可能出现死锁问题。因此,要避免死锁的产生,需要破坏其中的任意一个条件。