zoukankan
html css js c++ java
什么是死锁,简述死锁发生的四个必要条件,如何避免与预防死锁
什么是死锁
死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。例如,在某一个计算机系统中只有一台打印机和一台输入 设备,进程P1正占用输入设备,同时又提出使用打印机的请求,但此时打印机正被进程P2 所占用,而P2在未释放打印机之前,又提出请求使用正被P1占用着的输入设备。这样两个进程相互无休止地等待下去,均无法继续执行,此时两个进程陷入死锁状态。
死锁产生的原因
1.
系统资源的竞争
系统资源的竞争导致系统资源不足,以及资源分配不当,导致死锁。
2.
进程运行推进顺序不合适
进程在运行过程中,请求和释放资源的顺序不当,会导致死锁。
产生死锁的四个必要条件:
互斥条件:
一个资源每次只能被一个进程使用,即在一段时间内某 资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。
请求与保持条件:
进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
不可剥夺条件:
进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能 由获得该资源的进程自己来释放(只能是主动释放)。
循环等待条件:
若干进程间形成首尾相接循环等待资源的关系
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
死锁的避免与预防:
死锁避免的基本思想:
系统对进程发出每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,如果分配后系统可能发生死锁,则不予分配,否则予以分配。这是一种保证系统不进入死锁状态的动态策略。
理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何让这四个必要条件不成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。
死锁避免和死锁预防的区别:
死锁预防是设法至少破坏产生死锁的四个必要条件之一,严格的防止死锁的出现,而死锁避免则不那么严格的限制产生死锁的必要条件的存在,因为即使死锁的必要条件存在,也不一定发生死锁。死锁避免是在系统运行过程中注意避免死锁的最终发生。
查看全文
相关阅读:
ASP.NET编程的十大技巧
ADO.NET实用经验总结(5大对象访问数据库)
一些讲C#3.0 的好文章收集
新打开窗口,MD5加密,实体类方式保存在Session中,获得系统根路径,分页,动态获取XML数据到页面
System.Drawing.Color.FromArgb(144,238,255);
重要社区链接(资源技术网站)
case when factsqy is NULL then '0' when factsqy is NOT NULL then factsqy end as factqtys
了解Linq之前需要知道的一些概念
sql left out join http://hi.baidu.com/llscompazz/blog/item/dc5e23d9ce2b62eb39012fb4.html
正則表達式驗證通用方法
原文地址:https://www.cnblogs.com/wsw-seu/p/8037043.html
最新文章
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
JAVA中basepath的应用相对路径问题
JAVA中的集合
ssh连接两个数据库
Log4j配置详解
怎样用photoshop制作网站横条广告?
MySQL设置自增字段的方法介绍
fn标签
模型驱动
tomcat站点配置
热门文章
Java中serialVersionUID的解释
数据绑定技术(table,DataSet ,DataView,DataReader ,DropDownList,DataBinder.Eval(),datagrid,dr,)ArrayList,Hashtable绑定到ListBox控件,xml
技术要求 微软平台技术 Web技术 网络协议开发 技术框架 微软产品 解决方案
ADO.net 中数据库连接方式(sql,access,ora,db2)
ADSL猫(511)配置为路由模式多台机子上网的方法
C#中ref和out的使用小结
提高C#编程水平的50个要素
DataList控件的选择模板,REPEATER控件的模板
VS2005快捷键大全
刷新母页面,注册客户端代码
Copyright © 2011-2022 走看看