【OS笔记 30】处理死锁的四种方法——死锁的检测与解除

创作日志: 我的教材是汤小丹的计算机操作系统第四版,上面只讲了终止进程这一种方法,我在网上找资源抢占方式的讲解(包括回滚等),也不是很清楚,于是我去请教了我们的操作系统老师,现在理解了。

一、死锁的检测

1. 资源分配图的方法

与【OS笔记 29】中避免死锁的资源分配图检测方法一样,只适用于每种资源只有一个实例,看有没有环。区别就是避免死锁方法中,是在分配前进行检测,而此方法是在已经分配后进行检测。

2. 类似于银行家算法的方法

此方法没要求掌握,略。



二、死锁的解除

1. 终止进程的方法

(1)终止所有死锁进程
是最简单的方法,终止所有死锁进程后,死锁自然就解除了。
缺点: 代价可能会很大:有些快要结束的进程一旦被终止,可谓是“功亏一篑”。

(2)逐个终止进程,直至死锁解除
比上面的方法更温和一些,按照某种约定好的顺序,一个一个地终止进程,当有足够的资源时,就打破了循环等待,死锁解除。
选择被终止的进程的策略:为死锁解除所付出的“代价最小”,怎么才算是代价最小呢?下面是一些应该考虑的因素:
① 进程的优先级大小
② 进程已经执行了多少时间?以后还需要多少时间才能完成?
③ 进程已经使用了多少资源?以后还需要多少资源?
缺点: 付出的代价也可能会很大,因为每终止一个进程,都要用死锁检测算法确定系统死锁是否已经被解除。

2. 资源抢占的方法

(1)事先规定好进程被抢占的顺序以使代价最小。(要让各进程有限的被选为“牺牲品”,否则某些经常被强占的进程会发生“饥饿”现象。)
(2)发生死锁时,选择一个“牺牲品”,抢占它的资源给其它进程;
(3)然后将这个“牺牲品”进程回滚到过去的某个安全状态。

解释一下“回滚”: 采用这种方式时,系统会周期性地对进程进行状态记录,包括存储映像、资源状态等,都写入到一个单独的文件中。发生死锁时,系统就将牺牲品进程回滚到它的一个较早的安全状态。
为什么要回滚? 如果不进行回滚,该进程此时应该拥有的资源却被抢走了。不能让该进程无端地受到伤害,所以让它回到一个不需要该资源的状态。


❤OK,觉得有用的点个赞吧!


  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值