进程死锁
来源:互联网 发布:巨牌一搜网络一搜同志 编辑:程序博客网 时间:2024/06/09 23:09
程序员面试宝典:
进程死锁:两个或两个以上的进程在执行过程中,因为争夺资源而造成的一种相互等待的现象,若无外力作用,他们都将无法推进下去,此时系统产生死锁。
产生进程死锁的4个必要条件:
互斥条件:每个资源一次只能被一个进程使用;
请求与保持条件:一个进程因请求而阻塞时,对已获得的资源保持不放;
不剥夺条件:进程已获得资源,在未使用完之前,不能强行剥夺;
循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这4个条件是发死锁的必要条件,只要发生死锁,只写条件必然成立。只要上述条件之一不满足,则不会发生死锁。
死锁的避免:确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待的情况下占用资源,在系统运行过程中,对进程发出的每一个系统能够满足的自愿申请进行动态检查,并且根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配。因此,对于资源的分配要给与合理的规划。
根据死锁产生的4个必要条件,只要使其一不成立,死锁就不会出现。为此,可采取如下三种预防策略:
1.采用资源静态分配策略,破坏“部分分配”条件;
2.允许进程剥夺使用其他进程占有的资源,从而破坏“不可剥夺”条件;
3.采用资源有序分配法,破坏“环路”条件。
需要注意的是:互斥条件无法破坏。
假设一个系统包括A到G七个进程,R到W六中资源。资源间的所有权关系,如下:
1、进程A占有资源R,请求资源S2、进程B不占有任何资源,请求资源T3、进程C不占任何资源,请求资源S4、D占有资源U,请求资源S和T5、E有资源T,请求资源V6、F有资源W,请求资源S7、G有资源V,需要资源U
下列说法中正确的是( )
进程D、E、G被死锁
进程D、E、C被死锁
进程A、C、F没有被死锁
进程A、D、E被死锁
画个图。成环路的就是死锁进程
0 0
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程死锁
- 进程 进程通信 死锁
- Sql 死锁 杀死死锁进程
- Hibernate JPA中@Transient、@JsonIgnoreProperties、@JsonIgnore、@JsonFormat、@JsonSerialize等注解解释
- java的Arrays类的应用
- 一些简单而又不失个性的css3片段(持续更新)
- Fragment要点总结
- java虚拟机内存不足,“Could not create the Java Virtual Machine”问题解决方案
- 进程死锁
- handler 的Looper.prepare()的问题
- JAVA_WEB之EL表达式与11大隐式对象
- JAVA 程序员一定知道的优秀第三方库(2016 版)
- redis缓存技术学习
- 破而后立
- 4.子级调用父级同名方法
- Realm for Android
- android设置去标题栏以及设置横竖屏方法