操作系统《死锁》

1 死锁的基本概念

1.1 死锁的定义
一组进程中,每个进程都无限等待被该组进程中的另一进程所占有的资源,因而永远无法得到资源,这种现象称为进程死锁,这一组进程就称为死锁进程。死锁会导致大量资源浪费。
1.2 死锁出现的原因
资源数量有限,锁和信号量错误使用。
可重用资源:可被多个进程多次使用
可消耗资源:只可使用一次、可创建和销毁的资源
1.3 活锁和饥饿
活锁:先加锁再轮询,既无进展也没有阻塞;
饥饿:资源分配策略导致
1.4 产生死锁的必要条件
互斥使用(资源独占) :一个资源每次只能给一个进程使用
占有且等待(请求和保持) :进程在申请新的资源的同时保持对原有资源的占有
不可抢占:资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放
循环等待:存在一个进程等待队列P1,P2,…Pn,其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1的资源,形成一个等待环路。

2 资源分配图

2.1 定义
资源分配图(Resource Allocation Graph,RAG),是用有向图描述系统资源和进程的状态。
二元组G=(V,E)。V:结点的集合,分为P(进程),R(资源)两部分,
P={P1,P2,…,Pm}
R={R1,R2,…,Rn}
E:有向边的集合,其元素为有序二元组,
(Pi,Rj)或(Rj,Pi)
2.2 资源分配图的画法
系统由若干类资源构成,一类资源称为一个资源类;每个资源类中包含若干个同种资源,称为资源实例。
资源类:用方框表示
资源实例:用方框中的黑圆点表示
进程:用圆圈中加进程名表示
分配边:资源实例—>进程
申请边:进程—>资源类,如下图所示:
在这里插入图片描述

2.3 死锁定理
如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统中可能存在死锁。
如果每个资源类中只包含一个资源实例,则环路是死锁存在的充分必要条件。
2.4 资源分配图化简
步骤:
1、找一个非孤立且只有分配边的进程结点:去掉分配边,将其变为孤立结点
2、再把相应的资源分配给一个等待该资源的进程:即将该进程的申请边变为分配边。
重复1、2步。

3 死锁预防

3.1 解决死锁的方法

不考虑此问题(鸵鸟算法)
死锁预防:是一种静态策略,即设计合适资源分配算法不让死锁发生
死锁避免:是一种动态策略,即以不让死锁发生为目标,跟踪并评估资源动态分配过程,根据评估结果决策是否分配
死锁检测与解除

3.2 死锁预防(DeadLock Prevention)
定义:在设计系统时,通过确定资源分配算法,排除发生死锁的可能性
具体做法:破坏产生死锁的四个必要条件之一。
3.2.1 破坏“互斥使用”条件
资源转换技术:把独占资源转换成共享资源
**

4 死锁避免

**
4.1 定义
在系统运行过程中,对进程发出的每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统发生死锁或可能发生死锁,则不予分配。

安全状态:如果系统中存在一个由所有进程构成的安全序列P1,P2,…,Pn,则系统处于安全状态。

4.2 安全序列

一个进程序列{P1,P2,…Pn}是安全的,如果对于每一个进程Pi(1≤i≤n):
它以后还需要的资源量不超过系统当前剩余资源量与所有进程Pj(j<i)当前占有资源量之和,则成系统处于安全状态。安全状态一定没有死锁发生,不安全状态一定导致死锁。
4.3 一种典型的死锁避免算法——银行家算法
【操作系统】死锁避免之银行家算法
5 死锁检测与解除
5.1 死锁检测
允许死锁发生,但是操作系统会不断监视系统进展情况判断是否发生死锁;一旦发生死锁,将会解除死锁并以最小的代价恢复操作系统的运行。

检测时机:
1、当进程由于资源请求不满足而等待时检查死锁,缺点是系统开销大
2、定时检测
3、系统资源利用率下降时检测死锁

5.2 死锁解除
死锁解除最核心的是以最小的代价恢复系统的运行。有如下方法:

撤销所有死锁进程
进程回退(Rollback)再启动
按照某一原则逐一撤销死锁进程,直到死锁解除
按照某种原则逐一抢占资源(资源被抢占的进程必须回退到之前的对应状态),直到死锁解除

作者:少侠露飞
链接:https://juejin.cn/post/6948706070520938504
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值