Linux_进程死锁?产生条件?产生原因?怎样预防?怎样检测死锁和解除死锁?
来源:互联网 发布:windows phone浏览器 编辑:程序博客网 时间:2024/04/30 13:54
什么是死锁:
死锁的规范定义是集合中的每一个进程都在等待只能由本集合中的其他进程才能引发的事件,那么该组进程是死锁的;通俗一点说就是:是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
此处附上进程转换状态图:
图1 进程状态图
死锁产生的条件:
死锁的发生必须具备以下四个条件:
1、互斥条件。进程所分配的资源进行排他性使用,也就是说在某一段时间内资源只能由某一进程占用,如果其他进程想要使用该资源,则只能等待,知道占用进程释放相应资源。
2、请求资源和保持现有资源。意思是说某一进程当前至少有一个资源,而又申请其他的资源,其他资源又被其他的进程占用,此时该进程等待其他进程释放资源,自己原有的资源也不释放。
3、不剥夺条件。指的是进程占用的资源在没有释放之前,其他进程请求该资源只能等待,不能剥夺,只能在使用完的时候占用进程自己释放。
4、环路等待条件。指在发生死锁的状态下,必然存在一个进程——资源的环形链,即即进程集合{P0,P1,P2,···,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。
死锁产生的原因:
死锁产生的原因主要有以下三个:
1、资源竞争引起的进程死锁。
当系统中供多个进程共享的资源其数目不足以满足各个进程的需要时,则会引起多个进程对资源的竞争而引起死锁。
2、可剥夺资源和不可剥夺资源。系统中的资源可以分为两类,一类是可剥夺资源,是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺。另外一类是不可剥夺资源,请求进程只能等待相应的占用进程主动释放资源才能使用该不可剥夺资源,当系统配置的不可剥夺资源不能满足进程的需要的时候,会使进程在争夺不可剥夺资源的时候发生死锁。
3、竞争临时资源。打印机作为一种系统分配的共享资源属于可顺序重复使用型资源。除此之外还有一种临时资源,其是由一个进程产生,另外一个进程使用,短时间后便无用了的资源,故也称为消耗性资源,如:信号、消息等,他也可能引起死锁。
死锁的预防:
1、有序资源分配法。
- Linux_进程死锁?产生条件?产生原因?怎样预防?怎样检测死锁和解除死锁?
- 死锁的产生原因和解除
- 死锁产生的必要条件及其预防和解除
- 死锁的定义、产生原因、必要条件、避免死锁和解除死锁的方法
- 死锁的定义、产生原因、必要条件、避免死锁和解除死锁的方法
- 死锁的定义、产生原因、必要条件、避免死锁和解除死锁的方法
- 死锁及死锁产生原因条件
- 进程产生死锁的原因
- 死锁的产生条件和预防处理
- 死锁产生的原因和必要条件及预防死锁的方法及死锁的检测与解除
- 死锁产生的原因和必要条件及预防死锁的方法及死锁的检测与解除
- 死锁产生的原因和必要条件及预防死锁的方法及死锁的检测与解除
- 死锁的产生和预防死锁
- 产生死锁的条件
- 死锁的检测和解除
- 死锁的检测和解除
- 死锁以及死锁产生的原因及条件
- 死锁产生的原因及条件、如何避免死锁
- 自然语言处理(NLP)资源
- 如何选择出入金快的外汇平台
- es6 javascript的字符串对象新增团员方法
- Android性能优化学习(四)性能优化工具的使用
- centos7 安装ssh扩展控制linux
- Linux_进程死锁?产生条件?产生原因?怎样预防?怎样检测死锁和解除死锁?
- JS 中 .和[]的区别
- js 数组的深拷贝和浅拷贝三种实现深拷贝的方法
- 使用QTextCursor实现查找功能
- 使用AJAX技术做一个无页面刷新的会员登录功能--解决中文乱码
- CortexM3,CortexM4存储器映像
- 查看MySql时间函数:DATE_SUB、DATE_ADD、UNIX_TIMESTAMP等函数的用法
- ActionBar简单实用
- 带你玩转Visual Studio——带你理解微软的预编译头技术