Coffman, Elphick和Shoshani于1971年总结了产生死锁的四个必要条件:
互斥条件(mutual exclusion):一个资源一次只能由一个进程使用,如果有其它进程申请使用该资源,申请进程必须等待直到所申请的资源被释放。
部分分配条件(hold and wait);一个进程已占有一定资源后,执行期间又再申请其它资源。
不可抢占条件(no preemption):一个资源仅能由一个占有它的进程来释放,而不能被其它进程抢占使用。
循环等待条件(circular wait):在系统中存在一个由若干进程申请使用资源而形成的循环等待链,其中每一个进程占有若干资源,同时由又在等待下一个进程所占有的资源。
要防止死锁问题,其根本的办法就是要使得上述四个条件之一不存在。