一:什么是死锁

死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。例如,在某一个计算机系统中只有一台打印机和一台输入 设备,进程P1正占用输入设备,同时又提出使用打印机的请求,但此时打印机正被进程P2 所占用,而P2在未释放打印机之前,又提出请求使用正被P1占用着的输入设备。这样两个进程相互无休止地等待下去,均无法继续执行,此时两个进程陷入死锁状态。

二:死锁产生的原因

1. 系统资源的竞争

系统资源的竞争导致系统资源不足,以及资源分配不当,导致死锁。

2. 进程运行推进顺序不合适

进程在运行过程中,请求和释放资源的顺序不当,会导致死锁。

三:产生死锁的四个必要条件:

(1)互斥条件:一个资源每次只能被一个进程使用,即在一段时间内某 资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。

(2)请求与保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。

(3)不可剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能 由获得该资源的进程自己来释放(只能是主动释放)。

(4)循环等待条件: 若干进程间形成首尾相接循环等待资源的关系

这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

四:死锁的避免与预防:

死锁避免的基本思想:

系统对进程发出每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,如果分配后系统可能发生死锁,则不予分配,否则予以分配。这是一种保证系统不进入死锁状态的动态策略。

理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何让这四个必要条件不成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。

死锁避免和死锁预防的区别:

死锁预防是设法至少破坏产生死锁的四个必要条件之一,严格的防止死锁的出现,而死锁避免则不那么严格的限制产生死锁的必要条件的存在,因为即使死锁的必要条件存在,也不一定发生死锁。死锁避免是在系统运行过程中注意避免死锁的最终发生

什么是死锁?死锁产生的四个必要条件?如何避免与预防死锁?相关推荐

  1. c++产生死锁的必要条件?已经如何预防死锁?

    产生死锁的必要条件?已经如何预防死锁? 一.计算机系统中的死锁 二.产生死锁的必要条件 三.处理死锁的方法 四.预防死锁 五.解决死锁 一.计算机系统中的死锁 竞争不可抢占性资源引起死锁 竞争可消耗资 ...

  2. 死锁的四个必要条件,及处理方法

    死锁的四个必要条件互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用.请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源.非剥夺条件(N ...

  3. (王道408考研操作系统)第二章进程管理-第四节2:死锁处理策略之预防死锁

    文章目录 一:破坏互斥条件 二:破坏不可剥夺条件 三:破坏持有并等待条件 四:破坏循环等待条件 预防死锁:破坏死锁产生的四个必要条件中的一个或几个 互斥条件 持有并等待条件 不可剥夺条件 循环等待条件 ...

  4. 高并发之——死锁,死锁的四个必要条件以及处理策略

    一.什么是死锁 多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力.然而,并发执行也带来了新的问题--死锁. 死锁是指两个或两个以上的进程(线程)在运行过程中因争夺资源而造成的一种僵局(D ...

  5. 死锁产生的四个必要条件

    一.死锁产生的四个必要条件 互斥条件:资源是独占的且排他使用,进程互斥使用资源,即任意时刻一个资源只能给一个进程使用,其他进程若申请一个资源,而该资源被另一进程占有时,则申请者等待直到资源被占有者释放 ...

  6. “死锁”四个必要条件的合理解释

    <"死锁"四个必要条件的合理解释>分为三个部分: [1]"死锁"的含义 [2]"死锁"的原因及四个必要条件的合理解释 [3]&q ...

  7. 关于死锁,死锁的四个必要条件的总结

    什么是死锁? 死锁,指的是多个进程再运行期间因争夺资源而产生的一种僵局,若无外力作用(破坏死锁),程序将无法运行. 死锁产生的四个必要条件 互斥条件: 进程要求对所分配的资源(如打印机)进行排他性控制 ...

  8. 死锁的四个必要条件及处理死锁

    什么是死锁? 如果一个进程集合里面的每个进程都在等待只能由这个集合中的其他一个进程(包括他自身)才能引发的事件,这种情况就是死锁. 这个定义可能有点拗口,下面用一个简单例子说明. 资源A.B,进程C. ...

  9. 什么是死锁,简述死锁发生的四个必要条件,如何避免与预防死锁

    什么是死锁 死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进.例如,在某一个计算机系统中只有一台打印机和一台输入 设备,进程P1正占用输入设备,同时又提出 ...

最新文章

  1. mysql 修改配置生效_MySQL修改my.cnf配置不生效的解决方法
  2. 【笔记】基于边缘检测和BP神经网络的大豆杂草识别研究
  3. python2019慕课答案_中国大学慕课mooc2020Python编程基础章节测试答案
  4. 多篇顶会看个体因果推断(ITE)的前世今生
  5. java修改字节码技术,Javassist修改class,ASM修改class
  6. 显示农历天气时钟小部件下载_安卓最强桌面小部件:Zooper Widget
  7. 创建SQL函数计算员工加班时间
  8. 大数据可视化案例分析_Tableau数据可视化分析案例
  9. ASP.NET MVC3中的路由系统 Routes
  10. 企业分布式微服务云SpringCloud SpringBoot mybatis (八)消息总线(Spring Cloud Bus)
  11. 2018年通信工程师中级传输与接入无线专业实务真题
  12. adb与java端口冲突,如何解决adb devices 端口被占用的问题zz
  13. Js拼接Json供echarts的地图使用
  14. Arduino基本知识(marlin固件配置)
  15. python裂缝检测_通过opencv-python检测裂缝
  16. 论文阅读:Overview of the NLPCC 2018 Shared Task: Grammatical Error Correction
  17. Kinetics-400数据集下载
  18. Stata基础(一)
  19. SWE_Browser编译
  20. js下载文件的几种方式

热门文章

  1. 第二部分:S5PV210_关看门狗_1
  2. OC WKWebView的JS与OC交互、Cookie管理
  3. iOS linker command failed with exit code 1 (use v to see invocation)
  4. 嵌入式开发之hi3519---PCIE DMA
  5. SpringMVC源码分析(4)剖析DispatcherServlet重要组件
  6. 配置Exchange 2010 服务器(二)Exchange2010证书配置
  7. 程序是什么--过滤器和状态机
  8. JSON——Java中的使用
  9. 《Adobe Illustrator CS6中文版经典教程(彩色版)》—第1课1.8节使用面板菜单
  10. 以supervisord启动elasticsearch