死锁产生的原因
Posted CPP问答
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了死锁产生的原因相关的知识,希望对你有一定的参考价值。
死锁产生的原因
系统资源不足、相互竞争资源、请求资源顺序不当
死锁产生的必要条件
互斥、不可抢占、循环等待、请求与保持
1)互斥条件:进程要求对所分配的资源(如打印机)进行排他性控制,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。
2)不剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放(只能是主动释放)。
3)请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
4)循环等待条件:存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被 链中下一个进程所请求。即存在一个处于等待状态的进程集合{Pl, P2, ..., pn},其中Pi等 待的资源被P(i+1)占有(i=0, 1, ..., n-1),Pn等待的资源被P0占有。
以上是关于死锁产生的原因的主要内容,如果未能解决你的问题,请参考以下文章