当前位置:网站首页>2.5 - 死锁
2.5 - 死锁
2022-08-02 15:10:00 【是李黏黏鸭】
一、死锁

1、概念
- 两个或者两个以上的进程,相互需要对方的资源,但是又不释放自己的资源,导致无法运行下去的情况。
- 例如卖家不拿到钱就不给买家货,买家不拿到货就不给卖家钱,导致生意无法进行。
2、产生死锁的四个条件
- 互斥
- 保持和等待
- 不剥夺
- 环路等待
3、死锁的预防
- 打破产生死锁的四个条件中的任意一个。
- 例如买卖案例中,买家直接剥夺了卖家的货,然后把钱给卖家,卖家拿到钱就打破了死锁。
4、死锁的避免
- 有序资源分配法
- 银行家算法
思想
在把资源分配出去之前先分析资源分配出去是否是安全的。也就是说给进程分配资源之前会先衡量系统是否会进入不安全的状态,如果系统会进入不安全的状态,则不给进程分配资源;如果存在安全的序列,也就是系统处于安全状态,则给进程分配资源。
安全状态
系统里面的这些进程,能按照某一个次序,依次执行下去,存在这样的一个序列,我们九城系统是安全的。
举例说明
就下面的例子来说,银行将资金分配给项目之前,会先判断资金是否会进入不安全状态,发现当项目能否按照特定的顺序依次完成时(2), 资金就处于安全的状态,所以银行会将资金分配给项目。

(1)如果即将银行的50万分配给项目2或者项目3,三个项目依然无法运行,银行的钱也收不回来了,就变成死锁了。
(2)如果将银行的钱给项目1,项目1就有150万了,就能正常运行了,项目1完成后银行可以收回150万,再分配给项目3,项目三就有300万了,也可以正常运行了,项目3运行完成后,银行可以收回300万,再分配给项目2 200万,项目2有400万了也可以正常运行,项目2运行完成之后银行可以收回400万,至此银行的500万就全部收回了。整个运行过程不会形成死锁。
5、系统不发生死锁的资源计算(常考)
- 给系统中每一个进程分配所需最大资源少一个后,系统还剩一个资源,就不会发生死锁。
- 举例说明
P1共需4个资源,P2共需3个额资源,P3共需5个资源。给P1分配3个资源,P2分配2个资源,P3分配4个资源,还剩一个资源,系统就不会死锁。所以系统有10个资源时,系统就不会产生死锁。
二、考点1:不发生死锁的最小资源数计算

三、考法2:银行家算法



边栏推荐
猜你喜欢
随机推荐
面试必问的HashCode技术内幕
看我如何用多线程,帮助运营小姐姐解决数据校对系统变慢!
8大软件供应链攻击事件概述
2022年值得尝试的7个MQTT客户端工具
vim的高级用法配置
先睹为快!界面控件DevExpress WPF这些功能即将发布
如何利用PHP实现词法分析器与自定义语言
Qt | 信号和槽的一些总结
mysql 索引使用与优化
Based on mobileNet dog breed classification (migration)
数据防泄漏产品该如何选择
Qt | 关于容器类的一些总结
WWW'22 推荐系统论文之多任务与对比学习篇
2022 VMware下载安装教程
MySQL-2-设置权限-创建表
软件成分分析:华为云重磅发布开源软件治理服务
Brute-force cracking of the latest JVM interview questions of Meituan: unlimited execution
绝对最直白的MySQL MVCC机制总结,免费拿走
如何用JDBC操作Mysql
aPaaS低代码平台(二) | 快速构建业务模型