定义:在两个或多个并发进程中,如果每个进程持有某种资源而又都等待着别的进程释放它或它们现在保持着的资源,否则就不能向前推进,此时每个进程都占用了一定的资源但又都不能向前推进,称这一组进程产生了死锁。

产生原因:1、系统资源不足;2、进程推进顺序非法。

产生死锁的四个必要条件

互斥条件:涉及的资源是非共享的。

不剥夺条件:进程所获得的资源在未使用完毕之前不能被其它进程强行夺走。

部分分配:进程每次申请它所需要的一部分资源,在等待新资源的同时继续占用已分配到的资源。

环路条件:存在着一种进程的循环链,链中的每一个进程已获得的资源同时被链中的下一个进程请求。

死锁的解决方法:

简单描述(四种方法):

预防:通过设置某些限制条件,以破坏产生死锁的四个条件中的一个或者几个,来防止发生死锁。

避免:系统在分配资源时根据资源的使用情况提前作出预测,从而避免死锁的发生。

检测:允许系统在运行的过程中产生死锁,但是,系统中有相应的管理模块可以及时检测出已经产生的死锁,并且精确地确定与死锁有关的进程和资源,然后采取适当措施,清除系统中已经产生的死锁。

解除:与检测死锁相配套的一种措施,用于将进程从死锁状态下解脱出来。

具体描述(三种方法):

预防:根据生产死锁的四个必要条件,只要使用其中之一不能成立,死锁就不会出现。但必要条件①是由设备的固有特性所决定的,不仅不能改变,相反还应加以保证,因此实际上只有三种方法。

预防死锁是一种较易实现的方法,已被广泛使用,但由于所施加的相知条件往往太严格,可能导致系统资源利用率和系统吞吐量降低。即具体可通过以下3种方法实现:

1、防止部分分配(摒弃请求和保持条件)

系统要求任一进程必须预先申请它所需要的全部资源,而且仅当该进程的全部资源要求能得到满足时,系统才能给予一次性分配,然后启动该进程运行,但是在分配时只要有一种资源不满足,系统就不会给进程分配资源。进程运行期间,不会再请求新的资源,所以,再分配就不会发生(摒弃了部分分配)。其特点为:资源严重浪费,进程延迟进行。

2、防止“不剥夺”条件的出现

采用的策略:一个已经保持了某些资源的进程,当它再提出新的资源要求而不能立即得到满足时,必须释放它已经保持的所有资源,待以后需要时再重新申请。此方法实现比较复杂,且要付出很大代价;此外,还因为反复地申请和释放资源,而使进程的执行无限地推迟,延长了周转时间,增加了系统的开销,降低了系统吞吐量。(例如打印机打印的结果不连续)

3、防止“环路等待”条件的出现

采用资源顺序使用法,基本思想是:把系统中所有资源类型线性排队,并按递增规则赋予每类资源以唯一的编号,例如输入机=1,打印机=2,磁带机=3,硬盘=4等等。进程申请资源时,必须严格按资源编号的递增顺序进行,否则系统不予分配。

优点:资源利用率和系统吞吐量与另两种方法相比有较明显的改善。

缺点:1、为系统中各种类型的资源所分配的序号必须相对稳定,这就限制了新设备类型的增加。2、作业实际使用资源的顺序与系统规定的顺序不同而造成资源的浪费。

避免:避免死锁与预防死锁的区别在于:预防死锁是设法至少破坏产生死锁的必要条件之一,严格地防止死锁的出现。

避免死锁,它是在进程请求分配资源时,采用某种算法(银行家算法)来预防可能发生的死锁,从而拒绝可能引起死锁的某个资源请求。

在避免死锁(或银行家算法)中必须谈到两种系统状态:①安全状态,指系统能按照某种顺序,为每个进程分配所需的资源,直至最大需求,使得每个进程都能顺利完成。②非安全状态:即在某个时刻系统中不存在一个安全序列,则称系统处于不安全状态或非安全状态。

虽然并非所有不安全状态都是死锁状态,但当系统进入不安全状态后,便有可能进入死锁状态;反之只要系统处于安全状态,系统便可避免进入死锁状态。因此,避免死锁的实质是如何使系统不进入不安全状态。

        检测和恢复:死锁的检测和恢复技术是指定期启动一个软件检测系统的状态。若发现有死锁存在,则采取措施恢复之。

死锁的检测:检查死锁的办法就是由软件检查系统中由进程和资源构成的有向图是否构成一个或多个环路,若是,则存在死锁,否则不存在。其实质是确定是否存在环路等待现象,一但发现这种环路便认定死锁存在,并识别出该环路涉及的有关进程,以供系统采取适当的措施来解除死锁。

死锁的解除:1、将陷入死锁的进程全部撤销。2、逐个作废死锁进程,直至死锁不再存在。3、从死锁进程中逐个地强迫抢占其所占资源,直至死锁不存在。

什么是死锁?死锁的产生条件及解决办法相关推荐

  1. 面试问题之操作系统:死锁的四个必要条件和解决办法

    面试问题之操作系统:死锁的四个必要条件和解决办法 参考文章: (1)面试问题之操作系统:死锁的四个必要条件和解决办法 (2)https://www.cnblogs.com/yichengming/p/ ...

  2. 死锁的四个必要条件和解决办法

    死锁概念及产生原理     概念:多个并发进程因争夺系统资源而产生相互等待的现象.     原理:当一组进程中的每个进程都在等待某个事件发生,而只有这组进程中的其他进程才能触发该事件,这就称这组进程发 ...

  3. 死锁的产生条件及解决办法

    目录 一.死锁产生的条件 二.死锁解决的方法 1.死锁防止 1.1 破坏互斥条件 1.2 破坏持有和等待条件 1.3 破坏不可剥夺条件 1.4 破坏等待循环条件 2.死锁避免 3.死锁检测 每种资源类 ...

  4. oracle数据库无法查询,关于oracle中无法查询中文条件的解决办法

    1. 检查一个简单的sql = select * from tb_user_master where name = '张三' 表中存有该数据,但是检索无结果 2.解决方法很简单 -   SELECT ...

  5. Linux 多线程(二)线程安全:线程安全、互斥与互斥锁、死锁、同步与条件变量

    线程安全 互斥 死锁 同步 线程安全 所谓线程安全,其实就是当多个线程对临界资源进行争抢访问的时,不会造成数据二义或者逻辑混乱的情况(通常情况下对全局变量和静态变量进行操作时在会出现) 常见的线程安全 ...

  6. 通俗易懂,简单理解死锁的四个条件

    小目录 死锁四个必要条件 通俗地解释 死锁预防 死锁避免 死锁四个必要条件 互斥 请求保持 不可剥夺(不可抢占) 循环等待(环路等待) 通俗地解释 人对故事场景的记忆会更加深刻,因此故事--真实案例如 ...

  7. mysql数据库死锁的产生原因及解决办法

    该文章为转载,如有侵权请及时联系 这篇文章主要介绍了mysql数据库锁的产生原因及解决办法,需要的朋友可以参考下 数据库和操作系统一样,是一个多用户使用的共享资源.当多个用户并发地存取数据 时,在数据 ...

  8. 生活中的死锁例子及解决办法

    1. 有两条道路双向两个车道,即每条路每个方向只有一个车道,两条道路十字交叉.假设车辆只能向前直行,而不允许转弯和后退.如果有4辆车几乎同时到达这个十字路口,如图(a)所示:相互交叉地停下来,如图(b ...

  9. 死锁——什么是死锁 死锁的四个必要条件 避免死锁

    1 什么是死锁 死锁的定义是:在一个进程组内,每个进程都在等待只有其他进程才能引发的事件,那么该进程组处于死锁状态. 有两个线程(或者更多的线程),每个线程都在等待被其他线程占用的资源. 比如:线程A ...

最新文章

  1. 远程办公时,有哪些提高沟通效率的技巧?
  2. 集成学习-Boosting集成学习算法GBDT
  3. Exchange 默认数据库删除问题
  4. tomcat+nginx+redis实现均衡负载、session共享(一)
  5. Microsoft Asp.Net Ajax框架入门(12) 了解异步通信层
  6. torch.full 【输出大小为size内容为填充张量为fill_value的张量】
  7. 总结CSS3新特性(媒体查询篇)
  8. 漫步最优化二十二——收敛速率
  9. ssms 缺少索引信息_SQLServer索引重建
  10. vbs if 不等于_(四)if 判断与逻辑运算符
  11. SPSS 相关分析(图文+数据集)【SPSS 023期】
  12. 华为云IoT体验:基于IoT平台构建智慧路灯应用
  13. iPhone手机微信下载的文档传输到win10系统桌面
  14. 来自GitHub的Python开源项目,100%可用的12306多功能抢票助手,切勿作为商业用途
  15. 自学白帽黑客第一年总结
  16. Python2与Python3的区别(二):raw_input与input
  17. XCTF-高手进阶区:mfw
  18. re匹配截至到第一个中文_Python正则表达式:re模块常用方法详解
  19. 嵌入式软件管培生每日总结-第1天
  20. php对接腾讯云直播,聊天,im,云录制产生回放

热门文章

  1. 2018.10.8 转
  2. Consider defining a bean named ‘entityManagerFactory‘ in your configuration
  3. 2.2.3 电阻的近似串联分压
  4. 计算机主机耗电量,主编教您电脑耗电量如何计算
  5. Windows下Redis安装和使用
  6. 青云科技发布业绩预告净利亏损,天风证券研报:存在核心技术风险
  7. K-means对图像进行分类
  8. python可以制作游戏脚本吗_用Python写一个游戏脚本,你会吗?
  9. 中国超融合厂商三甲出炉,华为、华云数据、新华三再次稳居中国超融合市场领导者
  10. Unity控制摄像机(Camera)实现 缩放 和 旋转(上下左右)。