进程/线程死锁的原因、条件、如何防止死锁。

1. 进程/线程死锁的原因:

  • 竞争资源(不可抢占资源,可消耗性资源)
  • 进程/线程推进顺序非法

2、进程/线程死锁的四个必要条件(只要有一个不成立,就不会发生死锁)

  • 互斥条件:在一段时间内,某资源只能被一个进程占用
  • 请求和保持条件:进程已保持了资源,又提出了新的资源请求,而该资源已被其他进程占有,此时该进程阻塞,但不释放已持有的资源
  • 不可抢占条件:进程已经获得的资源,在未使用完之前不能被抢占,只能等该进程使用完后自己释放
  • 循环等待条件:发生死锁时,存在一个进程-资源循环链,1等2,2等3,......

3、处理死锁--预防死锁

预防死锁的思路是破坏死锁的必要条件

  • 破坏请求和保持条件:一次性分配所有资源,这样就不会再有请求了;只要有一个资源得不到分配,也不给这个进程分配其他的资源(即要么不给,要么全给)
  • 破坏不可抢占条件:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源
  • 破坏循环等待:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反

4、处理死锁--避免死锁

避免死锁也是实现预防的策略,但不是事先采取某种限制措施,破坏死锁的必要条件,而是在资源动态分配过程中,通过调整资源分配,防止进入不安全状态,以避免发生死锁。安全状态时,可避免发生死锁;不安全状态时,则可能进入死锁。

银行家算法是最具有代表性的避免死锁的算法。每一个进程在进入系统时,必须申明在运行过程中,可能需要的每种资源的最大数量,其数量不能超过系统所拥有的资源总量。当进程请求一组资源时,系统先确定是否有足够的资源分配给该进程。如果有,再进一步计算在将这些资源分配该该进程后,系统是否会处于不安全状态,如果不会,才将资源分配给它,否则就让进程等待。

操作系统 关于死锁的面试题相关推荐

  1. 操作系统之常考面试题

    操作系统之常考面试题 目录: 操作系统概述 进程的描述与控制 存储器管理 处理调度与死锁 注:在牛客上复习java摘录的,便于自己复习. 地址连接:https://www.nowcoder.com/t ...

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

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

  3. 【转载】计算机操作系统出现死锁的原因

    目录 1. 死锁的概念以及产生死锁的原因 1.1 死锁的定义 1.2 死锁产生的原因 1) 系统资源的竞争 2) 进程推进顺序非法 3) 死锁产生的必要条件 2. 死锁的处理策略 预防死锁 避免死锁 ...

  4. 【操作系统】死锁相关知识点

    文章目录 1. 死锁基本概念 2. 死锁的四个必要条件 3. 死锁处理方法 3.1 鸵鸟策略 3.2 死锁检测与恢复 3.3 死锁避免 3.4 死锁预防 3.5 死锁处理策略比较 4. 其他相关 4. ...

  5. 2.4操作系统之死锁详解(预防、避免、检测、解除)+思维导图

    文章目录 0.思维导图 1.什么是死锁? 2.死锁.饥饿.死循环的区别 3.死锁产生的四个必要条件 4.什么时候会发生死锁? 5.死锁的处理策略 (1)预防死锁 ① 破坏互斥条件 ② 破坏不可剥夺条件 ...

  6. 操作系统各大公司笔试题汇总

    1.在段页式存储管理中,其虚拟地址空间是() A.一维                               B.二维                                C.三维   ...

  7. 操作系统中死锁避免算法 --- 银行家算法

    1. 背景 在银行系统中, 客户完成项目需要申请贷款的数量是有限的, 每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量, 在满足所有贷款要求并完成项目时, 客户应及时归还. 银行家在客户申请 ...

  8. java死锁的产生原因,操作系统产生死锁的原因和处理策略

    作者:Cyapirear 素材来源:华为开发者论坛 产生死锁的原因 当进程需要以独占的方式访问资源时,可能会发生死锁(Deadlock).死锁是指两个或以上进程因竞争临界资源而造成的一种僵局,即一个进 ...

  9. 操作系统中死锁的概念

    产生死锁的原因主要是: (1) 因为系统资源不足. (2) 进程运行推进的顺序不合适. (3) 资源分配不当等. 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则 就会因争 ...

  10. Java工程师 操作系统(四) 面试题(Day35)

    1 介绍一下HTTPS的流程. 参考回答 HTTPS在传输的过程中会涉及到三个密钥:服务器端的公钥和私钥,用来进行非对称加密:客户端生成的随机密钥,用来进行对称加密.一个HTTPS请求实际上包含了两次 ...

最新文章

  1. ASP.net实现无扩展名的URL重写。简单、方便、无需ISAPI
  2. golang json 读写配置文件
  3. 上半年营收超阿迪,相当于2.2个李宁,安踏凭什么?
  4. java rabbitmq 工具类_RabbitMq通用管理工具类
  5. CentOS 7 CentOS7查看开放端口命令及开放端口号
  6. 谈谈Tensorflow的dropout
  7. java安卓开发 项目实例_Java系列--第七篇 基于Maven的Android开发实战项目
  8. C++复习(虚函数)
  9. UVA1258 LA4721 Nowhere Money【数学计算】
  10. python实例化次数怎么算_关于python多次实例化
  11. 程序员要么在变来变去中成长,要么在变来变去中被淘汰,要么主动去适应变来边去的事实...
  12. 【Mac 教程系列第 8 篇】Mac 更换锁屏时的头像
  13. 怎么用Python爬取抖音小视频? 资深程序员都这样爬取的(附源码)
  14. 数学分析习题解答(四:第一部分)
  15. zynq--实现udp发送helloworld 到上位机---续集,调试时候容易出现有时候系统不响应
  16. AC6969A 双声道蓝牙芯片 经典蓝牙5.3 纯蓝牙
  17. SOA RPC SOAP REST
  18. VMware安装Redhat虚拟机步骤
  19. C语言实现简易扫雷游戏
  20. Navicat cannot add foreign key constraint或者添加外键后不显示

热门文章

  1. Mybatis中的foreach
  2. sendRedirect的路径
  3. TPM的R环境的安装和配置
  4. Smuxi 0.8.10 发布 - IRC 客户端软件
  5. linux、unix中的批量文件重命名
  6. 十大因素——造就优秀的董事长
  7. unittest框架(惨不忍睹低配版)
  8. nodepad代码格式复制到word发布到博客
  9. react中创建组件的三种方法
  10. 在lua中优雅的操作日期和时间