化简资源分配图判断是否发生死锁

目录

1.资源分配图的概念

2.判断是否发生死锁


1.资源分配图的概念

资源分配图表示进程和资源之间的请求关系,例如下图:

P代表进程,R代表资源,R方框中 有几个圆球就表示有几个这种资源,在图中,R1指向P1,表示R1已经分配了一个资源给P1了,R1指向P1的边叫做分配边(资源-->进程);P1指向R2,表示P1还需要一个R2才能执行,P1指向R2的边叫做请求边(进程-->资源)。

阻塞节点:某进程中所请求的资源已全部分配完毕,无法获取所需资源,则该进程被阻塞了无法继续执行,如上图P2。

非阻塞节点:某进程所请求的资源还有剩余,可以分配给该进程继续运行。如上图中P1,P3。 当一个进程资源图中所有进程都是阻塞节点时,即进入死锁状态

说明一下:

上面的图表示,系统分配一个 R1 资源给进程 p2,然后又分配一个 R1类资源给进程 p1,
最后进程 p1 收到一个 R1 类资源后又继续申请1个R1类资源,此时,还剩下一个 R1类资源可以分配给 P1,但还没分配给 P1。(注意:图中P1的申请是还没得到响应的,不要以为 R1 指向P1的那个箭头是响应 P1的申请,而分配了资源给 P1)。“右箭头”跟“左箭头”是没任何关系的。

也就是先分配,再看进程的请求是否能够被满足。如果某个进程的请求能被满足,那么这个进程就是非阻塞节点,不能被满足,就是阻塞节点。

2.判断是否发生死锁

判断下图是否存在死锁:

1.先看资源,r1分配了一个资源给p1,分配了一个资源给p2,还剩1个资源;r2分配了1个资源给p2,还剩1个资源。

2.再看p1进程,p1向r2申请了一个资源,r2刚好剩余一个资源,p1是非阻塞节点。

3.再看p2进程,p2向r1申请1个资源,r1刚好剩余一个资源,p2是非阻塞节点。

所以该图不存在死锁。

再看下面这个例子:

1.对于r1,分配了2个资源,剩余1个资源。对于r2,分配了1个资源,剩余2个资源。

2.先看p1,p1向r1申请了1个资源,r1刚好剩余1个资源,向r2申请1个资源,而r2剩余2个资源,绰绰有余。所以p1是非阻塞节点。p1进程完成后,释放资源。

3.此时r1剩余2个资源,r2剩余2个资源,p2可以申请到r1的1个资源,p2非阻塞。

当所有的点都处于“孤立状态”,那么这个进程不存在死锁。

若资源分配图如下图所示,也就是对于p2而言,只有分配边,没有请求边:

那么可以直接“孤立”这一进程:

总结:

1.先将分配给进程,再看进程的请求(顺序一定不能乱)。

2.对于较复杂的资源分配图,当一个进程是非阻塞节点时,可以想将它“孤立”起来。

3.进程请求资源才可能发生死锁,所以只有分配边没有请求边的进程节点可以直接“孤立”起来。

利用上面的总结,做一下题吧:

1.下面的进程资源图是()

1.R1无剩余资源,R2无剩余资源,R3剩余1个资源。

2.由于R1,R2都没有资源分配了,突破口就来自R3,先看连接R3的请求边:

P3向R3请求1个资源,R3刚好剩余1个资源,P3是非阻塞节点。P3“孤立”起来。

3.重新计算一下剩余资源,R1剩余1个资源,R2剩余1个资源,首先看P1,P1向R2申请了1个资源,可以被满足。“孤立”p1。

4.剩下的资源对P2而言绰绰有余了,所以P2也不会阻塞,所以这个资源分配图不存在死锁。

2.系统中有3个不同的临界资源R1,R2,R3,被4个进程p1,p2,p3,p4共享。各进程对资源的需求为:p1申请R1和R2;p2申请R2和R3,p3申请R1和R3,p4申请R2。若系统出现死锁,则处于死锁状态的进程数至少是()

A. 1         B. 2         C. 3         D. 4

答案:C

解答:

1.根据题目,画出的资源分配图如下:

2.P4不影响系统最终状态,只要给它分配资源,完成后就会释放资源。所以,不管给不给P4分配资源,最终三类资源都是在P1,P2,P3之间进行分配。简化资源分配图:

第一种情况:形成循环

由于题目中没有给出各类资源的具体个数,P2申请1个R2资源和1个R3资源,这里我们假设R3给到了P2一个资源,同理,R2给P1一个资源,R1给了P3一个资源,这样就形成了循环,发生死锁。三个进程都无法进行,因为只要有一个进程申请的资源得到满足,完事后就会释放相邻的资源。循环状态就被破坏了,没有循环,一定不会发生死锁。

补充:死锁的必要条件

1.互斥        2.不可剥夺        3.请求和保存        4.循环

第二种情况:没有形成循环

若没有形成循环,可以完全化简成孤立状态的,即不会发生死锁。

所以若资源分配图死锁,那么至少P1,P2,P3进程处于死锁。若没有事先给P4分配进程,那么处于死锁状态的进程为P1,P2,P3,P4。

3.假定某计算机系统有R1设备3台,R2设备4台,它们被P1、P2、P3和P4这4个进程互斥共享,且已知这4个进程均以下面所示的顺序使用现有设备:

一>申请R1一>申请R2一>申请R1一>释放R1一>释放R2一>释放R1

请问系统运行过程中是否可能产生死锁?如果有可能的话,请举出一种情况,并画出表示该死锁状态的资源分配图。

首先p1,p2,p3,p4都申请r1资源,但是r1只有3个资源:

所以这里假设只有p1,p2,p3被分配到了资源:

由于p4没有被分配到r1资源,所以接下来的步骤也不能完成。接下来p1,p2,p3继续申请r2资源,由于r2有4个资源,所以p1,p2,p3也能被分配到r2资源:

接下来p1,p2,p3会继续申请r1资源,由于r1已经没有资源可以分配了,进而发生死锁。

4.系统中有5个资源(R1~R5),现有进程p1依次申请R1, R5,R3;p2依次申请 R3,R4,R2;p3依次申请 R2,R5。
当 3个进程并发执行时有可能发生死锁吗?为什么?

依照题目画出的资源分配图,如下所示:

由于是并发执行,R1先给p1资源,R3给p2资源,R2给p3资源:

接下来,若R5再给p1分配资源,就会导致循环,必定发生死锁。

若是在这之前,R5先分配资源给p3,p3进程完成后,释放资源,就不会发生死锁:

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

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

相关文章

C++ RPC ORM 高速解析

支持所有常用编程语 https://capnproto.org/GitHub - capnproto/capnproto: Capn Proto serialization/RPC system - core tools and C library https://capnproto.org/capnproto-c-win32-1.0.2.zip 常用命令: capnp help capnp compile -oc myschema.capn…

java文件上传时给pdf、word、excel、ppt、图片添加水印

前言 在开发的过程中,因为文件的特殊性,需要给pdf、word、excel、ppt、图片添加水印。添加水印可以在文件上传时添加,也可以在文件下载时添加。因为业务的某些原因,文件需要在浏览器预览,如果用户将文件另存为则无法添…

算法与数据结构汇总

基本 数组 字符串 排序 矩阵 模拟 枚举 字符串匹配 桶排序 计数排序 基数排序 回文:中心扩展 马拉车 树上启发式合并 括号 数学表达式 字符串:前后缀分解。 贡献法 分组: 【状态机dp 状态压缩 分组】1994. 好子集的数目 【动态规划】【前缀…

Excel中sum的跨表求和

#实际工作中,一个xlsx文件中会包含多个Excel表格,一般会有“总-分”的关系,如何把分表里的数字汇总到总表里呢? 一般有上图所示的两种表达方式。 可以使用通配符 *:代表任意个数、任意字符; ?&…

51单片机的最小系统详解

51单片机的最小系统详解 1. 引言 在嵌入式系统中,51单片机被广泛应用于各种小型控制器和嵌入式开发板中。相信很多人都接触过51单片机,但是对于51单片机的最小系统却了解得不够深入。本文将从振荡电路、电源模块、复位电路、LED指示灯和调试接口五个方面详细介绍51单片机的…

quartz定时任务

Quartz 数据结构 quartz采用完全二叉树:除了最后一层每一层节点都是满的,而且最后一层靠左排列。 二叉树节点个数规则:每层从左开始,第一层只有一个,就是2的0次幂,第二层两个就是2的1次幂,第三…

DOS学习-目录与文件应用操作经典案例-attrib

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 DOS系统中的attrib命令是一个用于显示或更改文件&#…

设计模式——职责链(责任链)模式

目录 职责链模式 小俱求实习 结构图 实例 职责链模式优点 职责链模式缺点 使用场景 1.springmvc流程 ​2.mybatis的执行流程 3.spring的过滤器和拦截器 职责链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成…

github设置项目分类

https://www.php.cn/faq/541957.html https://docs.github.com/zh/repositories/working-with-files/managing-files/creating-new-files

什么是回表,如何解决回表问题

下面表中:主键id是聚簇索引,name是辅助索引。 执行这样一条SQL: select name from A where name"s;name字段是有索引,所以MYSQL在通过name进行査询的时候,是需要扫描两颗Btree树的。 第一遍:先通过二级索引定位主键值1。第二遍:根据主键…

免费发布web APP的四个途径(Python和R)

免费发布数据分析类🌐web APP的几个途径📱 数据分析类web APP目前用来部署生信工具,统计工具和预测模型等,便利快捷,深受大家喜爱。而一个免费的APP部署途径,对于开发和测试APP都是必要的。根据笔者的经验…

word-形状绘制、smartart、visio

一、人员架构图绘制 小技巧: 1、ctrlshift水平复制 2、点击图形,右键设置为默认形状 3、插入-形状-右键-锁定绘图模式,按esc退出状态 4、插入-形状-新建绘图画布,代替组合问题 画布中存在锚点,便于直线连接 二、s…

网络安全相关面试题(hw)

网络安全面试题 报错注入有哪些函数 updatexml注入 载荷注入 insert注入 updata注入 delete注入 extractvalue()注入 注入防御方法 涵数过滤 直接下载相关防范注入文件,通过incloud包含放在网站配置文件里面 PDO预处理,从PHP 5.1开始&…

electron中BrowserWindow的show事件没有触发踩坑记录

class ElectronApi {static mainWindow;//主窗口createWindow() {try {// Create the browser window.this.mainWindow new BrowserWindow({width: 1200,height: 800,minHeight: 800,minWidth: 1200,webPreferences: {preload: preloadPath,// nodeIntegration: true,// conte…

windows怎么复制文件到vmware 中ubantu虚拟机,vmware中的虚拟机怎么联网,NAT参数和DHCP参数。

目录 windows怎么复制文件到vmware 中ubantu虚拟机 vmware中的虚拟机怎么联网 NAT参数和DHCP参数。

Linux环境Docker安装,使用Docker搭建Mysql服务实战

1、环境:阿里云Linxu服务器 2、安装docker # 1、yum 包更新到最新 yum update # 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 yum install -y yum-utils device-mapper-persistent-data…

OpenSSL之API编程 - C/C++实现AES、DES、3DES、SM4对称加密算法

文章介绍 本文章介绍了OpenSSL计算对称加解密算法(AES、DES、3DES、SM4等)的相关接口,并使用C语言实现了AES和SM4加解密。 对称加解密算法 对称加密与非对称加密算法 OpenSSL介绍 openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有&#xff…

深度学习之基于YOLOV5的口罩检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着全球公共卫生事件的频发,口罩成为了人们日常生活中不可或缺的一部分。在公共场所&am…

10、SpringBoot 源码分析 - 自动配置深度分析三

SpringBoot 源码分析 - 自动配置深度分析三 refresh和自动配置大致流程AutoConfigurationImportSelector的getAutoConfigurationEntry获取自动配置实体(重点)AutoConfigurationImportSelector的getCandidateConfigurations获取EnableAutoConfiguration类型的名字集合AutoConfig…

Android中JVM内存回收机制

文章目录 分代收集算法:新生代(Young Generation)老年代(Old Generation) 垃圾回收器:JVM常见三大回收算法:Mark-Sweep(标记清除)优点:缺点: 复制算法优点:缺点: Mark-Co…