计算机操作系统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/8/7 1:18:55 阅读更多 →
计算机操作系统19,20

计算机操作系统19,20

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

2026/8/7 1:18:55 阅读更多 →
想进大厂做安全工程师,这份包含代码审计与应急响应的进阶路线图

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

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

2026/8/7 1:18:55 阅读更多 →

最新新闻

SubtitleEdit终极指南:5个步骤快速掌握免费开源字幕编辑神器

SubtitleEdit终极指南:5个步骤快速掌握免费开源字幕编辑神器

SubtitleEdit终极指南:5个步骤快速掌握免费开源字幕编辑神器 【免费下载链接】subtitleedit the subtitle editor :) 项目地址: https://gitcode.com/gh_mirrors/su/subtitleedit SubtitleEdit是一款功能强大的免费开源字幕编辑器,支持200多种字幕…

2026/8/7 2:10:19 阅读更多 →
VCF 9.0/9.1 CASA API自动化上传安装PAK包完整实操指南

VCF 9.0/9.1 CASA API自动化上传安装PAK包完整实操指南

本文基于William Lam官方运维速报,拆解VCF Operations(原vRealize Operations)两套PAK升级自动化API方案:分步上传手动安装、一键静默上传自动部署,完整给出curl原生调用命令、参数释义、进度轮询接口;解决…

2026/8/7 2:10:19 阅读更多 →
MySQL EXPLAIN执行计划详解与索引优化实战

MySQL EXPLAIN执行计划详解与索引优化实战

1. 为什么需要深入理解EXPLAIN执行计划第一次接触MySQL性能调优时,我常常陷入这样的困境:明明已经建立了索引,查询速度却依然很慢。直到系统学习了EXPLAIN命令,才发现原来索引的使用情况远比想象中复杂。EXPLAIN就像数据库查询的X…

2026/8/7 2:10:19 阅读更多 →
正则表达式参考

正则表达式参考

正则表达式参考1、QED中的正则表达式2、元字符3、字符简写式4、空白符5、Unicode空白字符6、控制字符7、字符属性8、各种字符属性的脚本名称9、POSIX字符组10、选项与修饰符11、正则表达式与ASCII码表1、QED中的正则表达式 QED(Quick Editor)最初是为运…

2026/8/7 2:10:19 阅读更多 →
STM32 SPI/QSPI外部Flash驱动详解:从协议到文件系统实战

STM32 SPI/QSPI外部Flash驱动详解:从协议到文件系统实战

1. 从SPI到QSPI:为什么外部Flash是嵌入式开发的“必修课”如果你玩过STM32,大概率用过它的内部Flash来存点程序代码或者配置参数。但当你需要存一张图片、一段音频、或者一个稍微复杂点的文件系统时,内部那点空间就显得捉襟见肘了。这时候&am…

2026/8/7 2:10:19 阅读更多 →
2026年靠谱pdf拆分网站盘点:7款在线合并与拆分工具横评

2026年靠谱pdf拆分网站盘点:7款在线合并与拆分工具横评

八月的午后,空调呼呼转着,我盯着桌面上散落的十七份报销材料发愁。财务要求按时间顺序把发票、审批单、合同片段合并成一份完整的PDF,可光是把这些扫描件按日期排好就花了半小时,中间还插了两份横版的表格。我需要一个能在线拆分又…

2026/8/7 2:09:18 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →