一、知识总览

如果系统中既不采取预防死锁的措施,也不采取避免死锁的措施,系统就很可能发生死锁。在这种情况下,系统应当提供两个算法:

1)死锁检测算法:用于检测系统状态,以确定系统中是否发生了死锁。

2)死锁解除算法:当认定系统中已经发生了死锁,利用该算法可将系统从死锁状态中解脱出来。

二、死锁的检测

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

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

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

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

三、死锁的解除

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

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

解除死锁的主要方法有:

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

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

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

如何决定对谁动手?

四、总结

二十四、死锁的处理策略---检测和解除相关推荐

  1. OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()

    OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack() 参考博客: Harris角点检测原理详解 Harri ...

  2. 二十四.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Web渗透的第一步工作,涉及网站信息.域名信息.端口信息.敏感信息及指纹 ...

  3. 二十四种设计模式之策略模式

    一.什么是策略模式? 简单来说,策略模式是将每一个算法封装到拥有共同接口的不同类中,使得算法可以在不影响客户端的情况下发生变化.(也可以理解为可供程序运行时选择的(不同的类==不同的解决方案)). 策 ...

  4. [网络安全自学篇] 二十四.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Web渗透的第一步工作,涉及网站信息.域名信息.端口信息.敏感信息及指纹 ...

  5. 二十四种设计模式:策略模式(Strategy Pattern)

    策略模式(Strategy Pattern) 介绍 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法的变化可独立于使用它的客户. 示例 有一个Message实体类,对它的操 ...

  6. tensorflow精进之路(二十四)——Object Detection API目标检测(中)(COCO数据集训练的模型—ssd_mobilenet_v1_coco模型)

    1.概述 上一讲简单的讲了目标检测的原理以及Tensorflow Object Detection API的安装,这一节继续讲Tensorflow Object Detection API怎么用. 2 ...

  7. 2.4.4 死锁的处理策略-检测和解除

    目录 思维导图 死锁的检测 死锁的解除 思维导图 死锁的检测 死锁的解除

  8. 死锁的处理策略——检测和解除

    死锁的检测 死锁的解除

  9. 【Microsoft Azure 的1024种玩法】二十四.通过Azure Front Door 的 Web 应用程序防火墙来对 OWASP TOP 10 威胁进行防御

    [简介] 我们都知道像 SQL 注入.跨站点脚本攻击(XSS)之类的恶意攻击以及 OWASP 发现的十大威胁都可能会导致服务中断或数据丢失,让 Web 应用程序所有者受到巨大威胁.那么如何有效的解决O ...

最新文章

  1. 卷积神经网络鼻祖LeNet网络分析
  2. R语言入门学习笔记 - 对R软件的认识
  3. localStorage与sessionStorage的区别
  4. 使用 ohmyzsh 打造 windows、ubuntu、mac 系统高效终端命令行工具
  5. ext4文件系统的delalloc选项造成单次写延迟增加的分析
  6. c++ 输出二进制_Python入门3print格式化输出的几种方法
  7. cocos2d-x学习 之四
  8. Java——类的继承
  9. 和我一起学CSLA.NET----创建业务对象2
  10. 大数据分析的流程是怎样
  11. Confluence 6 附件存储提取文本文件
  12. android实现b站弹幕,B站弹幕库DanmakuFlameMaster源码浅析
  13. C# Access数据库使用
  14. PSD格式截图软件 ScreenToLayers 1.2.3中文版
  15. 圈内著名ts_TS欠薪几百万遭实锤,阿泰被玩弄于股掌,权谋剧情比宫斗还精彩...
  16. MVP是什么,不是什么
  17. 使用tf.data.Dataset加载numpy数据
  18. 【推荐系统】Criteo数据集介绍
  19. GOT-10k: A Large High-Diversity Benchmark forGeneric Object Tracking in the Wild(论文翻译)
  20. React.createClass()方法

热门文章

  1. Markdown 修改图片的尺寸
  2. 后序遍历的非递归算法python_二叉树后序遍历(递归与非递归)算法C语言实现...
  3. Linux 下 PostgreSQL 源码编译安装
  4. R语言绘制生存曲线图
  5. 11月3号晚7点中科院南土所梁玉婷报告:土壤微生物功能组学与关键类群识别
  6. QIIME 2教程. 26为QIIME 2开发新插件DevelopingPlugin(2020.11)
  7. python使用matplotlib可视化3D曲面图、曲面图表示一个指定的因变量y与两个自变量x和z之间的函数关系
  8. python使用matplotlib可视化subplots子图、subplots绘制子图、子图之间有重叠问题、使用subplots_adjust函数合理设置子图之间的水平和垂直距离
  9. R语言使用scatterplot3d包的scatterplot3d函数可视化3D散点图(3D scatter plots)、在3D散点图中添加垂直线和数据点描影、3D图中添加回归平面
  10. R语言caret包构建xgboost模型实战:特征工程(连续数据离散化、因子化、无用特征删除)、配置模型参数(随机超参数寻优、10折交叉验证)并训练模型