死锁的处理策略“检测和解除”-第三十九天

目录

前言

死锁的检测

数据结构资源分配图

基于“图”检测死锁

可以消除所有边

 不能消除所有边

结论

死锁定理

死锁的解除

本节思维导图


前言

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

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

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

死锁的检测

①用某种数据结构来保持资源的请求和分配信息

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

数据结构资源分配图

基于“图”检测死锁

核心思想:根据是否可以消除所有边确定系统是否发生死锁

能消除所有的边,即称该图是可完全简化地,一定未发生死锁,相当于找到了一个安全序列

检测规则:

  1. 系统中剩余的可用资源数足够满足进程的需求,那么这个进程暂时不会被阻塞,可顺利执行
  2. 进程执行结束将资源归还系统,就可能使某些正在等待资源地进程被激活,开始执行
  3. 被激活进程执行完后又会归还一些资源,这可能又会激活另外一些阻塞的进程

可以消除所有边

  1. P1进程向R2资源请求了一个资源,R2此时被分配后还有一个资源,所以P1进程不会被阻塞
  2. P2进程向R1资源请求了一个资源,R1此时被分配后没用资源,所以P2进程被阻塞
  3. 当P1进程完成后会将R1分配的资源和向R2请求的资源全部返回,此时P2进程就可以被唤醒
  4. P2进程被唤醒后,执行完后也会将被分配的资源和申请的资源返回,至此所有边均被消除

 不能消除所有边

  1.  P1进程向R2申请两个资源,但R2没有资源剩余,P1进程阻塞
  2. P2进程向R1申请一个资源,但R1也没有资源剩余,P2进程也被阻塞
  3. P3进程在接收完R2进程提供的资源后可以顺利执行,执行完后释放一个R2资源
  4. 此时R2有一个资源,但是P1要两个资源所以P1进程依然被阻塞,同样的P1阻塞导致R1的剩余资源不满足P2的要求,所以P2也依然会被阻塞 

 

分配边表示已经为进程分配的资源个数,请求边表示在已有资源基础上仍需要的资源个数 

结论

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

死锁定理

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

死锁的解除

基本思想:一旦检测出死锁的发生,就应该立即解除死锁

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

实现方法:

  1. 资源剥夺法:挂起(暂时放到外存上)某些死锁进程,并抢占它的资源,将这些资源分配给其他的死锁进程。但是应防止被挂起的进程长时间得不到资源而饿死
  2. 撤销进程法:(或称终止进程法)强制撤销部分、甚至全部死锁进程,并剥夺这些进程的资源。这些方式的优点是实现简单,但所付出的代价可能会很大,因为有些进程可能已经运行了很长时间了,已经接近结束了,一旦被终止可谓功亏一篑,以后还得从头再来
  3. 进程回退法:让一个或多个死锁进程回退到足以避免死锁的地步,这就要求系统要记录进程的历史信息,设置还原点

如何决定对谁动手(剥夺、撤销还是回退):

  1. 进程优先级
  2. 已执行多少时间
  3. 还要多久能完成
  4. 进程已经使用了多少资源
  5. 进程是交互式还是批处理式的

本节思维导图

~over~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/596540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西电期末1019.校验和计算

一.题目 二.分析与思路 难点在于逐个取出数据的每一位,我们编写f函数,使用了一个while函数,每次循环中用取余的运算符找到数据的个位累加,再将n/10,如此n便被去除了个位,十位就成了新的个位,最…

案例精选|淄博绿能燃气工程有限公司日志审计系统建设方案

淄博绿能燃气工程有限公司,成立于1994年,前身为淄博市煤气公司管道液化气分公司。公司业务主要涉及天然气、液化气等市政工程施工及城镇燃气供应等领域,具有市政公用工程施工总承包二级资质,《压力管道安装许可证》压力管道安装GB…

利用Embedding优化搜索功能

我们继续用Gemini学习LLM编程之旅。 Embedding是一种自然语言处理 (NLP) 技术,可将文本转换为数值向量。Embedding捕获语义含义和上下文,从而导致具有相似含义的文本具有更接近的Embedding。例如,句子“我带我的狗去看兽医”和“我带我的猫去…

LeetCode---378周赛

题目列表 2980. 检查按位或是否存在尾随零 2981. 找出出现至少三次的最长特殊子字符串 I 2982. 找出出现至少三次的最长特殊子字符串 II 2983. 回文串重新排列查询 一、检查按位或是否存在尾随零 这题和位运算有关,不是很难,题目要求至少有两个数的…

案例073:基于微信小程序的智慧旅游平台开发

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

用贪心算法编程求解任务安排问题

题目:用贪心算法编程求解以下任务安排问题 一个单位时间任务是恰好需要一个单位时间完成的任务。给定一个单位时间任务的有限集S。关于S的一个时间表用于描述S中单位时间任务的执行次序。时间表中第1个任务从时间0 开始执行直至时间1 结束,第2 个任务从时…

20240104确认AIO-3399J的开发板适配ov13850摄像头不支持4K分辨率录像

20240104确认AIO-3399J的开发板适配ov13850摄像头不支持4K分辨率录像 2024/1/4 13:23 开发板:Firefly的AIO-3399J【RK3399】 SDK:rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.0.tar.bz2.ab Android1…

人工智能如何重塑金融服务业

在体验优先的世界中识别金融服务业中的AI使用场景 人工智能(AI)作为主要行业的大型组织的重要业务驱动力,持续受到关注。众所周知,传统金融服务业在采用新技术方面相对滞后,一些组织使用的还是上世纪50年代和60年代发…

Android Jetpack学习系列——Navigation

写在前面 Google在2018年就推出了Jetpack组件库,但是直到今天我才给重视起来,这真的不得不说是一件让人遗憾的事。过去几年的空闲时间里,我一直在尝试做一套自己的组件库,帮助自己快速开发,虽然也听说过Jetpack&#…

Android如何正确使用 Canvas 的 save() 和 restore() 方法

如何正确使用 Canvas 的 save() 和 restore() 方法 在Android的绘图API中,Canvas类提供了一系列强大的功能来绘制自定义视图。为了更高效地管理绘图状态和变换,Canvas类提供了save()和restore()方法。正确使用这些方法是高效绘图和避免常见错误的关键。 …

任务需求分析中的流程图、用例图、er图、类图、时序图线段、图形的作用意义

任务需求分析中的流程图、用例图、er图、类图、时序图线段、图形的作用意义 流程图 流程图中各种图形的含义及用法解析 连接线符号 连接各要素,表示流程的顺序或过程的方向。 批注符号 批注或说明,也可以做条件叙述。 子流程 流程中一部分图形的逻辑…

机器人动力学一些笔记

动力学方程中,Q和q的关系(Q是sita) Q其实是一个向量,q(Q1,Q2,Q3,Q4,Q5,Q6)(假如6个关节) https://zhuanlan.zhihu.com/p/25789930 举个浅显易懂的例子,你在房…

Windows内核理论基础学习

文章目录 前言Windosw内核 理论基础Windows体系结构CPU权限级别内存空间布局Windows内核结构硬件抽象层(HAL)内核层执行体层设备驱动程序文件系统/存储管理网络 Windows子系统窗口管理图形设备接口 系统线程和系统进程 内核基本概念处理器模式内存管理进…

项目框架构建之5:日志的构建

本文是“项目框架构建”系列之5,本文介绍日志的构建。 为了做出通用的公共日志模块,我们需要使用微软的Microsoft.Extensions.Logging日志管理模块,该模块提供了灵活且可扩展的日志记录机制,它为整个.net应用程序提供了一致统一的…

02-微服务-Eureka注册中心

Eureka注册中心 假如我们的服务提供者user-service部署了多个实例,如图: 大家思考几个问题: order-service在发起远程调用的时候,该如何得知user-service实例的ip地址和端口?有多个user-service实例地址,…

每日一道算法题day-one(备战蓝桥杯)

从今天开始博主会每天做一道算法题备战蓝桥杯,并分享博主做题的思路,有兴趣就加入我把! 算法题目: 有一个长度为 N 的字符串 S ,其中的每个字符要么是 B,要么是 E。 我们规定 S 的价值等于其中包含的子…

牛客网面试题知识点记录-03

1.题目讲解重写后子类调用父类的方法总结:当子类重写了父类方法A,父类方法直接调用被重写的父类方法后,调用的是子类的重写的父类方法A。 class Test {public static void main(String[] args) {System.out.println(new B().getValue());}st…

在线负公差测径仪 生产场景智能化

在线负公差测径仪是专为负公差轧制而研发的精密仪器,除检测的外径尺寸外,还能对负公差信息进行展示。让操作工对生产更加得心应手。 负公差测径仪同样采用八轴测头进行非接触式的在线检测,以实现全方位的尺寸检测,并将截面图实时展…

申请域名SSL证书并自动推送至阿里云 CDN

近期国外SSL证书厂商调整了免费证书的续签规则,一年期的证书全部取消,现在只能申请90天有效期的免费证书。普通web站点可以通过宝塔面板或部署acme.sh等证书自动管理工具来实现自动化申请和部署,但是阿里云之类的CDN服务就只能通过手动或Open…

初步认识API安全

一、认识API 1. 什么是API API(应用程序接口):是一种软件中介,它允许两个不相关的应用程序相互通信。它就像一座桥梁,从一个程序接收请求或消息,然后将其传递给另一个程序,翻译消息并根据 API 的程序设计执行协议。A…