SCAU操作系统知识点之(六)并发:死锁和饥饿

news2024/11/28 4:39:28

1、死锁原因:竞争资源、进程推进顺序不当
2、资源分配图(若死锁,则资源分配图中必有环路,但有环路时不一定死锁)

3、死锁的四个必要条件

①互斥
②占有且等待
③不可抢占
④循环等待

在死锁的四个必要条件中,破坏____A_____条件是不太实际的。
A. 互斥 B. 不可抢占 C. 占有并等待 D. 循环等待

4、三种处理方法:预防,避免,检测和恢复

①死锁预防:通过运用某种策略来消除产生死锁的四个必要条件之一,来保证不让死锁状态出现。
②死锁避免:通过限制进程启动或资源分配,来保证不让死锁状态出现。
③死锁检测:检测允许死锁出现,定期检测死锁的存在并从死锁中恢复出来。检测到死锁时,将系统从死锁状态中恢复的方法可以是:杀死进程和抢占资源.

在下列死锁的解决方法中,属于死锁预防策略的是____BC____。
A. 银行家算法 B. 资源有序分配 C. 剥夺资源 D. 资源分配图化简
解:银行家算法属于死锁避免策略;资源有序分配、剥夺资源属于死锁预防策略;资源分配图化简属于死锁检测(一个图可完全简化,则不会产生死锁。)

5、银行家算法:要求能够判断现在是否安全,某进程请求资源是否能够满足。

数据结构:
Available:当前空闲的资源数。
Claim:进程对某资源的最大需求量。
Allocation:进程已经分配的资源数。
Need:还需要的资源数。
Need=Claim-Allocation
已分配的资源数+当前空闲的资源数不能大于总的资源数。

安全性算法:用于确定计算机系统是否处于安全状态。
简单理解:Work可以理解成空闲的资源数,后面进程使用后的资源要释放回去。所以是Work:=Work+Allocation。
1)设Work和Finish分别是长度为m和n的向量,初始化
  Work:=Available,Finish[i]=false(i=1,2…n)
2)查找 i 使其满足
  a.Finish[i]=false
  b.Needi<=Work
  若没有这样的i存在,转到4)
3)Work:=Work+Allocation
  Finish[i]:=true
  返回到2)
4)如果对所有i,Finish[i]=true,则系统处于安全状态。

资源请求算法:
设Requesti 为进程Pi的请求向量

  1. 如果Requesti <= Needi ,那么转到第2)步。否则,产生
    出错条件,因为进程已超过了其请求。
  2. 如果Requesti <=Available,那么转到第3)步。否则,
    Pi等待,因为没有可用资源。
  3. 假定系统可以分配给进程Pi 所请求的资源,并按如下方式
    修改状态:
    Available:= Available – Requesti ;
    Allocationi := Allocationi + Requesti ;
    Needi := Needi – Requesti ;
  4. 调用安全性算法确定新状态是否安全
    安全—操作完成且进程Pi分配到其所需要的资源
    不安全—进程Pi必须等待,并将数据结构恢复到原状态(即 3)的逆操作

题一:在这里插入图片描述
问题:
(1)验证可用资源向量的正确性。
(2)计算需求矩阵
(3)指出一个安全的进程序列来证明当前状态的安全性。同时指出每个进程结束时可用向量资源向量的变化情况。
(4)假设P5请求资源(3,2,3,3),该请求应该被允许吗?请说明理由。

1)验证Allocation+Availabel是否等于资源总数。
   2+0+4+1+1+1+6=15
   0+1+1+0+1+0+3=6
   2+1+0+0+0+1+5=9
   1+1+2+1+0+1+4=10
因此,可用资源向量正确。
2)需求矩阵如下:

Need(A、B、C、D)
P07 5 3 4
P12 1 2 2
P23 4 4 2
P32 3 3 1
P44 1 2 1
P53 4 3 3

3)判断是否为安全序列的表格有四个部分,Work、Allocation、Need、Work+Allocation、Finish.
Work首先存放的是空闲资源,且放在第一个其资源数比Need所需资源数大的进程中。一个进程结束,得到的Work和Allocation的值的和要放在第二个Work里,依次类推,看最后是否所有进程都能得到需要的资源,若能,则为安全序列。

在这里插入图片描述
系统处于安全状态,存在安全序列<P1,P2,P3,P4,P5,P0>

4) P5请求资源Request(3, 2, 3, 3), 执行银行家算法:
在这里插入图片描述

6、用信号量解决不死锁的哲学家就餐问题

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

jupyter默认工作目录的更改

1、生成配置文件&#xff1a;打开Anaconda Prompt&#xff0c;输入如下命令 jupyter notebook --generate-config询问[y/N]时输入y 2、配置文件修改&#xff1a;根据打印路径打开配置文件jupyter_notebook_config.py&#xff0c;全文搜索找到notebook_dir所在位置。在单引号中…

Vue组件库

Vue组件库 ViteVue3TypescriptTSX 1、项目搭建 1.1、创建项目&#xff08;yarn&#xff09; D:\WebstromProject>yarn create vite yarn create v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh pa…

python使用matplot库绘图颜色表

matlpot的color参数可以是十六进制&#xff0c;也可以是颜色描述的字符串。 下面是字符串描述的颜色表。为了颜色间要有区分度。同时要求颜色比较明显&#xff0c;特意选择一些比较有代表性的颜色&#xff0c;以供使用&#xff08;颜色由于个人需要&#xff0c;除去了红色和绿…

SpringBoot启动图标替换-banner文件

1.banner.txt文件内容如下 ${AnsiColor.BRIGHT_YELLOW}${AnsiStyle.BOLD}_________ .__ __________ __ / _____/____________|__| ____ ____\______ \ ____ _____/ |_ \_____ \\____ \_ __ \ |/ \ / ___\| | _//…

实践|Linux 中查找和删除重复文件

动动发财的小手&#xff0c;点个赞吧&#xff01; 如果您习惯使用下载管理器从互联网上下载各种内容&#xff0c;那么组织您的主目录甚至系统可能会特别困难。 通常&#xff0c;您可能会发现您下载了相同的 mp3、pdf 和 epub&#xff08;以及各种其他文件扩展名&#xff09;并将…

tkinter文件对话框

文章目录 文件对话框文件对象文件类型其他参数 tkinter系列&#xff1a; GUI初步&#x1f48e;布局&#x1f48e;绑定变量&#x1f48e;绑定事件&#x1f48e;消息框扫雷小游戏&#x1f48e;强行表白神器 文件对话框 filedialog提供了多种与文件交互相关的对话框&#xff0c…

Linux:Shell编辑之文本处理器(awk)

目录 绪论 1、用法 1.1 格式选项 1.2 awk 常用内置变量 1.3 awk的打印功能 1.4 奇偶打印 1.5 awk运算 1.6 awk的内置函数&#xff1a;getline 1.7 文本过滤打印 1.8 awk条件判断打印 1.9 三元表达式&#xff0c;类似于java 1.10 awk的精确筛选 1.11 awk和tr比较改变…

【Django】无法从“django.utils.encoding”导入名称“force_text”

整晚处理 Django 的导入错误。 我将把它作为提醒&#xff0c;希望处于相同情况的人数会减少。 原因 某些软件包版本不支持Django 4 请看下表并决定Django和Python的版本 方案 如果出现难以响应&#xff0c;或者更改环境麻烦&#xff0c;请尝试以下操作 例如出现以下错误 …

【Github】SourceTree技巧汇总

sourceTree登录github账户 会跳转到浏览器端 按照Git Flow 初始化仓库分支 克隆远程仓库到本地 推送变更到远程仓库 合并分支 可以看到目前的本地分支&#xff08;main、iOS_JS&#xff09;和远程分支&#xff08;origin/main、origin/HEAD、origin/iOS_JS&#xff09;目前所处…

时间序列预测任务下探索深度学习参数对模型预测性能的影响

时间序列相关的项目在我之前的很多博文中都有涉及&#xff0c;覆盖的数据领域也是比较广泛的&#xff0c;很多任务或者是项目中往往是搭建出来指定的模型之后就基本完成任务了&#xff0c;比较少去通过实验的维度去探索分析不同参数对模型性能的影响&#xff0c;这两天正好有时…

【Minecraft】Fabric Mod开发完整流程2 - 创造模式物品栏与第一个方块

创造模式物品栏 添加到当前已有物品栏 再添加自定义的创造模式物品栏之前&#xff0c;请确保你的确有这个需求&#xff01;否则建议直接添加到当前已有的物品栏内部 创建新文件&#xff1a;com/example/item/ModItemGroup.java package com.example.item;import net.fabricmc.…

web-vue

<html><head><title>永远朋友</title><script src"../js/vue.js"></script></head><body><div id "app"><input type"text" v-model"message">{{ message }}</div&g…

IntelliJ IDEA快捷键大全

文章目录 1、构建/编译2、文本编辑3、光标操作4、文本选择5、代码折叠6、辅助编码7、上下文导航8、查找操作9、符号导航10、代码分析11、运行和调试12、代码重构13、全局 CVS 操作14、差异查看器15、工具窗口 本文参考了 IntelliJ IDEA 的官网&#xff0c;列举了IntelliJ IDEA&…

VM虚拟机搭建详细步骤

一、安装好VMware&#xff0c;双击exe程序&#xff0c;启动软件 二、新建虚拟机 三、选择“典型”&#xff0c;点击“下一步” 四、先择“稍后安装操作系统”&#xff0c;点击“下一步” 五、选择操作系统&#xff0c;以windows server 2008 为例&#xff0c;上方选择“Microso…

KeePass CVE-2023-32784:进程内存转储检测

KeePass CVE-2023-32784&#xff1a;进程内存转储检测 KeePass 是一种流行的开源密码管理器&#xff0c;可以在 Windows、Mac 或 Linux 上运行。该漏洞允许从正在运行的进程的内存中以明文形式提取主密钥。主密钥将允许攻击者访问所有存储的凭据 强烈建议更新到KeePass 2.54以…

LC-环形链表

LC-环形链表 链接&#xff1a;https://leetcode.cn/problems/linked-list-cycle/ 描述&#xff1a;给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 思路&#xff1a;如果一个链表有环&#xff0c;当它进入环之后&#xff0c;就会沿着环一直走&#xff0c;这时…

断路器分合闸速度试验

试验目的 高压断路器的分、 合闸速度是断路器的重要特性参数, 反映出断路器的操动机构 与传动机构在分、 合闸过程中的运动特征。 断路器分、 合闸速度超出或者低于规定值 均会影响断路器的运行状态和使用寿命。 断路器合闸速度不足, 将会引起触头合闸振颤, 预击穿时间过长。 断…

SCAU操作系统知识点之(十)多处理器、多核和实时调度

1、多处理器系统中&#xff0c;采用简单的FCFS或“静态优先级FCFS”调度算法就足够了 2、实时任务分类&#xff1a;硬、软&#xff0c;周期性、非周期性 _例&#xff1a;__A_____优先权是在创建进程时确定&#xff0c;之后不再改变。 A. 静态 B. 短作业 C. 先来先服务 D. 时间片…

未来混合动力汽车的发展:技术探索与前景展望

随着环境保护意识的增强和对能源消耗的关注&#xff0c;混合动力汽车成为了汽车行业的研发热点。混合动力汽车融合了传统燃油动力和电力动力系统&#xff0c;通过优化能源利用效率&#xff0c;既降低了燃油消耗和排放&#xff0c;又提供了更长的续航里程。本文将探讨混合动力汽…

【从零开始学习JAVA | 第四十五篇】反射

目录 前言&#xff1a; ​反射&#xff1a; 使用反射的步骤&#xff1a; 1.获取阶段&#xff1a; 2.使用阶段&#xff1a; 反射的应用场景&#xff1a; 使用反射的优缺点&#xff1a; 总结&#xff1a; 前言&#xff1a; Java中的反射是一项强大而灵活的功能&#xff0…