计算机操作系统21,22
第二十一课死锁预防与死锁避免第一部分先理解银行家算法为什么叫银行家算法来看一个故事。假设你是一家银行。你现在有100万元来了三个客户。A最多需要60万B最多需要40万C最多需要50万注意这里说的是最多需要。不是现在就要。例如今天。A先借30万银行还能借。因为还有70万但是。如果A后来又借30万。B借40万。C借50万。银行是不是一下没钱了如果大家都没完成。没人还钱。银行是不是可能崩所以。银行每借一次钱。都会先想借给你之后我还有没有办法保证所有人最终都能完成如果可以。借。如果不可以。拒绝。这就是银行家算法。第二部分什么叫安全状态教材定义存在一个安全序列使所有进程都能顺利完成。这一句话第一次看。几乎没人懂。我们换成人话。假设三个进程P1 P2 P3资源还剩5如果操作系统发现可以这样安排。P2 ↓ 完成 ↓ 释放资源 ↓ P1 ↓ 完成 ↓ 释放资源 ↓ P3最后三个都能结束。那么现在就是安全状态Safe State注意。不是一起完成。而是存在一种执行顺序。第三部分什么叫安全序列刚才那个顺序。P2 ↓ P1 ↓ P3就是安全序列Safe Sequence所以教材一定会考。区别名称含义安全状态存在至少一个安全序列安全序列一个能够让所有进程完成的执行顺序很多同学会混。第四部分危险状态Unsafe State很多人最容易误解。危险状态是不是已经死锁不是一定记住。危险状态 ≠ 死锁为什么来看。假设现在资源越来越少。已经找不到安全序列。那么现在就是危险状态。但是。如果后面有进程提前释放资源。还是可能恢复。所以危险只是可能死锁。不是一定。口诀安全状态 → 一定不会死锁。危险状态 → 可能死锁但不一定已经死锁。这是考试最爱出的判断题。第五部分死锁预防上一课我们学过死锁发生必须满足四个条件。那最简单怎么办破坏其中一个条件。这就是死锁预防Deadlock Prevention。方法一破坏请求并保持规定所有进程必须一次申请全部资源。例如你要打印机。扫描仪。必须一起申请。不能先拿打印机。再申请扫描仪。这样就不会拿着一个。等另一个。是不是破坏了请求并保持缺点资源利用率低。因为很多资源可能一直空着。方法二破坏不可剥夺规定如果申请失败。已经拿到的资源。全部还回去。以后重新申请。例如已经拿着打印机。申请扫描仪。失败。操作系统直接收回打印机。这样别人可以继续。缺点有些资源不能随便抢。例如打印机已经打印一半。抢走是不是坏了所以不是所有资源都适合。方法三破坏循环等待规定所有资源编号。例如R1 R2 R3 R4规定必须按编号申请。例如可以R1 ↓ R2 ↓ R3不能反过来。于是等待永远不会形成一个圈。教材这一种最喜欢考。第六部分死锁避免预防比较严格。资源利用率低。于是提出避免。思想不是禁止。而是每次申请。先试一试。如果借出去。还能保持安全状态。批准。否则拒绝。这就是银行家算法。第七部分银行家算法流程思想版假设P1申请2个资源。操作系统不会马上给。而是先模拟。假装 已经 给了。然后检查有没有安全序列。如果有。真正分配。如果没有。恢复。拒绝。整个过程像银行审批贷款。第八部分为什么叫避免因为它不是死锁以后解决。而是在发生之前。避免进入危险状态。所以叫Deadlock Avoidance死锁避免第九部分预防 vs 避免★★★★★这是考试最喜欢考的表格。项目死锁预防死锁避免思想破坏四个必要条件不进入危险状态是否限制申请很严格较灵活资源利用率较低较高是否需要知道最大需求不需要需要最后一行一定记住。银行家算法必须知道每个进程最多需要多少资源。否则怎么模拟第十部分口诀★★★★★预防破坏条件避免进入危险银行家先模拟 后分配一句口诀预防靠破坏避免靠判断先试再分配安全才批准。第十一部分本课重点必须掌握✅ 安全状态存在安全序列。✅ 安全序列一种能让所有进程完成的执行顺序。✅ 危险状态可能死锁不等于已经死锁。必须会区分状态是否一定死锁安全状态❌ 一定不会死锁危险状态❌ 不一定死锁死锁状态✅ 已经死锁必须知道死锁预防破坏四个必要条件。死锁避免银行家算法。第二十二课银行家算法计算题一、先认识四张表银行家算法一定会给你四组数据。例如进程MaxAllocationP073P152P232还有Available 3很多同学第一眼就懵了。其实每一列都很好理解。① Max最大需求表示这个进程最多需要多少资源。例如P0Max 7说明P0这一生最多需要7 个资源。不是现在。而是最多。② Allocation已分配表示操作系统已经给了多少资源。例如Allocation 3说明P0手里已经有3 个资源。③ Need还需要考试不会直接给。需要自己算。公式Need Max - Allocation例如Max 7 Allocation 3那么Need 4意思P0还需要4 个资源。④ Available剩余资源表示系统现在还有多少空闲资源。例如Available 3说明系统还能借出去3 个资源。二、第一步计算 Need来看完整例子。进程MaxAllocationP073P152P232Available3先算Need。进程NeedP04P13P21因为7-34 5-23 3-21第一步结束。三、第二步找能完成的进程规则Need ≤ Available谁满足。谁先执行。现在Available 3看看P0Need 4够吗不够。P1Need 3够。可以完成。P2Need 1也够。也可以。说明这里有两个选择。例如我们先选P2。四、第三步释放资源P2完成。是不是应该把之前占有的资源还回来P2Allocation2所以系统资源增加。原来Available 3现在变成3 2 5注意增加的是Allocation不是 Need。因为归还的是已经占有的资源。五、继续找现在Available 5看看P0Need 4可以。P1Need 3也可以。例如选P1。完成。释放Allocation 2于是Available 7最后P0Need4系统有7完成。释放3。结束。于是安全序列就是P2 ↓ P1 ↓ P0这就是安全序列Safe Sequence六、考试完整步骤拿到题目。一定按下面四步。第一步算Need公式Need Max - Allocation第二步找Need ≤ Available的进程。第三步执行释放Allocation更新Available第四步重复。直到全部完成。或者找不到任何可执行进程。七、什么时候是不安全状态假设Available只有1看看Need。P0 4 P1 3 P2 2有没有一个满足Need ≤ 1没有。于是没有任何进程可以完成。说明找不到安全序列。于是进入危险状态。注意这里还是危险。不是已经死锁。八、银行家算法真正干什么假设P1申请一个资源。操作系统不会马上给。而是先模拟给了之后重新计算Available。重新计算安全序列。如果还能找到安全序列。批准。否则拒绝。九、多资源怎么办刚才我们只有一种资源。实际考试一般三个资源。例如A B C表格变成进程Max(A,B,C)Allocation(A,B,C)P0(7,5,3)(0,1,0)Need仍然公式Need Max - Allocation只是每一种资源分别计算。例如Need (7,5,3) - (0,1,0) (7,4,3)判断也是逐列比较。例如Need (2,1,3) Available (3,2,4)比较2≤3 1≤2 3≤4全部成立。才能执行。只要有一种资源不够就不能执行。十、一张流程图开始 ↓ 计算Need ↓ Need≤Available ↓ 是 ↓ 执行 ↓ 释放Allocation ↓ 更新Available ↓ 继续 ↓ 全部完成 ↓ 是 ↓ 安全状态 ────────── 否 ↓ 危险状态十一、口诀★★★★★银行家四步口诀。先算Need ↓ 找能完成 ↓ 归还Allocation ↓ 继续循环一句话算 Need找进程还资源再循环。十二、本课重点★★★★★必须会四个量名称含义公式Max最大需求已知Allocation已分配已知Need尚需资源Max − AllocationAvailable剩余资源已知/动态更新必须知道安全序列就是能够让所有进程全部完成的顺序。必须知道更新Available加的是Allocation不是Need。

相关新闻

计算机毕业设计之基于Spring Boot的上门洗车服务系统设计与实现

计算机毕业设计之基于Spring Boot的上门洗车服务系统设计与实现

随着网络科学技术不断的发展和普及化,用户在寻找适合自己的信息管理系统时面临着越来越大的挑战。因此,本文介绍了一套上门洗车服务系统设计与实现,在技术实现方面,本系统采用JAVA、HTML、CSS、JS以及MySQL数据库编程,…

2026/10/12 18:08:50 阅读更多 →
计算机操作系统19,20

计算机操作系统19,20

第十九课:读者-写者问题(Readers-Writers Problem)一、先来看一个生活例子 假设: 图书馆里: 有一本: 珍贵古籍。 很多人: 都想: 看。 还有: 管理员: 负责&…

2026/9/26 20:59:52 阅读更多 →
想进大厂做安全工程师,这份包含代码审计与应急响应的进阶路线图

想进大厂做安全工程师,这份包含代码审计与应急响应的进阶路线图

突破工具依赖:从执行者到架构师的思维跃迁很多刚入行的安全工程师容易陷入一种“工具崇拜”的误区,认为熟练掌握 Burp Suite、Sqlmap 或 Nessus 就能胜任所有工作。然而,当你试图从一线工程师向安全架构师或管理层跃迁时,会发现单…

2026/10/8 16:23:42 阅读更多 →

最新新闻

从零搭建能干活儿的机器人:平台选型、核心逻辑与部署维护实战

从零搭建能干活儿的机器人:平台选型、核心逻辑与部署维护实战

1. 从零搭建一个能干活儿的机器人:先想清楚你要它做什么很多人一听到“Bot”这个词,脑子里第一反应就是那种在群里自动回复“你好,有什么可以帮您”的客服机器人。但真正玩过一阵子的人都知道,一个能“干活”的机器人,…

2026/10/14 7:55:45 阅读更多 →
UE4反射系统深度解析:从UHT编译期代码生成到运行时注册机制

UE4反射系统深度解析:从UHT编译期代码生成到运行时注册机制

1. 为什么值得花时间啃反射系统如果你写过一段时间的UE4 C,大概率遇到过这种场景:在编辑器里给某个UCLASS加了一个UPROPERTY,编译完打开编辑器,属性面板里就自动出现了这个字段,还能被蓝图读写、被序列化、被GC正确管理…

2026/10/14 7:55:45 阅读更多 →
架构经济学:技术决策中的成本与价值平衡

架构经济学:技术决策中的成本与价值平衡

1. 架构经济学的本质思考第一次读到"架构经济学"这个概念时,我正坐在杭州西溪湿地旁的一家咖啡馆里调试微服务链路追踪。咖啡师拉花的动作突然让我意识到:架构设计和咖啡制作竟如此相似——都需要在有限的资源条件下,通过合理的组合…

2026/10/14 7:55:45 阅读更多 →
HyperFrames:为AI代理打造确定性视频渲染管线

HyperFrames:为AI代理打造确定性视频渲染管线

视频渲染这件事,过去几年一直有个尴尬的定位:它要么是剪辑软件里的手工活,要么是后端服务里跑得慢、结果还不稳定的黑盒。尤其是当"AI 代理"这个概念火起来之后,问题变得更尖锐——代理需要批量、自动、可复现地生成视频…

2026/10/14 7:55:45 阅读更多 →
游戏推荐系统开发:从架构设计到核心算法实现

游戏推荐系统开发:从架构设计到核心算法实现

1. 项目背景与核心价值网游推荐网站是当前游戏爱好者获取最新游戏资讯的重要渠道。这类平台需要解决的核心痛点是:如何从海量游戏作品中筛选出真正值得玩家投入时间的高质量作品。我们开发的这个推荐系统,不仅包含常规的游戏列表展示,更重要的…

2026/10/14 7:55:45 阅读更多 →
动态图训练实战:图像识别模型可调试、可复现的端到端训练方法

动态图训练实战:图像识别模型可调试、可复现的端到端训练方法

1. 项目概述:为什么动态图训练正在成为图像识别的默认工作流“图像识别实战(四)——动态图&模型训练”这个标题里藏着一个关键信号:它不是在讲“怎么用现成模型跑个demo”,而是在直击当前工业级图像识别落地最核心的环节——如何让模型真…

2026/10/14 7:54:45 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →