操作系统考试复习——第三章 预防死锁 避免死锁

这篇具有很好参考价值的文章主要介绍了操作系统考试复习——第三章 预防死锁 避免死锁。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

预防死锁:就是破坏死锁产生的四个条件之一就行。

0.破坏互斥条件:由于互斥条件是非共享设备所必须的所以,不仅不能改变还需要保证。因此我们主要考虑剩下的三个条件。

1.破坏"请求和保持"条件

请求和保持也就是系统已经请求了一个资源它现在占有这个资源但是它在没有释放的前提下还申请新的资源。

解决办法:

1)在所有进程开始之前就申请所有的资源,这样在整个运行期间就不会再申请了。这样的解决方式简单,但是由于需要一次性地分配大量资源会造成大量资源的浪费以及会产生部分进程无法得到相应的资源导致的部分进程饥饿现象。

2)允许一个进程只获得初期所需要的资源就可以开始运行,在运行过程中再逐步释放已经分配给自己的资源,且已经用毕的资源。这个就会比第一个解决方法更合理。

2.破坏"不可抢占"条件

当某个进程请求新的资源得不到满足时,它必须立即释放保持的所有资源,待以后需要时再重新申请。也就是说,进程已占有的资源会被短暂地释放,即使某些资源尚未使用完,也需要主动释放,从而破坏了不可抢占条件

该解决方法的缺点:

1.实现起来比较复杂。
2.释放已获得的资源可能造成前一阶段工作的失效。因此这种方法一般只适用于易保存和恢复状态的资源,如CPU。
3.反复地申请和释放资源会增加系统开销,降低系统吞吐量。
4.只要暂时得不到某个资源,之前获得的那些资源就都需要放弃,以后再重新申请。如果一直发生这样的情况,就会导致进程饥饿。

3.破坏循环等待条件
可采用顺序资源分配法。首先给系统中的资源编号,规定每个进程必须按编号递增的顺序请求资源, 同类资源(即编号相同的资源)一次申请完。

一个进程只有已占有小编号的资源时,才有资格申请更大编号的资源。按此规则,已持有大编号资源的进程不可能逆向地回来申请小编号的资源,从而就不会产生循环等待的现象。

该策略的缺点:

  1. 不方便增加新的设备,因为可能需要重新分配所有的编号;
  2. 进程实际使用资源的顺序可能和编号递增顺序不一致,会导致资源浪费;
  3. 必须按规定次序申请资源,用户编程麻烦。

避免死锁:

避免死锁也是属于事先预防的策略,但并不是事先采取某种限制措施,破坏产生死锁的必要条件,而是在资源动态分配的过程中,防止系统进入不安全状态,以避免发生死锁。

1.安全序列:所谓安全序列,就是指如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找出一个安全序列,系统就是安全状态。当然,安全序列可能有多个。

如果分配了资源之后,系统中找不出任何一个安全序列,系统就进入了不安全状态。这就意味着之后可能所有进程都无法顺利的执行下去。当然,如果有进程提前归还了一些资源,那系统也有可能重新回到安全状态,不过我们在分配资源之前总是要考虑到最坏的情况。

如果系统处于安全状态,就一定不会发生死锁,如果系统进入不安全,就可能发生死锁(处于不安全状态未必就是发生了死锁,但发生死锁时一定是在不安全状态)
因此可以在资源分配之前预先判断这次分配是否会导致系统进入不安全状态,以此决定是否答应资源分配请求。这也是“银行家算法”的核心思想。
利用银行家算法来避免死锁详见:操作系统——银行家算法避免死锁问题_利用银行家算法避免死锁_用编程写诗的博客-CSDN博客

银行家算法的一个例题:

假定系统中有5个进程{P0,P1,P2,P3,P4}和三类资源{A,B,C},各种资源的数量分别为10,5,7,在T0时刻的资源分配情况如图所示:

Max Allocaiton Need Available
A  B  C A  B   C A   B   C A  B  C
P0 7  5  3 0  1  0 7  4  3 3  3  2(2,3,0)
P1 3  2  2 2  0  0(3,0,2) 1  2  2(0,2,0)
P2 9  0  2 3  0  2 6   0  0
P3 2  2  2 2  1  1 0  1  1
P4 4  3  3 0  0  2 4  3  1

在T0时刻的安全性:利用安全性算法对T0时刻的资源分配情况进行分析可知,在T0时刻存在一个安全序列{P1,P3,P4,P2,P0},故系统是安全的。

Work Need Allocation Work+Allocation Finish
A  B  C A  B   C A   B   C A  B  C
P1 3  3  2 1  2  2 2  0  0 5  3  2 true
P3 5  3  2 0  1  1 2  1  1 7  4  3 true
P4 7  4  3 4  3  1 0   0  2 7  4  5 true
P2 7  4  5 6  0  0 3  0  2 10  4  7 true
P0 10  4  7 7  4  3 0  1  0 10  5  7 true

下面用三种情况来展示银行家算法的三种情况,这里三种情况是一个连续执行的情景。所以下面情况中的数据是承接上面情况的。这里可能有疑惑,提示一下。

第一种情况:P1请求资源:P1发出请求向量Request(1,0,2),系统按银行家算法进行检查

Request(1,0,2)<=Need(1,2,2)   Request(1,0,2)<=Available(3,3,2)

系统给P1分配资源并对Available,Allocation和Need第一个表格中括号内容即为分配后的结果

再利用安全性算法进行验证也可以得到一个安全序列{P1,P3,P4,P0,P2}所以就分配

Work Need Allocation Work+Allocation Finish
A  B  C A  B   C A   B   C A  B  C
P1 2  3  0 0  2  0 3  0  2 5  3  2 true
P3 5  3  2 0  1  1 2  1  1 7  4  3 true
P4 7  4  3 4  3  1 0   0  2 7  4  5 true
P0 7  4  5 7  4  3 0  1  0 7  5  5 true
P2 7  5  5 6  0  0 3  0  2 10  5  7 true

第二种情况:P4请求资源:P4发出请求向量Request(3,3,0),系统按银行家算法进行检查

Request(3,3,0)<=Need(4,3,1)

Request(3,3,0)>Available(2,3,0)让P4等待

第三种情况:P0请求资源:P0发出请求向量Request(0,2,0),系统按银行家算法进行检查:

Request(0,2,0)<=Need(7,4,3)

Request(0,2,0)<=Available(2,3,0)

系统先假定给P0分配资源然后进行修改

Max Allocaiton Need Available
A  B  C A  B   C A   B   C A  B  C
P0 7  5  3 0  3  0 7  2  3 2   1  0
P1 3  2  2 3  0  2 0  2  0
P2 9  0  2 3  0  2 6   0  0
P3 2  2  2 2  1  1 0  1  1
P4 4  3  3 0  0  2 4  3  1

进行安全性检查发现可用资源已经无法满足任何进程的需要了所以系统会处于不安全状态这样就不会分配资源文章来源地址https://www.toymoban.com/news/detail-435313.html

到了这里,关于操作系统考试复习——第三章 预防死锁 避免死锁的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云计算与虚拟化】第三章 实验二 在ESXi主机中安装操作系统

    实验二  在ESXi主机中安装操作系统 为ESXi主机添加一块数据存储磁盘,大小为80G,磁盘名称为:ESXi-loc-80G (截图)   2.登录vSphere Client,加载新添加的数据存储磁盘,加载大小为60G,并将其格式化为VMFS5,标识为ESXi-loc-80G, (截图) 3.在ESXi主机中新建Windows7虚拟机,虚拟机名

    2024年02月03日
    浏览(47)
  • 《大数据技术原理与应用(第3版)》期末复习——第三章分布式文件系统HDFS习题

    分布式文件系统的结构 1、 名称节点 (“主节点”): 负责文件和目录的创建、删除和重命名等,同时管理着数据节点和文件块之间的映射关系。 2、 数据节点 (“从节点”): 负责数据的存储和读取。在存储时,由名称节点分配存储位置,然后由客户端把数据直接写入相应

    2024年02月12日
    浏览(50)
  • 数据库系统概述——第三章 关系数据库标准语言SQL(知识点复习+练习题)

    🌟 博主: 命运之光 🦄 专栏: 离散数学考前复习(知识点+题) 🍓 专栏: 概率论期末速成(一套卷) 🐳 专栏: 数字电路考前复习 🦚 专栏: 数据库系统概述 ☀️ 博主的其他文章: 点击进入博主的主页​​​​​ 前言: 身为大学生考前复习一定十分痛苦,你有没有过

    2024年02月10日
    浏览(69)
  • 软件工程复习自用---第三章

    需求分析是软件定义时期的最后一个阶段,它的基本任务是准确地回答“系统必须做什么”这个问题 确定对系统的综合要求 分析系统的数据要求 任何一个软件系统本质上都是信息处理系统 数据结构表示数据元素之间的逻辑关系。利用数据字典可以全面准确地定义数据,但是

    2024年01月17日
    浏览(51)
  • 计算机网络重点概念整理-第三章 数据链路层【期末复习|考研复习】

    计算机网络复习系列文章传送门: 第一章 计算机网络概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层 第七章 网络安全 计算机网络整理-简称缩写 给大家整理了一下计算机网络中的重点概念,以供大家期末复习和考研复习的时候使用。 参

    2024年02月08日
    浏览(48)
  • 【概率论与数理统计】第三章知识点复习与习题

    我们研究一个多维的东西,往往先从较低的维度比如说二维作为主要的研究对象,一个是因为维度低会比较简单,易于理解;另一个则是考试中低维的问题往往更加常见 定义上其实很简单,其实就是之前的一维随机变量变两个,然后用向量来表示,比如 (X,Y) 当然和一维的情

    2024年02月05日
    浏览(39)
  • 嵌入式系统设计师考试笔记之操作系统基础复习笔记二

    目录 3、任务管理 (1)嵌入式操作系统的任务管理可以分为 (2)进程 (3)线程 (4)任务 (5)任务的创建与中止 (6)任务的状态任务有三中基本状态: (7)任务控制块 TCB (8)任务的切换 (9)任务的调度 (10)实时系统调度 (11)任务互斥 (12)信号量 (13)任务同

    2024年02月08日
    浏览(55)
  • 操作系统考试复习——第四章 存储器管理 4.1 4.2

    存储器的层次结构: 存储器的多层结构: 存储器至少分为三级:CPU寄存器,主存和辅存。 但是 一般分为6层 为寄存器,高速缓存,主存储器,磁盘缓存,固定磁盘,可移动存储介质。 这几个部分是 速度依次减小 但是 存储容量是依次增大 的。  只有固定磁盘和可移动存储

    2024年02月03日
    浏览(45)
  • 【系统架构】第三章-信息系统基础知识

    软考-系统架构设计师知识点提炼-系统架构设计师教程(第2版) 信息系统的5个基本功能:输入、存储、处理、输出和控制 信息系统的发展: 诺兰模型:初始阶段、传播阶段、控制阶段、集成阶段、数据管理阶段、成熟阶段 信息系统的分类: 传统的信息系统分为:业务(数

    2024年02月11日
    浏览(58)
  • 熟悉常用的HDFS操作(大数据技术原理与应用-第三章实验)

    首先启动Hadoop,命令如下: 在终端输入如下命令,查看 hdfs dfs 总共支持哪些操作: 上述命令执行后,会显示如下的结果: 如果显示 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable ,说明环境变量 JAVA_LIBRARY_PATH 并未定义,首

    2024年02月01日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包