死锁产生的必要条件
死锁产生必须同时满足四个条件,只要其中任意一条不成立,死锁就不会发生。
1、互斥条件:进程要求对所分配的资源进行排他性控制,即在一段时间内某项资源只被
一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。如图一
2、非抢占:进程所获得的额资源在未使用完毕之前,不能被其他进程强行夺走,即
只能有获得该资源的进程自己来释放。如图二
3、占有并等待:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资
源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。如图三
4、循环等待条件:存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时
被链中的下一个进程请求。即存在一个处于等待状态的进程集合{P1,P2,P3,···,Pn},
其中Pi等待的资源被P(i+1)占有(i=1,2,3,···,n-1),Pn被P0占有。
循环等待条件意味着占有并等待条件,这样四个条件并不完全独立。如图四
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。