死锁的常见问题
来源:互联网 发布:知之深爱之切全文pdf 编辑:程序博客网 时间:2024/06/05 20:51
1.死锁的概念:
多个线程在执行态中因争夺资源造成的一种僵局,若无外力将一直保持这种状态,这些永远互相等待的进程称为死锁进程
2.造成死锁的四个必要条件
1)互斥条件:进程对所分配到的资源进行排他性使用,即在一个时间段内某资源只能被一个进程占用,若有其他进程访问,则要等待,直到该资源被占用的进程释放掉。
2)请求和保持:进程已经占用至少一个资源,又要请求新的资源,新的资源被其他进程占用,此时请求阻塞,但又对自己已占有的资源保持不放。
3)不剥夺条件:指进程占有的资源在未使用完之前不能被剥夺,只能在使用完后自己释放掉。
4)环路等待条件:p0在等待p1的资源,p1在等待P2的资源,p2在等待p0的资源。
3.处理死锁的四个方式
死锁的预防、死锁的避免、死锁的检测、死锁的解除
1)死锁的预防:破坏生成死锁的四个条件中的一个。比如进程在申请资源时一次性申请所需要的全部资源,这就破坏了保持和等待条件。将资源分层,得到上一层资源后,才能申请下一层资源,破坏了环路等待条件。
2)死锁避免:每次申请资源时判断这些操作是否安全。比如银行家算法。会增大系统的开销。
3)死锁的检测:判断系统是否处于死锁状态。
4)死锁的解除:与死锁检测一起使用,方式是剥夺资源,将进程所拥有的资源强行收回分配给其他进程。
要避免死锁,要事先知道系统所拥有的资源数量和属性。
0 0
- 死锁的常见问题
- 面试常见问题 死锁代码&单例模式
- 死锁以及死锁的解决办法
- 常见问题及解决办法 整理之6(关于死锁)
- 死锁&死锁的产生条件&死锁的避免
- 死锁的必要条件和死锁的原因
- 构成死锁的必要条件是什么?如何检测死锁,解除死锁?
- 死锁的四个必要条件+ 处理死锁
- 死锁的四个必要条件及处理死锁
- 死锁 死锁的检测 预防和避免
- 死锁的四个必要条件及处理死锁
- 死锁的四个必要条件及处理死锁
- 死锁的必要条件及如何处理死锁
- 死锁 避免死锁的常见方法
- 死锁和避免出现死锁的方式
- 死锁的产生和预防死锁
- 死锁的产生以及如何避免死锁
- 死锁的必要条件,怎么处理死锁
- 53. Maximum Subarray -Easy
- raw_input() 与 input() Python
- Java抽象类的作用和使用
- escape()、encodeURI()、encodeURIComponent()区别详解
- Hibernate笔记三,表设计之多对多
- 死锁的常见问题
- Reverse String
- 从菜鸟到入门,掌握 JSON
- oracle的增删改查
- javaweb学习(4):MVC模式和servlet/JSP以及Filter的详细介绍与使用
- cmake资料合集
- getHibernateTemplate()和getSession()的区别(转贴)
- Python将JSON格式数据转换为SQL语句以便导入MySQL数据库
- rectangle