操作系统 关于死锁的面试题
进程/线程死锁的原因、条件、如何防止死锁。
1. 进程/线程死锁的原因:
- 竞争资源(不可抢占资源,可消耗性资源)
- 进程/线程推进顺序非法
2、进程/线程死锁的四个必要条件(只要有一个不成立,就不会发生死锁)
- 互斥条件:在一段时间内,某资源只能被一个进程占用
- 请求和保持条件:进程已保持了资源,又提出了新的资源请求,而该资源已被其他进程占有,此时该进程阻塞,但不释放已持有的资源
- 不可抢占条件:进程已经获得的资源,在未使用完之前不能被抢占,只能等该进程使用完后自己释放
- 循环等待条件:发生死锁时,存在一个进程-资源循环链,1等2,2等3,......
3、处理死锁--预防死锁
预防死锁的思路是破坏死锁的必要条件
- 破坏请求和保持条件:一次性分配所有资源,这样就不会再有请求了;只要有一个资源得不到分配,也不给这个进程分配其他的资源(即要么不给,要么全给)
- 破坏不可抢占条件:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源
- 破坏循环等待:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反
4、处理死锁--避免死锁
避免死锁也是实现预防的策略,但不是事先采取某种限制措施,破坏死锁的必要条件,而是在资源动态分配过程中,通过调整资源分配,防止进入不安全状态,以避免发生死锁。安全状态时,可避免发生死锁;不安全状态时,则可能进入死锁。
银行家算法是最具有代表性的避免死锁的算法。每一个进程在进入系统时,必须申明在运行过程中,可能需要的每种资源的最大数量,其数量不能超过系统所拥有的资源总量。当进程请求一组资源时,系统先确定是否有足够的资源分配给该进程。如果有,再进一步计算在将这些资源分配该该进程后,系统是否会处于不安全状态,如果不会,才将资源分配给它,否则就让进程等待。
操作系统 关于死锁的面试题相关推荐
- 操作系统之常考面试题
操作系统之常考面试题 目录: 操作系统概述 进程的描述与控制 存储器管理 处理调度与死锁 注:在牛客上复习java摘录的,便于自己复习. 地址连接:https://www.nowcoder.com/t ...
- 面试问题之操作系统:死锁的四个必要条件和解决办法
面试问题之操作系统:死锁的四个必要条件和解决办法 参考文章: (1)面试问题之操作系统:死锁的四个必要条件和解决办法 (2)https://www.cnblogs.com/yichengming/p/ ...
- 【转载】计算机操作系统出现死锁的原因
目录 1. 死锁的概念以及产生死锁的原因 1.1 死锁的定义 1.2 死锁产生的原因 1) 系统资源的竞争 2) 进程推进顺序非法 3) 死锁产生的必要条件 2. 死锁的处理策略 预防死锁 避免死锁 ...
- 【操作系统】死锁相关知识点
文章目录 1. 死锁基本概念 2. 死锁的四个必要条件 3. 死锁处理方法 3.1 鸵鸟策略 3.2 死锁检测与恢复 3.3 死锁避免 3.4 死锁预防 3.5 死锁处理策略比较 4. 其他相关 4. ...
- 2.4操作系统之死锁详解(预防、避免、检测、解除)+思维导图
文章目录 0.思维导图 1.什么是死锁? 2.死锁.饥饿.死循环的区别 3.死锁产生的四个必要条件 4.什么时候会发生死锁? 5.死锁的处理策略 (1)预防死锁 ① 破坏互斥条件 ② 破坏不可剥夺条件 ...
- 操作系统各大公司笔试题汇总
1.在段页式存储管理中,其虚拟地址空间是() A.一维 B.二维 C.三维 ...
- 操作系统中死锁避免算法 --- 银行家算法
1. 背景 在银行系统中, 客户完成项目需要申请贷款的数量是有限的, 每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量, 在满足所有贷款要求并完成项目时, 客户应及时归还. 银行家在客户申请 ...
- java死锁的产生原因,操作系统产生死锁的原因和处理策略
作者:Cyapirear 素材来源:华为开发者论坛 产生死锁的原因 当进程需要以独占的方式访问资源时,可能会发生死锁(Deadlock).死锁是指两个或以上进程因竞争临界资源而造成的一种僵局,即一个进 ...
- 操作系统中死锁的概念
产生死锁的原因主要是: (1) 因为系统资源不足. (2) 进程运行推进的顺序不合适. (3) 资源分配不当等. 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则 就会因争 ...
- Java工程师 操作系统(四) 面试题(Day35)
1 介绍一下HTTPS的流程. 参考回答 HTTPS在传输的过程中会涉及到三个密钥:服务器端的公钥和私钥,用来进行非对称加密:客户端生成的随机密钥,用来进行对称加密.一个HTTPS请求实际上包含了两次 ...
最新文章
- ASP.net实现无扩展名的URL重写。简单、方便、无需ISAPI
- golang json 读写配置文件
- 上半年营收超阿迪,相当于2.2个李宁,安踏凭什么?
- java rabbitmq 工具类_RabbitMq通用管理工具类
- CentOS 7 CentOS7查看开放端口命令及开放端口号
- 谈谈Tensorflow的dropout
- java安卓开发 项目实例_Java系列--第七篇 基于Maven的Android开发实战项目
- C++复习(虚函数)
- UVA1258 LA4721 Nowhere Money【数学计算】
- python实例化次数怎么算_关于python多次实例化
- 程序员要么在变来变去中成长,要么在变来变去中被淘汰,要么主动去适应变来边去的事实...
- 【Mac 教程系列第 8 篇】Mac 更换锁屏时的头像
- 怎么用Python爬取抖音小视频? 资深程序员都这样爬取的(附源码)
- 数学分析习题解答(四:第一部分)
- zynq--实现udp发送helloworld 到上位机---续集,调试时候容易出现有时候系统不响应
- AC6969A 双声道蓝牙芯片 经典蓝牙5.3 纯蓝牙
- SOA RPC SOAP REST
- VMware安装Redhat虚拟机步骤
- C语言实现简易扫雷游戏
- Navicat cannot add foreign key constraint或者添加外键后不显示