当前位置: 首页 > news >正文

死锁相关习题 10道 附详解

2022

设系统中有三种类型的资源(A,B,C)和五个进程(P1,P2,P3,P4,P5),A资源的数量是17,B资源的数量是6,C资源的数量是19。在T0时刻系统的状态:

最大资源需求量已分配资源量
A,B,CA,B,C
P14,0,114,0,5
P25,3,64,0,2
P34,2,52,1,4
P45,5,92,1,2
P54,2,43,1,3
  1. 当前系统是否处于安全状态,并解释原因
  2. 简述银行家算法的缺点是什么

A:17,B:6,C:19
计算已分配的资源总量
A:=4+4+2+2+3=15
B:=1+1+1=3
C:=5+2+4+2+3=16
计算可用资源(Available):
Available=总资源-已分配资源
A:17-15=2
B:6-3=3
C:19-16=3
计算尚需资源:Need
P1:0,0,6
P2:1,3,4
P3:2,1,1
P4:3,4,7
P5:1,1,1
安全性检测:检查是否能找到一个安全序列
初始可用资源,Work:2,3,3
P1:0,0,6<=2,3,3,NO
P2:1,3,4<=2,3,3,NO
P3:2,1,1<=2,3,3,YES
执行P3,释放资源:
Work=2,3,3+2,1,4=4,4,7
检查下一个进程:
P1:0,0,6<=4,4,7,YES
执行P1,释放资源:
Work=4,4,7+4,0,5=8,4,12
检查下一个进程:
P2:1,3,4<=8,4,12,YES
执行P2,释放资源:
Work=8,4,12+4,0,2=12,4,14
检查下一个进程:
P4:3,4,7<=12,4,14,YES
执行P4,释放资源:
Work=12,4,14+2,1,2=14,5,16
检查下一个进程:
P5:1,1,1<=14,5,16
执行P5,释放资源:
Work=14,5,16+3,1,3=17,6,19
安全序列:P3->P1->P2->P4->P5
2. 银行家算法在避免死锁问题上十分有效,但是需要在进程运行前就知道其所需资源的最大值,且进程数也需要提前确定。但是实际上,内存中进程数往往是动态变化的,而且它们所需要资源的数目也是动态变化的,因此有局限性

2020
  1. 某系统有3个并发进程都需要4个同类资源,不会发生死锁的资源数目最少是多少,请给出理由
  2. 某系统有11个同类资源,X个进程共享该资源,每个进程最多请求使用3个该资源,则系统不会产生死锁的最大X值是多少?请给出理由

当资源数为9时,存在3个进程都各自占用3个资源,这时每个进程都在等待别的进程释放资源,造成死锁。
当资源数目为10时,必然存在一个进程可以获得4个资源,然后顺利执行完毕,释放资源供其他进程使用,系统不会产生死锁
2.
系统不会产生死锁的最大X值是5
假设每个进程已经分配到两个资源,其中任一进程再获得一个资源便可顺利执行完毕,然后再将资源归还给系统供其他进程使用。因此,系统中只要满足2X+1=11这个条件便不会造成死锁,解得X=5,所以系统中最多可以有5个并发进程共享该资源不会产生死锁

2013

某计算机系统有8台磁带机,它们由4个进程竞争使用,每个进程需要3台磁带机。问该系统有没有死锁危险,并说明原因


有死锁风险,若此时这个进程各占用2台磁带机,此时4个进程都不满足,继续向系统发出请求,但此时已无可分配资源
满足死锁的请求和保持条件,不可抢占条件,循环等待条件。若推进顺序不当有产生死锁的危险

2012

简述死锁避免的思想?试用银行家算法判断下述两个状态是否安全。如果一个状态是安全的,说明所有进程是如何能够运行完毕的;如果一个状态是不安全的,说明为什么可能产生死锁。

状态A

进程名已分配资源数最大需求
P126
P247
P326
P412
当前可用进程数:1

状态B

进程名已分配资源数最大需求
P148
P239
P358
当前可用进程数:3

死锁避免:属于事先预防死锁发生策略,在资源动态分配过程中,防止系统进入不安全状态,以避免发生死锁。
状态A不安全:把当前可用的1个资源给P4进程,P4运行完,释放2个资源,不满足P1,P2,P3的最大需求量
状态B安全:把当前可用的3个资源给P3进程,P3运行完后释放8个资源,此时P2需要6个,P1需要四个,任选个进程满足,若先满足P1,P1运行完后释放4个资源,再分配给P2
安全序列:P3->P2->P1或P3->P1->P2

出现死锁的原因:

  1. 当前可用资源数不满足任意进程的需求
  2. 由于进程推进顺序不当,致使各进程抢夺资源造成循环等局面
2014
  1. 什么是死锁?处理死锁的基本方法有哪些?

死锁:指多个进程因竞争资源而造成的一种僵局(相互等待),若无外力作用,这些进程都将无法向外推进
基本方法:

  1. 预防死锁

  2. 避免死锁

  3. 死锁检测与解除

  4. 给出分配/回收一块的基本流程,假设系统中有同类资源9个,有3个进程竞争使用该类资源,每个进程最多需要4个,请问该系统是否会发生死锁,为什么?


会,若每个进程请求并拥有3个资源,当他们都要请求第四个资源时,发生死锁

填空题
  1. 解决死锁的方法可以有多种,其中死锁的预防是通过(破坏死锁的必要条件之一)来实现的,死锁的避免是通过(防止系统进入不安全状态)来实现的。
  2. 死锁的避免,就是通过保持系统处于(安全状态)来避免死锁,所以每当有进程提出资源分配请求时,系统应分析(各进程已占进程数)、(尚需资源数)和(系统中可以分配的剩余资源数),然后决定是否为当前的申请者分配资源。
  3. 死锁检测要解决两个问题,一是(判断系统)是否出现了死锁,二是当有死锁发生时怎样去(解除死锁)
  4. 为了避免死锁,可以采用(银行家)算法进行资源安全分配。
  5. 系统出现死锁,不仅与(设备)分配策略有关,而且与(进程)执行的相对速度有关。
  6. 当检测到系统发生死锁时,可采用(解除所有死锁进程)、(逐个撤销死锁进程)和(抢占死锁进程的资源供其他进程使用)来解除死锁。
死锁定义,死锁和不安全状态的关系

在多道程序系统中,由于多个进程的并发执行,改善了系统资源的利用率并提高了系统理能力。然而,多个进程的并发执行也带来了新的问题一死锁。
所谓死锁,是指多个进程因竞争某一资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进
注意:
并非所有的不安全状态都是死锁状态,但当系统进入不安全状态后,便可能进入死锁状态;
反之,只要系统处于安全状态,系统便可避免进入死锁状态。

1

设系统中有下述解决死锁的方法:

  1. 银行家算法
  2. 检测死锁,终止处于死锁状态的进程,释放该进程占有的资源。
  3. 资源预分配。
    简述哪种办法允许最大的并发性,即哪种办法允许更多的进程无等待地向前推进。请按“并发性”从大到小对上述三种办法排序。

死锁在系统中不可能完全消灭,但我们要尽可能地减少死锁的发生。对死锁的处理有4种方法:忽略、检测与恢复、避免与预防,每种方法对死锁的处理从宽到严,同时系统并发性由大到小。这里银行家算法属于避免死锁,资源预分配属于预防死锁
死锁检测方法可以获得最大的并发性
并发性排序:死锁检测方法、银行家算法、资源预分配法

3

设有进程P1和进程P2并发执行,都需要使用资源R1和R2,使用资源的情况见下表。

进程P1进程P2
申请资源R1申请资源R2
申请资源R2申请资源R1
释放资源R1释放资源R2

试判断是否会发生死锁,并解释和说明产生死锁的原因与必要条件。


这段程序在不同的运行推进速度下,可能会产生死锁,
进程P1先申请R1,得到资源R1,然后进程P2申请资源R2,得到资源R2,进程P1又申请R2,因资源R2已分配,使得进程P1阻塞
进程P1和进程P2都因申请不到资源而形成死锁。若改变进程的运行顺序,则这两个进程就不会出现死锁现象
产生死锁的原因可归结为两点

  1. 竞争资源
  2. 进程推进顺序非法
    产生死锁的必要条件:
  3. 互斥条件
  4. 请求并保持条件
  5. 不剥夺条件
  6. 环路等待条件
4

系统有同类资源m个,供n个进程共享,若每个进程对资源的最大需求量为k,试问:
当m,n,k的值分别为下列情况时(见下表),是否会发生死锁?

序号mnk是否会死锁说明
1633
2933
31363

不发生死锁要求,必须保证至少有一个进程得到所需的全部资源并执行完毕,m>=n(k-1)+1时,一定不会发生死锁

序号mnk是否会死锁说明
1633可能会6<3(3-1)+1
2933不会9>3(3-1)+1
31363不会13=6(3-1)+1

相关文章:

死锁相关习题 10道 附详解

2022 设系统中有三种类型的资源(A,B,C)和五个进程(P1,P2,P3,P4,P5)&#xff0c;A资源的数量是17&#xff0c;B资源的数量是6&#xff0c;C资源的数量是19。在T0时刻系统的状态&#xff1a; 最大资源需求量已分配资源量A&#xff0c;B&#xff0c;CA&#xff0c;B&#xff0c;…...

VisionPro 机器视觉案例 之 彩色保险丝个数统计

第十四篇 机器视觉案例 之 彩色保险丝颜色识别个数统计 文章目录 第十四篇 机器视觉案例 之 彩色保险丝颜色识别个数统计1.案例要求2.实现思路2.1 方法一 颜色分离工具CogColorSegmenterTool将每一种颜色分离出来&#xff0c;得到对应的单独图像&#xff0c;使用斑点工具CogBlo…...

go-zero(七) RPC服务和ETCD

go-zero 实现 RPC 服务 在实际的开发中&#xff0c;我们是通过RPC来传递数据的&#xff0c;下面我将通过一个简单的示例&#xff0c;说明如何使用go-zero框架和 Protocol Buffers 定义 RPC 服务。 一、生成 RPC项目 在这个教程中&#xff0c;我们根据user.api文件&#xff0…...

Jenkins + gitee 自动触发项目拉取部署(Webhook配置)

目录 前言 Generic Webhook Trigger 插件 下载插件 ​编辑 配置WebHook 生成tocken 总结 前言 前文简单介绍了Jenkins环境搭建&#xff0c;本文主要来介绍一下如何使用 WebHook 触发自动拉取构建项目&#xff1b; Generic Webhook Trigger 插件 实现代码推送后&#xff0c;触…...

043 商品详情

文章目录 详情页数据表结构voSkuItemVo.javaSkuItemSaleAttrVo.javaAttrValueAndSkuIdVo.javaSpuAttrGroupVo.javaGroupAttrParamVo.java pom.xmlSkuSaleAttrValueDao.xmlSkuSaleAttrValueDao.javaAttrGroupDao.xmlAttrGroupServiceImpl.javaSkuInfoServiceImpl.javaSkuSaleAtt…...

【人工智能】Python与Scikit-learn的模型选择与调参:用GridSearchCV和RandomizedSearchCV提升模型性能

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在机器学习建模过程中,模型的表现往往取决于参数的选择与优化。Scikit-learn提供了便捷的工具GridSearchCV和RandomizedSearchCV,帮助我们在参数空间中搜索最佳组合以提升模型表现。本文将从理论和实践两个角度…...

深入探讨 Puppeteer 如何使用 X 和 Y 坐标实现鼠标移动

背景介绍 现代爬虫技术中&#xff0c;模拟人类行为已成为绕过反爬虫系统的关键策略之一。无论是模拟用户点击、滚动&#xff0c;还是鼠标的轨迹移动&#xff0c;都可以为爬虫脚本带来更高的“伪装性”。在众多的自动化工具中&#xff0c;Puppeteer作为一个无头浏览器控制库&am…...

<OS 有关> ubuntu 24 不同版本介绍 安装 Vmware tools

原因 想用 apt-get download 存到本地 / NAS上&#xff0c;减少网络流浪。 看到 VMware 上的确实有 ubuntu&#xff0c;只是版本是16。 ubuntu 版本比较&#xff1a;LTS vs RR LTS: Long-Term Support 长周期支持&#xff0c; 一般每 2 年更新&#xff0c;会更可靠与更稳定…...

C#调用JAVA

参考教程&#xff1a;使用IKVMC转换Jar为dll动态库(含idea打包jar方法)-CSDN博客 已经实践过&#xff0c;好使。...

JavaEE-多线程基础知识

文章目录 前言与回顾创建一个多线程线程的创建以及运行机制简述step1: 继承Thread类step2: 实现Runable接口step3: 基于step1使用匿名内部类step4: 基于step2使用匿名内部类step5: 基于step4使用lambda表达式(推荐) Thread的常见方法关于jconsole监视线程的工具构造方法解析获取…...

Pulid:pure and lightning id customization via contrastive alignment

1.introduction 基于微调的方案,对每个id进行定制需要花费数十分钟。另一项研究则放弃了对每个id进行微调,而是选择在一个庞大的肖像数据集上预训练一个id适配器。这些方法通常利用编码器例如clip来提取id特征,提取的特征随后以特定方式例如嵌入到cross attention集成到基础…...

什么是GraphQL,有什么特点

什么是GraphQL&#xff1f; GraphQL 是一种用于 API&#xff08;应用程序编程接口&#xff09;的查询语言&#xff0c;由 Facebook 在 2012 年开发&#xff0c;并于 2015 年开源。它提供了一种更高效、强大的方式来获取和操作数据&#xff0c;与传统的 RESTful API 相比&#…...

Java项目-基于SpringBoot+vue的租房网站设计与实现

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作

1.实验目的 熟悉了解掌握SQL Server软件的基本操作与使用方法&#xff0c;以及通过理论课学习与实验参考书的帮助&#xff0c;熟练掌握使用T-SQL语句和交互式方法对数据表进行插入数据、修改数据、删除数据等等的操作&#xff1b;作为后续实验的基础&#xff0c;根据实验要求重…...

【大数据学习 | Spark】RDD的概念与Spark任务的执行流程

1. RDD的设计背景 在实际应用中&#xff0c;存在许多迭代式计算&#xff0c;这些应用场景的共同之处是&#xff0c;不同计算阶段之间会重用中间结果&#xff0c;即一个阶段的输出结果会作为下一个阶段的输入。但是&#xff0c;目前的MapReduce框架都是把中间结果写入到HDFS中&…...

ruoyi框架完成分库分表,按月自动建表功能

前提 这个分库分表功能&#xff0c;按月自动建表&#xff0c;做的比较久了&#xff0c;还没上线&#xff0c;是在ruoyi框架内做的&#xff0c;踩了不少坑&#xff0c;但是已经实现了&#xff0c;就分享一下代码吧 参考 先分享一些参考文章 【若依系列】集成ShardingSphere S…...

Antd中的布局组件

文章目录 一、Layout二、Menu三、Grid栅格 布局组件涉及项目框架的搭建&#xff0c;往往被忽略和低关注&#xff0c;毕竟不是经常用到&#xff0c;但是在调整项目结构的时候往往又需要重新设计布局&#xff0c;所以有必要提前归纳分析&#xff1b; 一、Layout Layout导出Sider,…...

一文详解kafka知识点

目录 1、kafka定义 2、消息队列 2.1、产品选择 2.2、应用场景 2.3、消息队列的两种模式 3、kafka架构 4、kafka生产者 4.1、kafka生产者原理 4.2、kafka生产者异步发送 4.3、同步发送 4.4、分区 4.4.1、kafka分区好处 4.4.2、分区策略 4.4.3、自定义分区 4.5、生成吞…...

C语言基础学习:抽象数据类型(ADT)

基础概念 抽象数据类型&#xff08;ADT&#xff09;是一种数据类型&#xff0c;它定义了一组数据以及可以在这组数据上执行的操作&#xff0c;但隐藏了数据的具体存储方式和实现细节。在C语言中&#xff0c;抽象数据类型&#xff08;ADT&#xff09;是一种非常重要的概念&…...

提升性能测试效率与准确性:深入解析JMeter中的各类定时器

在软件性能测试领域&#xff0c;Apache JMeter是一款广泛使用的开源工具&#xff0c;它允许开发者模拟大量用户对应用程序进行并发访问&#xff0c;从而评估系统的性能和稳定性。在进行性能测试时&#xff0c;合理地设置请求之间的延迟时间对于模拟真实用户行为、避免服务器过载…...

施密特正交化与单位化的情形

在考研数学的线性代数部分&#xff0c;施密特正交化和单位化是两种不同的处理向量的方法&#xff0c;它们在特定的情况下被使用。以下是详细说明&#xff1a; 施密特正交化的应用场景 施密特正交化&#xff08;Gram-Schmidt Orthogonalization&#xff09;是一种从线性无关向…...

ROS机器视觉入门:从基础到人脸识别与目标检测

前言 从本文开始&#xff0c;我们将开始学习ROS机器视觉处理&#xff0c;刚开始先学习一部分外围的知识&#xff0c;为后续的人脸识别、目标跟踪和YOLOV5目标检测做准备工作。我采用的笔记本是联想拯救者游戏本&#xff0c;系统采用Ubuntu20.04&#xff0c;ROS采用noetic。 颜…...

2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略(详细解题思路)

在当下&#xff0c; 日益发展的时代&#xff0c;宠物的数量应该均为稳步上升&#xff0c;在美国出现了下降的趋势&#xff0c; 中国 2019-2020 年也下降&#xff0c;这部分变化可能与疫情相关。需要对该部分进行必要的解释说明。 问题 1: 基于附件 1 中的数据及您的团队收集的…...

C#里怎么样访问文件时间

C#里怎么样访问文件时间 文件时间也是一个关键信息, 因为很多数据处理需要时间来判断数据的有效性,比如股票中的股价, 它是的权重,是随着时间递减的。 一般来说,超过5年以上的数据,都是可以删除掉了。 或者说超过三年的数据,就需要压缩保存了,这样可以省掉很多磁盘空…...

Cesium教程01_认识View

Cesium 地图视图组件 目录 一、引言二、功能说明三、代码实现 1. 模板结构2. 脚本逻辑3. 样式设计 四、总结 一、引言 在三维地球可视化中&#xff0c;Cesium 是一个强大的开源 JavaScript 库&#xff0c;它能够展示精美的地球和地图应用。本示例展示了如何使用 Vue 组件化…...

【SQL Server】华中农业大学空间数据库实验报告 实验八 存储过程

1.实验目的 通过实验课程与理论课的学习深入理解掌握的存储过程的原理、创建、修改、删除、基本的使用方法、主要用途&#xff0c;并且可以在练习的基础上&#xff0c;熟练使用存储过程来进行数据库的应用程序的设计&#xff1b;深入学习深刻理解与存储过程相关的T-SQL语句的编…...

ArcMap 处理栅格数据的分辨率功能操作

ArcMap 处理栅格数据的分辨率功能操作 一、统一多分辨率栅格数据 1、查看两个栅格数据的分辨率 1&#xff09;raster1 点击属性 2) raster2 2、统一像元大小 1&#xff09;点击环境 展示和填写 处理范围 栅格分析 点击确定 3、重采样 让raster1和..2保持一致&#xff0c;即…...

redis7.x源码分析:(4) ae事件处理器(一)

ae模块是redis实现的Reactor模型的封装。它的主要代码实现集中在 ae.c 中&#xff0c;另外还提供了平台相关的io多路复用的封装&#xff0c;它们都实现了一套相同的poll接口&#xff0c;就类似于C中提供了一个接口基类&#xff0c;由针对不同平台的派生类去实现。 // 创建平台…...

【React】React Router:深入理解前端路由的工作原理

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 React Router&#xff1a;深入理解前端路由的工作原理路由的演进历程传统多页面…...

51单片机-独立按键与数码管联动

独立键盘和矩阵键盘检测原理及实现 键盘的分类&#xff1a;编码键盘和非编码键盘 键盘上闭合键的识别由专用的硬件编码器实现&#xff0c;并产生键编码号或键值的称为编码键盘&#xff0c;如&#xff1a;计算机键盘。靠软件编程识别的称为非编码键盘&#xff1b;在单片机组成…...