问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是死锁?

发布网友 发布时间:2022-04-29 03:32

我来回答

1个回答

热心网友 时间:2022-04-11 11:06

在并发程序设计中,死锁 (deadlock) 是一种十分常见的逻辑错误。通过采用正确的编程方式,死锁的发生不难避免。
死锁的四个必要条件
在计算机专业的本科教材中,通常都会介绍死锁的四个必要条件。这四个条件缺一不可,或者说只要破坏了其中任何一个条件,死锁就不可能发生。我们来复习一下,这四个条件是:
•互斥(Mutual exclusion):存在这样一种资源,它在某个时刻只能被分配给一个执行绪(也称为线程)使用;
•持有(Hold and wait):当请求的资源已被占用从而导致执行绪阻塞时,资源占用者不但无需释放该资源,而且还可以继续请求更多资源;
•不可剥夺(No preemption):执行绪获得到的互斥资源不可被强行剥夺,换句话说,只有资源占用者自己才能释放资源;
•环形等待(Circular wait):若干执行绪以不同的次序获取互斥资源,从而形成环形等待的局面,想象在由多个执行绪组成的环形链中,每个执行绪都在等待下一个执行绪释放它持有的资源。
解除死锁的必要条件
不难看出,在死锁的四个必要条件中,第二、三和四项条件比较容易消除。通过引入事务机制,往往可以消除第二、三两项条件,方法是将所有上锁操作均作为事务对待,一旦开始上锁,即确保全部操作均可回退,同时通过锁管理器检测死锁,并剥夺资源(回退事务)。这种做法有时会造成较大开销,而且也需要对上锁模式进行较多改动。
消除第四项条件是比较容易且代价较低的办法。具体来说这种方法约定:上锁的顺序必须一致。具体来说,我们人为地给锁指定一种类似“水位”的方向性属性。无论已持有任何锁,该执行绪所有的上锁操作,必须按照一致的先后顺序从低到高(或从高到低)进行,且在一个系统中,只允许使用一种先后次序。
请注意,放锁的顺序并不会导致死锁。也就是说,尽管按照 锁A, 锁B, 放A, 放B 这样的顺序来进行锁操作看上去有些怪异,但是只要大家都按先A后B的顺序上锁,便不会导致死锁。
举例
假如有三个对象A、B、C,我们人为约定它们的锁序是: A 先于 B 先于 C。举例说来,下列锁序均为合法:
• 锁C,放C
• 锁B,放B
• 锁B,锁C,放B,放C
• 锁B,锁C,放C,放B
• 锁A,放A
• 锁A,锁C,放A,放C
• 锁A,锁C,放C,放A
• 锁A,锁B,放A,放B
• 锁A,锁B,放B,放A
• 锁A,锁B,锁C,放A,放B,放C
• 锁A,锁B,锁C,放C,放B,放A
而在上面定义的系统中,可能导致发生死锁典型上锁序列包括:
• 锁B,锁A,锁C,放C,放A,放B
(因为先B后A的上锁顺序违反了锁序约定,如果另一执行绪同时按照先A后B的顺序上锁,则可能由于执行绪甲获得了B,执行绪乙获得了A,而导致双方同时等待对方释放所持有的锁,从而形成死锁局面;解法是将操作序列中增加适当的锁操作,即改为锁B,放B,锁A,锁B,锁C,放C,放A,放B)
或者说,只要拿锁的时候不出现逆序(例如拿着C的时候试图抓B或A,或者拿着B的时候试图抓A),并出现潜在逆序的时候先放掉“小”锁再抓大的,就一定不造成死锁了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请问哪位大哥“谨谢不敏”是什么意思? 小女子尽谢不敏什么意思 谨谢不敏是什么意思? 敬谢不敏是是什么意思? 谢不敏的意思是什么 谢不敏词语解释 什么叫“谢不敏”? 6岁儿童晚上睡眠不好怎么办 六岁孩子精神异常怎么办 小程序开发需要什么技术 没有技术如何开发小程序 什么是死锁,死锁的原因是什么 什么是死锁(deadlock)? 福清福泽公馆七号楼2303x建筑面积140平方室内设计剩下多少平方_百度问一问 在福州优秀的室内设计师哪里找,有没有适合的推荐几个参考下? 福州哪些大学学校有室内设计专业 福州的优秀室内设计师,当下时兴什么样的室内设计理念? 亚美广告有限公司福清分公司怎么样? 福建诚丰装饰设计工程有限公司怎么样? 福清哪里设计软件最专业的? 主要 CAD ,3D!要专业的!! 福建中铭装饰设计工程有限公司怎么样? 福清思新广告装潢有限公司怎么样? 福清福泽公馆七号楼2303x建筑面积140平方室内设计剩下多少平方_百度问一问 福建福州和福清,有什么学校的中专或者5连专有学室内装修设计的? 福清哪里设计软件最专业的? 主要 CAD ,3D!要专业的!! 在请教下 现在的室内设计 都用些什么别的软件吗 福清市凯悦翁装饰设计工程有限公司怎么样? 福清市康家装饰设计工程有限公司怎么样? 福清市美星装饰设计有限公司怎么样? 福清市伍家装饰设计有限公司怎么样? 问个问题,wps表格与excel功能相同吗 wps和excel一样吗 什么是死锁?产生死锁的原因是什么? 用手机看视频,里面有个二维码,我很想扫描这个二维码,我怎么样才能扫描到呢? 计算机死锁是什么意思? 何谓死锁 产生死锁的原因和必要条件是什么 为什么说死锁 什么是死锁?解决死锁有那几种策略?这些策略分别有哪些实现方法?_百度... 什么是死锁及死锁的必要条件和解决方法 死锁的概念是什么? PPT图标链接`点这个图标能在下面出现文字`请问怎么设置超链接 什么是死锁,简述死锁发生的四个必要条件,如何避免死锁 什么是死锁?如何解决死锁问题 如何让win10不记录打开的文件 姓罗的男孩取什么名字好 2015年2月3日生罗姓男孩求取个好名 求介绍一本好用的中考作文参考书 中学生作文学习辅导书推荐 中考作文辅导书 曹操送宁波有没有分公司 手机拍的照片在手机上看非常清晰,怎么放到电脑上看就不清晰了呢 中考作文书选什么好? 推荐中考作文的书或报刊