死锁产生的原因

Posted CPP问答

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了死锁产生的原因相关的知识,希望对你有一定的参考价值。

死锁产生的原因

系统资源不足、相互竞争资源、请求资源顺序不当


死锁产生的必要条件

互斥、不可抢占、循环等待、请求与保持

1)互斥条件:进程要求对所分配的资源(如打印机)进行排他性控制,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。

2)不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放(只能是主动释放)。

3)请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。

4)循环等待条件:存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被 链中下一个进程所请求。即存在一个处于等待状态的进程集合{Pl, P2, ..., pn},其中Pi等 待的资源被P(i+1)占有(i=0, 1, ..., n-1),Pn等待的资源被P0占有。


以上是关于死锁产生的原因的主要内容,如果未能解决你的问题,请参考以下文章

死锁产生的原因及避免死锁的方法

java 死锁产生原因及解锁(转)

死锁产生的原因及条件和手写死锁

什么是死锁?死锁产生的原因?

死锁的产生原因以及解决方案

MySQL产生死锁原因