操作系统专题——死锁
来源:互联网 发布:淘宝换货要申请吗 编辑:程序博客网 时间:2024/05/01 13:10
死锁概念:
两个或以上进程因为争夺资源互相等待,若无外力,将无法继续推进——百度百科
死锁的产生条件:
(1)互斥条件:资源不能共享,具有排他性,一段时间内资源仅由一个进程占用。
(2)请求与保持条件:当进程向申请其他资源时,资源被另一进程占用,导致请求阻塞,然而此进程却仍然持有原有资 源而不释放。
(3)不剥夺条件:在进程未使用完资源时,资源无法被系统强行回收。
(4)环路等待条件:进程之间形成环路链,如{P0,P1,P2...PN},P0请求P1,P1请求P2,...PN-1请求PN,PN请求P1。
处理死锁的策略:
(1)死锁预防:破坏上述死锁必要条件中的任意一个即可。
(2)死锁避免:进程在资源申请之前,预判安全性。(可以使用算法,ex:银行家算法)
(3)死锁检测:判断系统是否处于死锁,若是,则进行死锁解除。
(4)死锁解除:强行回收部分进程资源,一般是撤销或挂起进程,回收资源再分配给其他阻塞状态进程。
附:银行家算法
我们可以把操作系统类比银行家,系统资源类比银行资金,进程请求资源类比用户请求贷款。
银行家原则:[注:Max_req:用户最大需求资金 ; Max_cur:银行家现有资金量]
(1)当Max_req <= Max_cur时,银行家可接纳用户;
(2)顾客可分期贷款,但Max_req <= Max_cur;
(3)当用户当期贷款数额大于银行现有资金时,银行推迟放贷,并保证用户在有限时间内得到贷款;
(4)当用户得到所有贷款后,必须在有限时间偿还贷款;
当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程本次申请的资源数是否超过了该资源所剩余的总量。若超过则拒绝分配资源,若能满足则按当前的申请量分配资源,否则也要推迟分配。
- 操作系统专题——死锁
- 死锁——操作系统
- 《操作系统》——死锁
- 操作系统——死锁
- 《操作系统》——死锁
- 操作系统——死锁
- 操作系统面试—死锁
- 操作系统——进程死锁
- 操作系统——死锁介绍
- 现代操作系统——死锁
- 现代操作系统——死锁
- 操作系统之死锁——学习笔记
- [操作系统概念]第五部分——死锁
- 操作系统面试—死锁(三)——死锁检测和死锁恢复
- 操作系统专题——线程池
- 【操作系统面试专题】:何谓死锁?产生死锁的原因和必要条件是什么?
- 操作系统面试—死锁(二)——银行家算法
- 操作系统实验六——死锁问题实验
- 7种形式的Android Dialog使用举例
- 动态规划之最长公共子序列的求解(C++实现)
- POJ 2417 Discrete Logging 离散对数
- Java NIO系列教程(四) Scatter/Gather
- Eclipse Java EE隐藏项目中Referenced Libraries jar包的方法
- 操作系统专题——死锁
- IOS开发Label标签相关方法的使用
- A1530 1528 1490 1533 1529 1526 破解联通4G教程
- boost::asio 之io_service
- sleep和wait的区别
- ubuntu 中怎么截图?ubuntu 12.10 截图工具及快捷键设置
- 安装Tomcat的错误
- 【小白的java成长系列】——多线程初识(多人买票问题)
- 彻底了解指针数组,数组指针,以及函数指针,以及堆中的分配规则