如果系统中既不采取预防死锁的措施,也不采取避免死锁的措施,系统就很可能发生死锁。

在这种情况下,系统应当提供两个算法:

1.死锁检测算法:用于检测系统状态,以确定系统中是否发生了死锁。 2.死锁解除算法:当认定系统中已经发生了死锁,利用该算法可将系统从死锁状态中解脱出来。

一、死锁的检测

为了能对系统是否已发生了死锁进行检测,必须:

1.用某种数据结构来保存资源的请求和分配信息;

2.提供一种算法,利用上述信息来检测系统是否已进入死锁状态。

1.数据结构资源分配图:

1.两种结点

进程结点:对应一个进程

资源结点:对应一类资源,一类资源可能有多个

2.两种边

进程结点——>资源结点:表示进程想申请几个资源(每条边代表一个)

资源节点——>进程结点:表示已经为进程分配了几个资源(每条边代表一个)

如果系统中剩余的可用资源数足够满足进程的需求,那么这个进程暂时是不会阻塞的,可以顺利地执行下去。

如果这个进程执行结束了把资源归还系统,就可能使某些正在等待资源的进程被激活,并顺利地执行下去。

相应的,这些被激活的进程执行完了之后又会归还一些资源,这样可能又会激活另外一些阻塞的进程..

如果按上述过程分析,最终能消除所有边,就称这个图是可完全简化的。此时一定没有发生死锁(相当于能找到一个安全序列) 如果最终不能消除所有边,那么此时就是发生了死锁

可以消除所有边-说明未发生死锁

不能消除所有边-说明发生了死锁

最终还连着边的那些进程就是处于死锁状态的进程

2.检测死锁的算法

1.在资源分配图中,找出既不阻塞又不是孤点的进程Pi

(即找出一条有向边与它相连,且该有向边对应资源的申请数量小于等于系统中已有空闲资源数量。如下图中,R1没有空闲资源,R2有一个空闲资源。若所有的连接该进程的边均满足上述条件,则这个进程能继续运行直至完成,然后释放它所占有的所有资源)。

消去它所有的请求边和分配变,使之称为孤立的结点。在下图中,P1是满足这一条件的进程结点,于是将P1的所有边消去。

2.进程Pi所释放的资源,可以唤醒某些因等待这些资源而阻塞的进程,原来的阻塞进程可能变为非阻塞进程。在下图中,P2就满足这样的条件。根据1中的方法进行一系列简化后,若能消去途中所有的边,则称该图是可完全简化的。

死锁定理:如果某时刻系统的资源分配图是不可完全简化的,那么此时系统死锁

二、死锁的解除

一旦检测出死锁的发生,就应该立即解除死锁。

补充:并不是系统中所有的进程都是死锁状态,用死锁检测算法化简资源分配图后,还连着边的那些进程就是死锁进程

1.解除死锁的主要方法有:

1.资源剥夺法。挂起(暂时放到外存上)某些死锁进程,并抢占它的资源,将这些资源分配给其他的死锁进程。但是应防止被挂起的进程长时间得不到资源而饥饿。

2.撤销进程法(或称终止进程法)。强制撤销部分、甚至全部死锁进程,并剥夺这些进程的资源。这种方式的优点是实现简单,但所付出的代价可能会很大。因为有些进程可能已经运行了很长时间,已经接近结束了,一旦被终止可谓功亏一篑,以后还得从头再来。

3.进程回退法。让一个或多个死锁进程回退到足以避免死锁的地步。这就要求系统要记录进程的历史信息,设置还原点。

如何决定“对谁动手” 1.进程优先级 2.已执行多长时间 3.还要多久能完成 4.进程已经使用了多少资源5.进程是交互式的还是批处理式的

三、总结

死锁的处理-死锁的检测与解除相关推荐

  1. 二十四、死锁的处理策略---检测和解除

    一.知识总览 如果系统中既不采取预防死锁的措施,也不采取避免死锁的措施,系统就很可能发生死锁.在这种情况下,系统应当提供两个算法: 1)死锁检测算法:用于检测系统状态,以确定系统中是否发生了死锁. 2 ...

  2. 操作系统(三十一)死锁的检测和解除

    2.4.4 死锁的检测和解除 目录 2.4.4 死锁的检测和解除 2.4.4.1 死锁的检测 2.4.4.2 死锁的解除 2.4.4.1 死锁的检测 死锁检测算法:用于检测系统状态,以确定系统中是否发 ...

  3. 2.4操作系统之死锁详解(预防、避免、检测、解除)+思维导图

    文章目录 0.思维导图 1.什么是死锁? 2.死锁.饥饿.死循环的区别 3.死锁产生的四个必要条件 4.什么时候会发生死锁? 5.死锁的处理策略 (1)预防死锁 ① 破坏互斥条件 ② 破坏不可剥夺条件 ...

  4. 操作系统之进程管理:20、死锁的检测和解除

    20.死锁的检测和解除 思维导图 死锁检测 死锁解除 思维导图 死锁检测 P1.P2:进程:R1.R2:某一类资源集合 绿边:已经被使用掉的资源个数:蓝边:进程请求的资源个数 由上图可知: P1使用了 ...

  5. 操作系统(13)-操作系统中的死锁及其预防、避免、检测与解除

    1 死锁的基本概念 死锁的定义:一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程.如果死锁发生,会浪费大量系统资源 ...

  6. 死锁的充分必要条件、死锁预防、死锁避免、死锁检测和解除

    2.19.2 死锁的条件 必要条件 互斥:一次只有一个进程可以使用一个资源 占有且等待:当进程等待其他资源时继续占有已有的资源 不可抢占:进程不能强行占有其他进程占有的进程 充分条件 循环等待:存在一 ...

  7. 预防死锁的方法以及死锁的检测与解除

    3.6 预防死锁的方法 一.预防死锁 二.系统安全状态 三.利用银行家算法避免死锁 预防死锁和避免死锁这两种方法,实质上都是通过施加某些限制条件,来预防发生死锁: 两者的区别主要在于: 预防死锁: 施 ...

  8. 死锁的处理策略—预防死锁、避免死锁、检测和解除死锁

    一.死锁的处理策略--预防死锁 (一)破坏互斥条件 互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁. 如果把只能互斥使用的资源改造为允许共享使用,则系统不会进入死锁状态.比如: SPOOLing ...

  9. 死锁的预防、避免、检测、解除

    1.死锁的概念: 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互 ...

  10. 预防死锁,检测死锁,避免死锁,解除死锁....

    什么是死锁 在并发环境下,各个进程因竞争资源而造成的一种互相等待对方手里的资源,导致各个进程都阻塞,都无法向前推进的现象就是死锁.发生死锁后如果没有外力干涉就会导致任务无法向前推进. 进程死锁.饥饿. ...

最新文章

  1. Android Studio不安装opencv manager配置
  2. HDU 1599 find the mincost route
  3. 中文信息处理——分词评价程序(计算分词结果的准确率,召回率,F测度)
  4. Forget Yourself
  5. 拆分是解决大规模应用问题的本质
  6. linux命令行翻页
  7. 最新亲测可用的免费google翻译api
  8. 计算机三级 数据库技术 学习笔记
  9. angular 单击和双击事件分开
  10. 信号处理学习笔记2——维纳滤波器
  11. Java中多个pdf文件合并为一个
  12. python九宫格矩阵排数
  13. #loj3090 [BJOI2019] 勘破神机
  14. ThinkPad E450 进入dos界面快捷键 按F1
  15. php发送邮件二种方法 php使用smtp发送邮件
  16. 赛轮转债上市价格预测
  17. 嵌入式系统概述2-嵌入式系统组成和应用
  18. 教育邮箱怎么申请?教育邮箱怎么登录?
  19. 使用GloVe训练自己的语料
  20. 2021年度十大开源SLAM算法

热门文章

  1. openlayers 给数据点(散点)添加点击事件 和hover事件
  2. 王伦便起身把盏 加密软件
  3. 计算机系统要解决的问题输入,电脑切换不出来输入法,详细教您解决切换输入法的问题...
  4. 女生java_女生适合选JAVA后端吗?
  5. 微信小程序实现下拉选择及手动输入查询
  6. 我与WIFI宝的一段奇缘
  7. 从程序员到项目经理(9):程序员加油站 --要执着但不要固执
  8. html css3风车,CSS3 风力发电 风车动画
  9. 记录服务器宕机事件:解决dell服务器system halted的方法
  10. bose耳机信号断续_在我跑坏了第三副耳机后 我总算是懂了