【操作系统】死锁检测与死锁恢复
考点频率★★★☆☆选择题常考下午题偶尔结合资源分配图考查难度⭐⭐⭐建议掌握资源分配图的简化方法理解死锁恢复的两种策略及适用场景1️⃣ 回顾死锁处理的四种策略整个死锁处理策略可以分为四个层次前两篇已经讲了预防和避免策略时机核心思想预防系统设计时破坏四个必要条件之一避免银行家算法分配时每次分配前检查是否安全检测运行中定期检查是否存在死锁恢复死锁发生后解除死锁让系统继续运行本篇聚焦于后两个策略检测和恢复。2️⃣ 死锁检测2.1 检测的时机定时检测系统每隔一段时间如每10分钟运行一次死锁检测算法事件触发当进程等待超时或资源请求被阻塞时触发检测2.2 核心工具资源分配图资源分配图是一种有向图用于描述进程与资源之间的占用和等待关系是死锁检测的核心工具。节点矩形表示资源类型圆圈内数字表示资源数量圆形表示进程边资源 → 进程分配边表示该资源已被分配给该进程进程 → 资源请求边表示该进程正在请求该资源2.3 资源分配图的简化判断是否死锁简化步骤在资源分配图中找出一个既不阻塞又非孤立的进程结点该进程所请求的所有资源都能被满足请求边能全部变为分配边如果存在这样的进程则它可以运行完毕并释放所有资源释放该进程占用的所有资源删除该进程的所有边重复步骤1-2直到所有进程都能被简化删除无死锁或剩余进程无法简化有死锁判定结论如果资源分配图可以完全简化所有进程都被删除→ 无死锁如果资源分配图中存在环路且无法简化→ 有死锁环路中的进程就是死锁进程2.4 单资源 vs 多资源实例资源类型环路与死锁的关系说明每类资源只有1个实例环路 ⇔ 死锁有环必死锁等价关系每类资源有多个实例环路 ≠ 死锁有环不一定死锁可能通过其他实例满足软考常考画出资源分配图要求判断是否发生死锁并说明理由。3️⃣ 死锁恢复检测到死锁后系统需要采取措施解除死锁让进程继续运行。3.1 恢复策略一终止进程最常用强制终止一个或多个死锁进程回收其占用的资源。终止策略的选择终止所有死锁进程简单粗暴但代价大逐个终止每次终止一个进程释放资源后重新检测直到死锁解除选择终止哪个进程的依据考虑因素说明进程优先级先终止优先级低的已执行时间先终止运行时间短的损失小占用资源数量先终止占用资源多的释放资源多剩余执行时间先终止剩余时间长的进程类型交互式进程优先于批处理进程3.2 恢复策略二资源抢占从死锁进程中强行剥夺部分资源分配给其他进程打破循环等待。资源抢占的三个问题选择被抢占的资源通常选择代价最小的资源如CPU寄存器状态比打印机缓冲区更容易保存被抢占进程的回滚必须将进程回滚到某个安全状态如检查点防止饥饿同一个进程不能被反复抢占否则永远无法完成3.3 两种恢复策略的对比对比项终止进程资源抢占实现复杂度简单复杂需回滚机制恢复速度快较慢损失终止进程的全部工作丢失仅丢失部分工作可回滚适用场景批处理系统、对实时性要求高的系统交互式系统、事务型系统如数据库4️⃣ 死锁、饥饿、活锁的对比这是软考中容易混淆的三个概念对比项死锁饥饿活锁定义多个进程互相等待对方占有的资源某个进程长期得不到所需资源进程不断改变状态但始终无法推进进程状态所有相关进程阻塞被饿死的进程阻塞其他进程可能正常运行进程在运行非阻塞但没有实质性进展能否自行解除不能需要外部干预如果调度策略改变如优先级老化可能自行解除可能自行解除如果冲突碰巧解决典型场景A等BB等A低优先级任务永远等不到CPU两个进程在走廊里互相让路但总是让到同一侧永远过不去资源占用每个进程都占有一些资源被饿死的进程可能没有资源一直在等待进程可能在占用资源但无法推进区分要点死锁是“大家都在等”饥饿是“你一个人在等”活锁是“大家都在动但没人前进”。5️⃣ 经典例题例题1某系统资源分配图如下资源R1有1个实例被P1占用P2正在请求R1资源R2有1个实例被P2占用P1正在请求R2问系统是否发生死锁解析分配边R1→P1R2→P2请求边P1→R2P2→R1形成环路P1 → R2 → P2 → R1 → P1每个资源都是单实例环路上的进程无法继续推进答案发生了死锁死锁进程为P1和P2。例题2下列关于死锁检测和恢复的叙述中正确的是 。A. 资源分配图中存在环路则系统一定发生死锁B. 死锁检测只能在系统死锁后才能进行C. 终止所有死锁进程是常用的死锁恢复方法D. 资源抢占策略不需要进程回滚解析A错误多实例资源场景下存在环路不一定死锁B错误检测可以定期运行不一定要等到系统完全卡死C正确终止进程是最常用的恢复策略D错误资源抢占通常需要进程回滚答案C例题3活锁辨析两个进程P1和P2共享两个资源R1和R2它们都在不断尝试获取两个资源每次拿到一个后发现另一个被占用就释放已拿到的资源如此反复。这种情况属于 。A. 死锁B. 饥饿C. 活锁D. 互斥解析进程没有阻塞每次尝试都在运行但始终无法取得两个资源完成工作属于活锁。选C。6️⃣ 记忆口诀死锁检测看资源图简化删除找路径。全部删除算安全剩环说明已死锁。恢复终止或抢占终止简单回滚难。死锁活锁与饥饿三者区分要记全。7️⃣ 小测验评论区对答案某系统有3个进程P1、P2、P3资源R1和R2各有1个实例。当前分配R1被P1占用R2被P2占用。P1请求R2P2请求R1P3正在运行且不请求任何资源。问当前系统是否发生了死锁如果死锁发生死锁进程是哪些本专栏日更2篇点击头像 → 专栏《软考中级高频考点》订阅第一时间接收新内容#软考中级 #软件设计师 #死锁检测 #死锁恢复 #资源分配图 #操作系统

相关新闻

Ubuntu 20.04 手动部署 Elastic Stack 实战指南

Ubuntu 20.04 手动部署 Elastic Stack 实战指南

1. 项目概述:为什么在 Ubuntu 20.04 上亲手部署 Elastic Stack 是绕不开的基本功Elasticsearch、Logstash 和 Kibana 这三个名字,对任何做过日志分析、应用监控或搜索功能开发的人来说,几乎等同于“可观测性基础设施”的代名词。它们合起来就…

2026/7/2 19:11:56阅读更多 →
CBCX外汇的在线支持清楚吗?

CBCX外汇的在线支持清楚吗?

换句话说,如果围绕基础体验评价CBCX,用户通常更在意流程是否容易跟上,而不是热闹包装。这种偏简洁的表达,不会制造压力,反而更利于建立连贯印象。这些细节拼在一起,才构成CBCX外汇比较自然、也比较稳健的整…

2026/7/2 19:11:56阅读更多 →
Fetch API 核心原理与生产级实践指南

Fetch API 核心原理与生产级实践指南

1. 为什么今天还值得花时间重学 Fetch API:一个被低估的现代 Web 基石你可能已经用过axios、jQuery.ajax,甚至在 Vue 或 React 项目里封装过自己的请求工具类。但当你打开浏览器开发者工具的 Network 面板,看到所有请求都标注着fetch—— 那不…

2026/7/2 19:06:55阅读更多 →
【计算机Java毕业设计案例】基于 SpringBoot 的中药仓库物资流转管理系统的设计与实现 基于 SpringBoot 的中药材过期预警与库存维护系统(程序+文档+讲解+定制)

【计算机Java毕业设计案例】基于 SpringBoot 的中药仓库物资流转管理系统的设计与实现 基于 SpringBoot 的中药材过期预警与库存维护系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/2 22:02:45阅读更多 →
48tools:一站式跨平台媒体内容自动化管理工具

48tools:一站式跨平台媒体内容自动化管理工具

48tools:一站式跨平台媒体内容自动化管理工具 【免费下载链接】48tools 48工具,提供公演、口袋48直播录源,公演、口袋48录播下载,封面下载,B站直播抓取,B站视频下载,A站直播抓取,A站…

2026/7/2 22:02:45阅读更多 →
Linux下纯C实现的EXT2文件系统教学模拟器(用户态可执行)

Linux下纯C实现的EXT2文件系统教学模拟器(用户态可执行)

本文还有配套的精品资源,点击获取 简介:一套能在Linux和Windows上直接用gcc编译运行的EXT2文件系统模拟程序,包含init.c、main.c、init.h、main.h四个核心文件,不依赖内核模块或虚拟机环境。运行后可直观查看超级块、组描述符、…

2026/7/2 22:02:45阅读更多 →
如何快速实现音频转乐谱:终极音乐转录工具完全指南

如何快速实现音频转乐谱:终极音乐转录工具完全指南

如何快速实现音频转乐谱:终极音乐转录工具完全指南 【免费下载链接】Automated_Music_Transcription A program that automatically transcribes a music file with polyphonic piano music in .wav format to sheet notes. 项目地址: https://gitcode.com/gh_mir…

2026/7/2 22:02:45阅读更多 →
Wedecode:微信小程序安全审计与代码还原的终极解决方案

Wedecode:微信小程序安全审计与代码还原的终极解决方案

Wedecode:微信小程序安全审计与代码还原的终极解决方案 【免费下载链接】wedecode 全自动化,微信小程序 wxapkg 包 源代码还原工具, 线上代码安全审计,支持 Windows, Macos, Linux 项目地址: https://gitcode.com/gh_mirrors/we/wedecode …

2026/7/2 22:02:45阅读更多 →
Atari游戏下DQN/PPO/A2C智能体的对抗扰动实验与鲁棒性加固代码包

Atari游戏下DQN/PPO/A2C智能体的对抗扰动实验与鲁棒性加固代码包

本文还有配套的精品资源,点击获取 简介:专为Atari环境设计的强化学习对抗攻防实践工具集,支持DQN(基于Tianshou)、PPO和A2C三类主流算法。提供五种观测空间扰动攻击实现:统一扰动、战略定时、临界点、关…

2026/7/2 21:57:45阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/2 12:10:34阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/2 12:10:34阅读更多 →
塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧

塞尔达传说旷野之息存档修改器:3分钟掌握海拉鲁世界自由定制技巧 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 想在《塞尔达传说:旷野之息…

2026/7/2 0:03:01阅读更多 →
告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

告别 AccessKey:多云平台 CLI OAuth 免密认证完全指南

在本地开发环境使用云厂商 CLI 时,传统的 AccessKey(AK)方式需要手动创建、下载和保管密钥,不仅繁琐,还存在泄漏风险。其实,主流云平台都已提供基于 OAuth 2.0 的免密认证方案,让开发者可以通过浏览器登录一次性完成授权,CLI 自动管理临时凭证的刷新,兼顾了便利与安全…

2026/7/2 0:03:01阅读更多 →
基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

基于13DOF传感器与PIC32MZ的高精度嵌入式导航系统设计

1. 项目背景与核心价值在嵌入式系统开发领域,高精度定位与导航一直是极具挑战性的技术方向。传统方案往往面临成本、精度和实时性难以兼顾的困境。这个项目通过13DOF(13自由度)传感器组合与PIC32MZ2048EFH100高性能MCU的协同工作,…

2026/7/2 0:03:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/2 0:33:58阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/2 1:32:11阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/2 1:50:13阅读更多 →