死锁是指 两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象。若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
死锁产生的原因通常包括:
竞争资源:
系统中供多个进程共享的资源数目不足以满足全部进程的需要时,就会引起对资源的竞争而发生死锁。
进程间推进顺序非法:
多个进程循环等待它方占有的资源而无限期地僵持下去。
持有并等待:
一个进程持有某种资源而又都等待着别的进程释放它。
不可剥夺:
已经分配给进程的资源不能被剥夺,只能在使用完之后自己释放。
循环等待:
若干进程之间形成一种头尾相接的循环等待资源的关系。
为了避免死锁,可以采用一些资源分配策略,如避免互斥、避免持有并等待、避免不可剥夺和环路等待等。