深入探究死锁的三种处理方法
死锁的处理方法我们以火灾为例。要想火灾处理有三种办法,(1)提前预防,使环境没有火灾产生的环境,如降低周边温度,周边没有氧气等等(2)当出现火灾时,我们及时救火。(3)如果火灾离消防队比较远,等消防队过去火,就烧完了,我们可以自动放弃不管他。
类似火灾死锁的三种处理方法 死锁预防;死锁避免;鸵鸟政策。
死锁预防
死锁出现有4个必要条件。只要确保一个必要条件不成立,就能预防死锁发生。下面我们分别讨论下每个条件不成立的情况。
互斥 对于非共享资源必须要有互斥条件。如打印机不能同时为多个进程所共享。而对于共享的资源不要求互斥访问,因此不会出现死锁。如只读文件,多个程序同时打开只读文件。因此通过否定互斥来避免死锁是不太现实的。 占有并等待 为了确保占有并等待不在系统内出现,必须保证:当一个进程申请一个资源时,他不能占有其他资源
(1)执行前一次性请求所有的资源(不一定实现);
(2)即申请资源前先释放所有的资源。
这两种协议主要有两个缺点 第一 资源利用率可能比较低。
第二 可能会发生饥饿。
因此想要消除是不可能的。
非抢占 为了确保这一条件不成立,可以使用如下协议:如果一个进程占有资源并申请另一个不能立即分配的资源,那么其已分配的资源可能被抢占。换句话说也就是被隐式释放了。抢占资源分配到进程所等待的资源的链表上。只有进程获得原有资源和所申请的新资源时。进程才可以重新执行。这个协议通常应用于状态可以保存和恢复的资源,如CPU寄存器和内存。他一般不适用于其他资源如打印机和磁带驱动器。
循环等待 一个确保此条件不成立的方法就是对所有的资源类型进行完全排序,并要求每个进程按递增顺序来申请资源。
死锁避免——银行家算法
死锁预防:确保四个必要条件其中之一不会发生的副作用是降低设备的使用率和系统吞吐率。
思索避免的另一种方法是,获得之后如何申请资源的附加信息。根据这种方法,有不同的算法。死锁避免算法动态的检测资源分配状态以确保循环等待条件不可能成立。资源分配状态可能由可用资源和已分配资源,及进程最大需求所决定。下面我们研究两种死锁避免算法。
资源分配图算法 资源分配图可修改以用于死锁避免。
银行家算法 对于每种资源类型有多个实例的的资源分配系统,资源分配图的算法就不再适用了,那么这种情况我们就使用银行家算法。但银行家算法的的效率比资源分配图低。因为银行家算法可用于银行系统,所以叫银行家算法。
深入探究死锁的三种处理方法相关推荐
- 解开硬盘逻辑死锁的一种有效方法 (转)
解开硬盘逻辑死锁的一种有效方法 (转)[@more@] 解开硬盘逻辑死锁的一种有效方法 西安市西北工业大学418信箱(710072) 肖华勇 一·序言 不知道你是否曾碰到过从软盘和硬盘都启动不了计算 ...
- linux下死锁怎么解决方法,死锁,解决死锁的4种基本方法
死锁,解决死锁的4种基本方法 死锁 这个概念是操作系统里面很重要的内容,前阵子面试字节被问到了,太久没复习,面经变凉经. 死锁(Deadlock),又被翻译为死结.是操作系统或软件运行的一种状态,在多 ...
- PHP开发之递归算法的三种实现方法
递归算法对于任何一个编程人员来说,应该都不陌生.因为递归这个概念,无论是在PHP语言还是Java等其他编程语言中,都是大多数算法的灵魂.对于PHP新手来说,递归算法的实现原理可能不容易理解.但是只要你 ...
- 黑马程序员_Java解析网络数据流的三种特殊方法
Java解析网络数据流的三种特殊方法 Java作为最开放的语言,已越来越受到网络程序员的青睐.但这一青睐族有着同样的经历--曾经都为网络上通信的Java数据格式而烦恼. 笔者也不例外,曾经为此而查阅了 ...
- Oracle的join默认为,Oracle中的三种Join方法详解
这里将为大家介绍Oracle中的三种Join方法,Nested loop join.Sort merge join和Hash join.整理出来以便帮助大家学习. 基本概念 Nested loop j ...
- python中保留小数_python保留小数位的三种实现方法
前言 保留小数位是我们经常会碰到的问题,尤其是刷题过程中.那么在python中保留小数位的方法也非常多,但是笔者的原则就是什么简单用什么,因此这里介绍几种比较简单实用的保留小数位的方法: 方法一:fo ...
- oracle hash join outer,CSS_浅谈Oracle中的三种Join方法,基本概念
Nested loop join:
Outer - phpStudy...
浅谈Oracle中的三种Join方法 基本概念 Nested loop join: Outer table中的每一行与inner table中的相应记录join,类似一个嵌套的循环. Sort mer ...
- lopa分析_【风险分析方法】HAZOP、LOPA和FMEA三种分析方法,如何做到信息共享?...
导 读 信息是人们对事物的了解的不确定性的减少或消除,其功能是表征物质客体成分,结构,状态,特性等属性.信息共享的目的在于减少或消除信息源所需的不确定性.石油化工行业由于设备多,生产过程复杂,危险元素 ...
- php怎么四舍五入,php 四舍五入的三种实现方法
这篇文章主要为大家详细介绍了php 四舍五入的三种实现方法,具有一定的参考价值,可以用来参考一下. 对php 四舍五入的三种方法感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! php 四 ...
最新文章
- 3D演示帮你一眼看懂线性规划问题,这篇可视化教程火了
- 曙光中学2021年高考成绩查询,上海市部分高中2020高考录取喜报,成绩喜人!
- 【BZOJ3772】精神污染
- java调用js查询mongo_mongodb操作之使用javaScript实现多表关联查询
- python下载哪个版本好-究竟哪个版本的Python是最快的?
- linux脚本打印变量的值,linux利用read命令获取变量中的值
- 基于WEB的自行车租赁管理系统设计与实现
- lighttpd服务器404页修改,教你学会Lighttpd的安装配置
- Javascript中transducer的应用
- 微博图床php上传,微博图床 - shitalpig的个人空间 - OSCHINA - 中文开源技术交流社区...
- Android,上传一张本地图片到服务器,Okhttp的post请求上传图片本地服务器
- ITASCA FLAC2D.v5.0 1CD
- 2022鹏业安装算量软件10大常见问题整理
- 虚拟机安装 windows xp sp3 原版镜像
- execjs 调用js出现找不到windows对象
- 2022交易猫系统+带聊天/安心购/已验号模板+APP双端跳转
- GAN实验错误记录——tensorflow.python.framework.errors_impl.InvalidArgumentError
- GOTS认证辅导,产品要求5%以上的才符合被认可的有机标准的原料
- 像宜家《家居指南》那样做邮件营销
- uniapp 自定义基座后软件打不开,屡次关闭