关于死锁
来源:互联网 发布:火车头采集本地数据 编辑:程序博客网 时间:2024/05/18 01:34
什么是死锁?
死锁是指两个或两个以上的进程(线程)在执行过程中,因为竞争资源而形成一种相互等待的现象,而是没有外力的作用的话,他们将无法继续推进下去。
例如,交叉持锁死锁的状态,如图
死锁产生的4个必要的条件
(1)互斥条件:某一个时刻一个资源只允许一个进程(线程)所占有。
(2)请求和保持条件:进程(线程)在某一时刻至少拥有一个资源,在申请其他资源的时候,如果其他资源被占用,他将挂起等待,并且对自己所拥有的资源不进行释放。直到获得其他资源以后他才释放。
(3)不剥夺条件:一个进程(线程)在占用一个资源的使用期间,不可以强行剥夺,只能在他使用完毕以后自行释放。
(4)环路等待条件:多个进程(线程)必定产生了头尾相接的等待资源的关系。
死锁的处理方法
(1)预防死锁:(事先预防)只需要破坏产生死锁的四个必要的条件中的其中一个或者多个,来预防死锁。
(2)避免死锁:(事先预防)在资源的动态分配过程中,用某种方法去防止系统进入不安全的状态,从而避免死锁。
(3)检测死锁:(不需要事先预防)允许运行过程中发生死锁,只需要在系统发生死锁时能精确的定位到进程和资源,然后才去相应的措施,从系统中将死锁解除掉。
(4)解除死锁:(和检测死锁配套使用)常见的实施措施是撤销或挂起一些进程,再将这些资源分配给已阻塞的进程,使阻塞状态变成就绪状态,系统得以继续运行。
阅读全文
0 0
- 关于死锁
- 关于死锁
- 关于死锁
- 关于死锁
- 关于死锁
- 关于SQL Server死锁
- 关于oracle死锁
- 关于死锁问题
- 关于计算机系统的死锁
- 关于死锁分析
- 关于MySQL死锁
- 关于线程死锁
- 关于dispatch_sync死锁问题
- 关于MySQL中的死锁
- 关于线程死锁
- 关于死锁的思考
- 关于死锁的产生
- 关于dispatch_sync死锁问题
- PAT乙级 1015. 德才论 (25)
- 编译sdl项目时出现无法解析的外部符号 __imp__fprintf解决办法
- 【Linux】Linux一些需要掌握的命令和内容
- 深度学习利器: TensorFlow系统架构及高性能程序设计
- httpd(apache)服务器--知识总结(2)
- 关于死锁
- Hibernate延迟加载(查询优化),关联级别延迟加载优化策略
- 修改my-message jquery 消息插件
- 人工智能的发展
- PAT乙级 1016. 部分A+B (15)
- 第一章 Web MVC简介 —— 跟开涛学SpringMVC 博客分类: 跟开涛学SpringMVC webmvcjavaeespring跟开涛学SpringMVC Web MVC简介 1.1、We
- Math对象
- 2序列比对问题
- Numpy-基本操作