操作系统(四)

本文详细介绍了操作系统中死锁的概念,包括四个必要条件、死锁预防的四种方法(如银行家算法)以及死锁的避免策略。此外,还讨论了死锁检测和恢复的算法,探讨了银行家算法在资源分配中的应用。
摘要由CSDN通过智能技术生成

引言

对付死锁,有一系列预防,避免,检测,恢复的方法。但事实是,操作系统只采用鸵鸟算法,即不预防、不避免,对可能出现的死锁采取放任的态度。下面具体来探寻里面的奥妙~

文章导读

  • 死锁概述
  • 死锁的预防
  • 死锁的避免(银行家算法,例题)
  • 死锁检测和恢复

一、死锁概述

定义
如果一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程是死锁的。

图片来源于网络

死锁的四个必要条件

  • 互斥:在一个时间只能有一个进程使用资源。
  • 请求和保持(持有并等待):进程保持至少一个资源正在等待获取其他进程持有的额外资源。
  • 不可抢占:一个资源只能在进程已经完成了它的任务之后,被自愿释放。
  • 循环等待:存在n个进程,进行循环等待所占资源。

值得注意的是,死锁出现后,必须满足这四个条件;但是如果出现这四个条件,不一定出现死锁。

对于死锁处理的办法有死锁预防死锁避免死锁检测死锁恢复

二、死锁的预防

预防死锁的思想就是设计一种方法,一定不会出现死锁,即破坏死锁出现的四个必要条件

2.1 破坏互斥

让共享资源不是必须的,必须占用非共享资源。

缺点
扼杀了共享资源,系统有了很大的局限性。

2.2 破坏请求和保持

必须保证当一个进程请求的资源,它不持有任何其他资源。

缺点
需要进程请求并分配其所有资源,它开始执行之前或允许进程请求资源仅当进程没有资源;资源利用率很低,可能引发饥饿。

改进后的方法
允许一个进程只获得运行初期所需资源,便开始运行,运行的过程中再逐步释放不用的资源,请求新的资源。能够提高设备的利用率,减少进程发生饥饿的几率。

2.3 破坏不可抢占

如果进程占有某些资源,并请求其他不能被立即分配的资源,则释放当前正占有的资源。

实现细节:
1.被抢占资源添加到资源列表中。
2.只有当它能够获得旧的资源并且请求新的资源存在,进程可以得到执行。

缺点
实现复杂,代价高。

2.4 破坏循环等待

对所有资源类型进行排序并赋上序号,要求每个进程按照资源的顺序进行申请。如果需要多种资源,必须先请求序号低的资源,再请求序号高的。如果占有序号高的又想请求序号低的,必须释放所有序号大于低序号的资源。采用这种线性的方式,能够打破循环等待的条件。

缺点
1.资源的序号必须相对稳定,限制新设备的增加。
2.作业使用各类资源的顺序与系统规定顺序不同,造成浪费。
3.增加用户程序编程时的代价,必须按照规定次序申请资源。

三、死锁的避免

既然死锁的预防策略都显得特别的极端,就看看有哪些避免策略。避免死锁抓住了进程请求资源的这一契机,进程请求资源时先判断会不会产生死锁,如果会就不给。而不是基于破坏死锁必要条件的考虑。

3.1 主要思

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值