产生死锁的4个必要条件如下:
1、互斥条件:进程互斥使用资源,一旦某个资源被占用,则要使用该资源的进程必须等待。
2、占有和等待条件(部分分配条件):进程申请新资源得不到满足而等待时,不释放已占有资源。
3、不剥夺条件:一个进程不能抢夺其他进程占有的资源。
4、循环等待条件(环路条件):存在一组进程循环等待资源的现象。 
前3个条件是死锁产生的必要条件,不是充分条件,第4个条件是前3个条件同时存在时产生的结果,
只要破坏4个条件之一,死锁即可防止。