当前位置:网站首页>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:银行家算法



边栏推荐
猜你喜欢
随机推荐
PAT Class A 1130 Infix Expressions
为什么我不再推荐枚举策略模式?
类的比较大小(Comparable -> compareTo(类自己实现接口),Comparator -> compare(新建一个类作为比较器))
高并发 MySQL 性能优化指南,自取
“绿色低碳+数字孪生“双轮驱动,解码油气管道站升级难点 | 图扑软件
IJCAI'22 推荐系统论文梳理
【深度学习】关于处理过拟合的一点心得
GFP-GAN学习笔记
软件成分分析:华为云重磅发布开源软件治理服务
Go-4-在vim中无法跳转到源代码
已经2022下半年了,居然还在说链动2+1!
【Untitled】
MySQL查询
Sql文件导入数据库-保姆级教程
ROS人机交互软件
入门关于 switch case 的理解
程序员开发效率神器汇总!
MySQL-3-密码破解
AI智能剪辑,仅需2秒一键提取精彩片段
Go-6-常用命令-go包管理问题-两个路径-GO111MODULE









