搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > CPP问答 > 死锁产生的原因

死锁产生的原因

CPP问答 2018-06-02
举报

死锁产生的原因

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


死锁产生的必要条件

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

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

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

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

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


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《死锁产生的原因》的版权归原作者「CPP问答」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注CPP问答微信公众号

CPP问答微信公众号:CPP-QA

CPP问答

手机扫描上方二维码即可关注CPP问答微信公众号

CPP问答最新文章

精品公众号随机推荐

举报