操作系统之《死锁与银行家算法》【知识点+详细解题过程】

知识点:

1、什么是死锁?(别名"三角恋",我喜欢你你喜欢他他喜欢我,明明都单身但是就是‘占有’不了)

一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程称为死锁进程。

2、产生死锁的原因

系统资源不足
进程申请顺序不当
进程推进顺序非法
PV操作使用不当

3、死锁产生的必要条件

产生死锁的必要条件(同时满足)
互斥临界资源为互斥使用
不可剥夺(非抢占)一旦占有就直到使用完毕,由进程释放
占有和等待进程在请求资源得不到满足而等待时,不释放已占有资源
环路(循环等待)各进程对资源的占有和请求形成环路

 4、死锁的处理方法

(1)预防死锁:通过某些限制条件的设置,去破坏产生死锁的四个必要条件;

(2)避免死锁:在资源的动态分配过程中,用某种方法去防止系统进入不安全状态;

(3)检测死锁:及时检测死锁的发生,并确定与之相关的进程、资源,从而采取措施清除死锁;

(4)解除死锁:撤消或挂起某些进程以回收一些资源,用于解脱另一些处于死锁的进程。

5、银行家算法:

(1)基本思想:

在进程提出资源申请时,预先判断这次分配是否会导致系统进入不安全状态,如果会进入不安全状态,就暂时不答应这次请求,让该进程先阻塞等待。

(2)银行家算法数据结构:

剩余资源数组及三个基本矩阵
剩余资源数组Available=[R1,R2,…,Rn]
最大资源需求矩阵Max 资源(已)
分配矩阵Allocation
剩余资源需求矩阵Need

 (3)算法思路:

  • 第一步判断,请求是否小于现有可用资源
  • 第二步判断,请求是否小于该进程所需资源
  • 第三步,在满足前两步的基础上,执行安全性算法,拟分配,找出安全序列

  • 第四步,回答,若安全便列出安全序列,若不安全则指出哪一步不满足

 

题练:

1、在银行家算法中,若出现下述资源分配情况:

 试问:(1)该状态是否安全?
  (2)如果进程P2提出请求Request(0,2,2,2)后,系统能否将资源分配给它?

(1)安全。
(2)不能分配,因为在试分配给P2后,Available为(1,4,0,0),找不到满足状态为False且Need<Available的进程。

2、系统有四类资源A、B、C、D,数量分别是4、11、14、12。有5个进程P0,P1、P2、P3、P4。T0时刻系统状态如下: 

问 (1)T0时刻系统可用资源数Available(A、B、C、D)各是多少?
(2)T0时刻就是否为安全状态,给出安全序列。 
(3)T0时刻,P2发出资源请求: Request(0,4,3,4),能否分配,系统如何处理?

(1)T0时刻系统可用资源数Available为(2,6,2,3).
(2)T0时刻为安全状态,安全序列为(P4,P0,P2,P1,P3).

(3)不能分配,因为P2的请求资源中C资源超过了所需的C资源.
Request(0,4,3,4),而T0时刻,P2进程的所需资源为Need(0,6,2,5)

3、某系统有A、B、C、D四类资源可供五个进程P1.P2.P3.P4.P5共享。系统对这四类资源的拥有量为:A类14个、B类13个、C类4个、D类12个。在T0时刻,进程对资源的需求和分配情况如下表所示。

问:(1)T0时刻系统可用资源数Available(A、B、C、D)各是多少?

(2)判断T0时刻系统是否处于安全状态(要有算法过程)。若是,给出进程的安全序列,要求给出产生进程安全序列的详细过程。
(3)P1提出资源请求Request1(0、3,0,4)是否可进行分配,为什么?

(1)T0时刻,可用资源Available(A,B,C,D)各为(3,1,2,6)
(2)T0时刻处于安全状态,安全序列为P4,P3,P0,P1,P2。
(3)不能进行分配,因为P1的请求资源中的B资源超出了可用的资源。
RequestP1(0,3,0,4)> Available(3,1,2,6)

4、假定系统有进程集合(P0,Pl,P2,P3,P4),资源集合为(A,B,C,D),资源总数量分别为(14,3,14,12) 假定某时刻T0系统的状态如表所示。

问:(1)T0时刻系统可用资源数Available(A、B、C、D)各是多少?
(2)T0时刻就是否为安全状态,给出安全序列。 
(3)T0时刻,P3: Request(1,0,1,0),系统如何处理?能否分配?

(1)T0时刻系统可用资源数Avaiable(A,B,C,D)为(2,1,2,6)
(2)T0时刻为安全状态,安全序列为(P3,P1,P2,P0,P4)
(3)T0时刻,可以分配资源给进程P3,安全序列为P3,P1,P2,P0,P4。

5、假定系统有进程集合(Po,Pl,P2,P3,P4),资源集合为(A,B,C),资源数量分别为(10,8,7)。假定某时刻系统的状态如表所示。

试给出进程的剩余请求矩阵,并判断当前系统是否处于安全状态。若是,给出进程的安全序列。要求给出产生进程安全序列的详细过程。

(1)剩余矩阵(Need):

        A  B   C   
P0   7   5   3
P1   1   2   2
P2   6   1   0
P3   0   2   1
P4   4   2   2

(2)T0时刻处于安全状态,安全序列为P3,P1,P0,P2,P4

(3)详细过程如图所示。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue-cli的搭建过程

一、创建一个vue2的项目 二、创建成功后删除这三个文件 三、新建一个App.vue文件 四、在文件中添加这一段话 五、打开命令框输入指令下载router路由 六、新建一个router目录&#xff0c;新建index.js文件 七、导入你的路由&#xff0c;进行配置 打开命令行工具&#xff0c;进入…

【Python Tips】创建自己的函数包并安装进Anaconda,像引入标准包一样直接import导入

目录 一、引言 二、方法步骤 步骤一&#xff1a;创建包目录结构 步骤二&#xff1a;配置__init__.py文件 步骤三&#xff1a;文件夹外配置setup.py文件 步骤四&#xff1a;终端Pip安装 三、结尾 一、引言 在编写项目代码的时候&#xff0c;有些自定义功能的函数是可以复用的。…

Java面向对象特性

Java继承&#xff1a; 继承的概念&#xff1a; 在Java中&#xff0c;继承&#xff08;inheritance&#xff09;是面向对象编程的一个重要概念&#xff0c;它允许一个类&#xff08;子类&#xff09;继承另一个类&#xff08;父类&#xff09;的属性和方法。通过继承&#xff0c…

MySQL高级-SQL优化- order by 优化(尽量使用覆盖索引、注意联合索引创建的规则、增大排序缓冲区大小)

文章目录 0、order by优化原则1、Using filesort2、Using index3、连接数据库4、查看索引5、删除索引6、按照年龄进行排序7、执行计划 order by age8、执行计划 order by age,phone9、创建联合索引 (age,phone)10、再次执行计划 order by age11、再次执行计划 order by age,pho…

SpringMVC处理器映射器HandlerMapping详解

目录 一、前言 二、initHandlerMappings 三、处理器映射器架构 策略接口 请求链 模版类 四、RequestMappingHandlerMapping的初始化 HandlerMethod映射器模版类的初始化 AbstractHandlerMethodMapping.MappingRegistry&#xff1a;内部类注册中心 五、Reques…

从菌群代谢到健康影响——认识肠道丙酸和丁酸

谷禾健康 短链脂肪酸这一词经常出现在谷禾的文章和报告中&#xff0c;那你真的了解短链脂肪酸吗&#xff1f;短链脂肪酸(SCFA)主要是肠道微生物群在结肠内通过发酵碳水化合物(包括膳食和内源性碳水化合物&#xff0c;主要是抗性淀粉和膳食纤维)和一些微生物可利用的蛋白质而产生…

一个人 三个月 干了二十万

相信很多人是被这个标题吸引进来的&#xff0c;但我并不是标题党&#xff0c;我也很讨厌标题党&#xff0c;这篇文章也不在乎流量&#xff0c;更多的是想记录下。 出来创业三个多月了&#xff0c;给大家汇报一下这段时间的业绩吧。一个人&#xff0c;三个多月&#xff0c;干了…

线性图标绘制指南:从基础到精通

图标在生活中随处可见。相比文字来说&#xff0c;图标可以让人在更短的时间内认知并了解信息&#xff0c;并且大大提升信息的视觉美观性&#xff0c;增加设计的艺术感染力。在用户界面中使用图标&#xff0c;是一种用户熟知的设计模式。而线性图标是通过提炼图形轮廓&#xff0…

TIOBE 6月榜单出炉!编程语言地位大洗牌,谁才是王?

C历史上首次超越C&#xff01;&#xff01;&#xff01; TIOBE 公布了 2024 年 6 月编程语言的排行榜&#xff1a;https://www.tiobe.com/tiobe-index/ 排行榜 以下列出的语言代表了第51至第100名。由于它们之间的差异相对较小&#xff0c;编程语言仅以字母顺序列出。 ABC, A…

ubuntu16.04上搭建qt开发环境

安装qt 下载qt在linux下的安装包qt-opensource-linux-x64-5.8.0.run&#xff1b;将安装包拷贝到ubuntu16.04上&#xff1b;执行如下命令进行安装&#xff0c;注意&#xff1a;安装前先断开虚拟机的网络&#xff0c;这样就避免了注册账户的操作 基本上一路按“next”键&#xf…

使用青否数字人直播软件有哪些优势?

使用青否数字人主播主要具有以下优势&#xff1a; 1、降低直播门槛 在垂直程度较高、专业度更强的行业&#xff0c;面对相关品牌们“专业主播难培养”的问题。数字人主播的学习技能和灵活优势尽显。通过数字人直播可以借助知识库配置与AI能力&#xff0c;快速获得技术性知识&am…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 螺旋矩阵填数(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

c语言--指针

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理c语言中指针的相关知识点。 指针概念 指针存储的就是数据的地址。 直观理解: 李华家是北洋路130号1单元101 用变量处理数据: 我们去李华家拿数据。 用指针处理数据: 我们去北洋路130号1单元101拿数据…

石墨舟氮气柜的特点和使用要求介绍

石墨舟是一种在半导体、太阳能光伏等高科技产业中广泛使用的专用工具&#xff0c;主要由高纯度石墨材料制成。它的形状通常像一只船&#xff0c;因此得名“石墨舟”。石墨舟主要用于承载硅片或其他基板材料通过各种高温处理过程&#xff0c;是制造半导体器件和太阳能电池片的关…

二叉树的方法

目录 一、二叉树的定义 ​编辑 二、二叉树的创建 三、二叉树的遍历 1、前序遍历 2、中序遍历 3、后序遍历 4、层序遍历 四、二叉树遍历方法的使用 五、二叉树的操作 1、节点的个数 2、叶子节点的个数 3、第k层节点的个数 4、二叉树的高度 5、检查值为value的元素…

「2024抢先看」6款免费的ai变声器,助你开麦就变声

你是否也曾想模仿电视剧中的明星说话&#xff0c;或者想像泰勒一样有着独特的嗓音呢&#xff1f;通过免费版ai变声器&#xff0c;你可以轻松实现实时变声&#xff0c;将你的声音转换为专业且动听的声音&#xff0c;让身边的朋友对你刮目相看。在本文中&#xff0c;小编将分享20…

服务器日志事件ID4107:从自动更新 cab 中提取第三方的根目录列表失败,错误为: 已处理证书链,但是在不受信任提供程序信任的根证书中终止。

在查看Windows系统日志时&#xff0c;你是否有遇到过事件ID4107错误&#xff0c;来源CAPI2&#xff0c;详细信息在 http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab 从自动更新 cab 中提取第三方的根目录列表失败&#xff0c;…

简单的本地局域网的前后端接口联调

由于项目被赶进度了&#xff0c;急于前后端联调接口&#xff0c;但是我又没钱买服务器&#xff08;主要我也不会部署&#xff09;&#xff0c;所以我这里就紧急找一个后端的大神朋友请教了一下&#xff1a;苏泽SuZe-CSDN博客 提示&#xff1a;这里不讲后端怎么写接口、前端怎么…

C#——里氏转换详情

里氏转换 里氏转换就是派生类的对象赋值给父类对象&#xff0c;反之则不行 实例 : 先创键一个类然后继承 调用

双路视频同屏显示(拼接)-基于野火Zynq7020开发板

前情提要 米联客FDMA驱动OV5640摄像头—基于野火Zynq7020开发板 本文在此基础上&#xff0c;实现了双路视频拼接。将ov5640输出的1024600的图像数据缩放为512600&#xff0c;分两路写入ddr3&#xff0c;并且显示在1024*600的RGB屏幕中。 纯FPGA也可以按此方法实现。 总体BLOC…