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



边栏推荐
猜你喜欢
随机推荐
中科驭数等单位牵头发布行业首部DPU评测方法技术白皮书
矩阵的特征值与特征向量
软件成分分析:华为云重磅发布开源软件治理服务
Qt | 关于样式表的使用 QStyleSheet
已经2022下半年了,居然还在说链动2+1!
MySQL查询
SQL查询数据以及排序
AI智能剪辑,仅需2秒一键提取精彩片段
如何利用PHP实现词法分析器与自定义语言
轻松入门自然语言处理系列 专题8 源码解读──基于HMM的结巴分词
Go-5-简单介绍fmt库
es6 循环,并终止循环
QT基础第四天(4)qt事件机制:事件基础概念,常见事件机制,事件处理以及事件的重写
线程安全问题以及其解决方法
2022 Low Voltage Electrician Exam Questions and Online Mock Exam
Qt | 关于 Qt Creator 打开项目编译不过的问题
PAT Grade A 1143 Lowest Common Ancestor
2022 Security Officer-A Certificate Exam Questions and Mock Exam
Application software code signing certificate
性能测试详解(理论篇)









