操作系统:死锁

文章详细阐述了死锁的概念,包括四个必要条件和Coffman条件。介绍了资源分配图和死锁定理,以及死锁预防的静态策略,如预分配和有序条件分配。银行家算法作为死锁避免的一种方法,确保系统的安全性。此外,文章还讨论了死锁的检测、恢复机制和与饥饿状态的区别。
摘要由CSDN通过智能技术生成

1.什么是死锁

一组进程中每个进程均等待此组进程其他进程其他进程所占有的,因而永远无法得到的资源。

关于死锁的四个结论:

1.参与死锁的进程至少为2个

2.占有资源至少有两个

3.参与死锁的进程均无限等待

4.是当前运行进程的子集

coffman条件:

若发生死锁,则必定满足下面四个条件

1.资源独占(无法破坏)

2.不可剥夺

3.保持申请

4.循环等待

2.资源分配图

进程为圆圈,资源为方框。

死锁定理:发生死锁的充要条件是资源分配图不可完全约简。

3.死锁预防(静态策略)

1.预分配(一次全部分配,降低系统并发性)破坏保持申请

2.有序条件分配(对资源进行编号,能申请这个资源的条件rj是f(ri)<f(rj),其中ri为已经申请资源。破坏循环等待。

4.死锁避免(动态策略)

安全与不安全

注意:安全一定无死锁,不安全可能有死锁,死锁一定是不安全。(保守性)

银行家算法概述:

claim:每个进程需要的全部的资源类的资源实例总数(静态)

allocation:每个进程已经占有的资源类的资源实例个数(动态改变)

need:每个进程还需要的资源类的资源实例个数。关系:claim=allocation+need

available:当前系统剩余的每个资源类的资源实例个数。

步骤:系统收到request后与need进行比较看是否合法,然后与available比较看是否可以分配,若均可以,则分配,need-=request,allocation+=request,进行系统安全检测,若安全则分配,若不安全,则撤销分配,need+=request,allocation-=request.

安全状态检测:找到一个安全序列,可以完全执行完。available meet need。

END

思考:为什么说银行家算法是保守性算法?

答:银行家的保守性体现在available meet need,我们并不知道进程具体是按照哪种顺序执行的,所以只能考虑最坏情况。

5.死锁发现与检测(与资源分配图一致)

三个内容:如何检测,什么时候检测,如何恢复(死锁恢复)

1.如何检测:

变量:

allocation:进程已经占有的资源类的资源实例个数

request:进程正在发出的申请请求

available:系统当前空闲的资源类的资源实例个数

具体步骤:资源分配图

2.何时检测

1.进程等待时检测

2.定时检测

3.资源利用率下降时检测

4.交互式进程得不到响应

3.如何恢复

1.重启

2.撤销进程

3.剥夺资源

4.回溯,进程回退。

6.鸵鸟算法

视而不见

7.死锁与饥饿,饿死

等待时间给进程的推进和响应带来显著影响时:饥饿

饥饿一定程度,并且此时执行已经不再具有实际意义时:饿死

由于忙式等待而造成的饥饿:活锁

死锁与饿死的区别:

1.进程状态,死锁的进程一定处于等待态,而由于忙式等待而饿死的进程处于就绪或者运行态。

2.死锁的进程等待永远也得不到释放的资源,而饿死的进程是等待会释放但永远不会分配给自己的资源。

3.死锁一定是循环等待,而饿死则不一定

4.死锁一定发生在多个进程之间,而饿死可能只有一个进程

8.可复用资源的死锁静态分析(不知道具体执行过程)

(P:e:c)表示申请e资源,占有c资源。

将每个进程的占有资源申请资源状态画出来,然后我申请你占有的分配有向弧(同个进程之间不连),找出环路,(看是否可达)有相同进程不可达,有相同的被占有资源不可达。若可达,建议找出一个可达序列(不然不好判断)

小技巧:两个进程构成的环路若不满足上述条件,则一定可达。

 

 9.同种组合资源死锁的必要条件

资源总量M,N个进程,参与死锁的进程为n

则:

参与死锁需要的资源总数>=M+n

未参与死锁需要的资源总数>=N-n

则有总资源数>=M+N

故若总资源数<M+N,则一定不会发生死锁

总资源数>=M+N,则至少有一种交叉会发生死锁。

 10.过河问题

思路:

1.最多5个人同时过河

2.1,2同时申请;5,6同时申请 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值