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



边栏推荐
猜你喜欢
随机推荐
Reed-Solomon Codes——RS纠错码
推荐系统相关顶会整理
GFP-GAN学习笔记
Thinkpad E430c使用u盘安装系统
看我如何用多线程,帮助运营小姐姐解决数据校对系统变慢!
Qt | 事件系统 QEvent
Apache的管理及web优化
MySQL-2-设置权限-创建表
QT | VS2017 + Qt5.14.2 环境搭建
高并发 MySQL 性能优化指南,自取
该死的单元测试,写起来到底有多痛?
CS5210的参数详情资料分享
mysql 索引使用与优化
【学习笔记之菜Dog学C】自定义类型详解(结构体+枚举+联合)
form的编辑与展示的切换(输入框,单选多选框,上传图片,颜色选择器)适用个人信息的展示与修改
2022年值得尝试的7个MQTT客户端工具
阿里面试败北:5种微服务注册中心如何选型?这几个维度告诉你
动态权重之多任务不平衡论文 (一)
Basic management of mysql database in Linux system
Eight big software attack overview of supply chain









