死锁

死锁定义:死锁指多个进程因竞争资源而造成的一种互相等待的僵局,若无外力作用,这些进程都无法向前推进,就造成了死锁。

产生原因:1、竞争资源 2、进程请求和释放资源的顺序不当,导致死锁

死锁产生的必要条件
1、互斥条件:一个资源同一时间只能被一个进程访问,若其他进程请求该资源,则只能等待

2、不可剥夺条件:进程获得资源在未使用完之前,不能被其他进程强行夺走,只能由获得该资源的进程来释放

3、请求与保持条件:进程已经保持了至少一个资源,但是又提出了新的资源请求,如果新资源已被占有,这只能进行等待,但对自己以占有的资源保持不释放

4、循环等待条件:若干个进程间形成了收尾相接循环等待资源的情况

死锁的预防----破坏死锁产生的必要条件从而预防死锁(主要是避免3和4两个条件的产生)
1、破坏互斥条件:把只能互斥使用的资源改成允许共享使用的资源,例如spooLing技术,将独占设备在逻辑上改造成共享设备
2、破坏不可剥夺条件:当某个进程请求新资源无法得到满足时,就立即释放保持的所有资源,待以后需要再重新申请
3、破坏请求和保持条件:非阻塞加锁,加不上锁则释放已有的锁。采用静态分配方法,即进程在运行前一次申请完它所需要的的资源,在它资源未满足前,不让他运行,一旦运行,这些资源都归它所有,此时不会在请求其他资源
4、破坏循环等待条件:保证加锁解锁顺序一致。采用顺序资源分配法,首先给系统中的资源进行编号,规定进程必须按编号递增的顺序请求资源。例如一个进程只有已占有小编号资源时,才可以申请更大编号的资源

避免死锁经典算法:银行家算法,死锁检测算法

面试中死锁的考点总结(死锁的定义、产生原因、四个必要条件、如何预防)相关推荐

  1. 面试官:解释下什么是死锁?为什么会发生死锁?怎么避免死锁?

    开局先来个段子: 面试官: 解释下什么是死锁? 应聘者: 你录用我,我就告诉你 面试官: 你告诉我,我就录用你 应聘者: 你录用我,我就告诉你 面试官: 滚! 正文 有个业务主要逻辑就是新增订单.修改 ...

  2. 面试官:谈谈什么是死锁?如何解决死锁?

    死锁就是有一天你回家,拿着一把钥匙使劲往锁眼里面捅,结果钥匙断里面了,所以你就叫开锁师傅要开锁,结果锁给开死了,这就是死锁了.以上仅仅是玩笑话,以下步入正题. 什么是死锁? 要了解什么是死锁,要首先明 ...

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

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

  4. 关于操作系统中进程、线程、死锁、同步、进程间通信(IPC)的超详细详解整理

    ​​​​​​​作者主页:https://www.zhihu.com/people/san-hao-bai-du-ren-79 一.什么是进程?什么是线程? 1.1 进程定义 1.2 线程定义 1.3 ...

  5. python中threading产生死锁_什么是死锁,如何避免死锁(4种方法)

    当两个线程相互等待对方释放资源时,就会发生死锁.Python 解释器没有监测,也不会主动采取措施来处理死锁情况,所以在进行多线程编程时应该采取措施避免出现死锁. 一旦出现死锁,整个程序既不会发生任何异 ...

  6. Python多任务(4.多线程--Python中的互斥锁和死锁)

    互斥锁 1.互斥锁的概念 2.互斥锁的使用 3.使用互斥锁完成2个线程对同一全局变量各加100万次的操作,而不会出现问题 死锁 死锁的概念 避如何免死锁: 出现死锁的例子 互斥锁 1.互斥锁的概念 互 ...

  7. 面试-操作系统-进程管理-进程-进程调度-死锁

    文章目录 ==概念== 备注 简单说下你对并发和并行的理解? 同步.异步.阻塞.非阻塞的概念? 操作系统概念? 一个程序从开始运行到结束的完整过程,你能说出来多少? 用户态和内核态是如何切换的? 什么 ...

  8. 你的眼睛背叛你的心:解决 .NET Core 中 GetHostAddressesAsync 引起的 EnyimMemcached 死锁问题

    你的眼睛背叛你的心:解决 .NET Core 中 GetHostAddressesAsync 引起的 EnyimMemcached 死锁问题 参考文章: (1)你的眼睛背叛你的心:解决 .NET Co ...

  9. TCP/IP、Http、Socket的区别以及面试中关于网络协议常问的考点

    网络由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可 ...

最新文章

  1. python使用numpy包编写自定义函数计算SMAPE(对称平均绝对百分比误差)指标Symmetric mean absolute percentage error、SMAPE指标解读、指标使用的注
  2. 全排列:不含重复元素和含重复元素的全排列
  3. Gartner2018新兴技术成熟度曲线:人机界线日益模糊!
  4. Spring - Java/J2EE Application Framework 应用框架 第 9 章 DAO支持
  5. SVN主干与分支的合并
  6. java中po代码示例_java操作oracle常用的示例代码详解
  7. zabbix专题:第七章 添加图像Graphs,添加聚合图形Screens
  8. 再见,前端!别更新了,我是学不动了
  9. python概率游戏_看得见概率,可视化讲解概率学基础(附带python代码)
  10. linux查看redis没有权限,在linux上安装redis并设置权限
  11. Sql Server2005 Transact-SQL
  12. 用户故事与敏捷方法—迭代计划
  13. matlab代码 无标度网络 生成图,标准无标度网络matlab
  14. Radius认证协议(六)报文属性
  15. 技术人的未来(一)——跳槽
  16. 基于MATLAB的函数信号发生器
  17. Android 摄像头拍照显示 相册显示 图片裁剪绘制显示
  18. 亚马逊AVS开发--树莓派3麦克风配置
  19. 【车载以太网】【测试】架构及测试工具
  20. 容器和云原生(一):初识容器化和云原生

热门文章

  1. 电大本科c及语言设计形考答案,2020国家开放大学电大《C语言程序设计》网络课形考任务4作业及答案(15页)-原创力文档...
  2. 桥梁计算机辅助设计直接建模法,基于CATIA的大型桥梁三维建模方法
  3. python面向对象三大特性6大原则_【Python学习笔记】面向对象三大特性
  4. php时间序列比对,常用在线序列比对工具
  5. Git 历史记录内容对比
  6. Apache—DBUtils框架简介
  7. Springboot+Mysql健身房在线预约管理系统
  8. Java停车场管理系统使用栈和队列任务台程序
  9. 基于JAVA+SpringBoot+Mybatis+MYSQL的企业员工考勤管理系统
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的宿舍管理平台系统