news 2026/10/24 5:36:04

【操作系统】第五章死锁

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【操作系统】第五章死锁

1. 什么是死锁?引起死锁的必要条件是什么?

死锁:多个进程因互相等待对方持有的资源,而永久阻塞的状态。

必要条件:

  1. 互斥条件:资源同一时间只能被一个进程占用;
  2. 请求和保持条件:进程持有部分资源,同时等待其他进程的资源);
  3. 不剥夺条件:进程已持有的资源不能被强制收回;
  4. 环路等待:多个进程形成资源请求的循环链。

2. 以生产者 - 消费者问题为例说明死锁是如何产生的?

生产者 - 消费者问题中,若信号量使用不当(比如颠倒了 “申请互斥信号量” 和 “申请资源信号量” 的顺序),会导致死锁:

  • 假设生产者先申请 “空缓冲区” 信号量,再申请 “互斥访问缓冲区” 信号量;而消费者先申请 “满缓冲区” 信号量,再申请 “互斥访问缓冲区” 信号量。
  • 若生产者持有 “空缓冲区”、等待 “互斥信号量”,同时消费者持有 “满缓冲区”、等待 “互斥信号量”,则二者互相等待对方释放信号量,形成死锁。

3. 什么是饥饿?死锁与饥饿有什么区别?

饥饿:进程长期得不到所需资源,无法推进(但未进入 “永久阻塞”,只是 “长期等待”)。

区别:

  1. 死锁是多个进程互相等待、永久阻塞;
  2. 饥饿是单个 / 部分进程长期得不到资源,其他进程可能正常推进,无 “循环等待链”。

4. 死锁的四个必要条件是什么?死锁预防的基本原理是什么?

死锁的四个必要条件:

  1. 互斥条件;
  2. 持有并等待条件;
  3. 不可剥夺条件;
  4. 循环等待条件。

死锁预防的基本原理:破坏死锁的任意一个必要条件,使死锁无法形成。

5. 说明银行家算法的流程(包括资源试分配和安全检测流程)。

银行家算法是 “避免死锁” 的算法,流程分为资源试分配和安全检测:

1.资源试分配:

若进程请求的资源数 ≤ 其剩余需求,且 ≤ 系统可用资源数,则暂时分配资源(修改系统的 “可用资源”“进程已分配资源”“进程剩余需求”)。

2.安全检测:

检查是否存在 “安全序列”(即能让所有进程依次完成的进程执行顺序):

遍历进程,找到 “剩余需求 ≤ 系统可用资源” 的进程,假设其完成,将其已分配资源释放到 “可用资源”;

重复上述步骤,若所有进程都能完成,则系统 “安全”,正式分配资源;否则 “不安全”,撤销试分配。

6. 如何确定死锁检测的频率?

死锁检测的频率需权衡 “检测开销” 和 “死锁影响”:

若死锁发生概率低、“检测 / 恢复开销大”,则检测频率可低(比如定期检测);

若死锁影响严重(比如实时系统)、“检测开销小”,则检测频率可高(比如每次资源请求后检测)。

7. 如何检测和解除死锁?

死锁检测:通过 “资源分配图”(进程、资源、请求 / 分配边)判断是否存在 “循环等待链”;或用算法(类似银行家算法)检查系统是否 “不安全”。

死锁解除:

  1. 资源剥夺:强制收回部分进程的资源,分配给死锁进程;
  2. 进程终止:终止部分 / 全部死锁进程;
  3. 进程回滚:将进程回滚到未死锁的状态,重新执行。

8. 什么是死锁定理?

死锁定理是判断系统是否处于死锁状态的充分必要条件:当且仅当系统的资源分配图是不可完全简化的。

资源分配图的简化过程:

1. 找到一个既不阻塞又非独立的进程节点,释放其占用的资源
​
2. 重复上述步骤,若最终能消去图中所有边,则为可完全简化,无死锁;反之则存在死锁

9. 系统可以采用什么方法解决饥饿问题?

解决饥饿的核心是保证资源分配的 “公平性”,常用方法:

采用先来先服务(FCFS)的资源分配策略;

引入优先级老化机制(长期等待的低优先级进程,优先级逐渐提升);

避免 “资源分配的局部性倾斜”(比如限制单个进程占用资源的时长 / 数量)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 6:24:23

彻底告别Windows Defender:深度解析windows-defender-remover的核心技术优势

在Windows系统的日常使用中,Windows Defender的过度防护常常成为性能瓶颈的罪魁祸首。对于追求极致性能的用户来说,找到一款真正能够彻底移除微软防御者的工具至关重要。本文将从技术实现、功能覆盖、系统兼容性三个维度,深入剖析windows-def…

作者头像 李华
网站建设 2026/10/19 19:41:06

11、安全关键系统的意外处理与架构策略

安全关键系统的意外处理与架构策略 1. 设计安全状态与危险故障 在安全关键系统中,设计安全状态是处理意外情况的重要手段。当系统遇到意外状况时,应恢复到设计安全状态,此时需要精确定义该状态,以供集成商考虑。 设计安全状态的目的是为设计者提供应对意外条件的方法。一…

作者头像 李华
网站建设 2026/10/23 13:49:05

2025网盘下载加速神器:直链解析工具完整使用指南

2025网盘下载加速神器:直链解析工具完整使用指南 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改(改自6.1.4版本) ,自用,去推广&#xff0…

作者头像 李华
网站建设 2026/10/21 12:22:42

pywencai终极指南:Python量化投资的数据革命

还在为获取同花顺问财数据而烦恼吗?每次都要手动复制粘贴,数据格式还乱七八糟?今天,让我带你体验一场数据获取的革命,用pywencai这个开源工具彻底改变你的量化研究方式。 【免费下载链接】pywencai 获取同花顺问财数据…

作者头像 李华
网站建设 2026/10/22 4:16:59

终极指南:3步完成ReTerraForged地形模组编译安装

终极指南:3步完成ReTerraForged地形模组编译安装 【免费下载链接】ReTerraForged a 1.19 port of https://github.com/TerraForged/TerraForged 项目地址: https://gitcode.com/gh_mirrors/re/ReTerraForged 想要在Minecraft中体验更加真实多样的地形生成效果…

作者头像 李华
网站建设 2026/10/22 1:15:09

鸣潮性能优化完全指南:WaveTools高效配置方案

鸣潮性能优化完全指南:WaveTools高效配置方案 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 还在为鸣潮游戏画面卡顿而困扰吗?想要获得流畅丝滑的游戏体验却总是配置失败&#xff…

作者头像 李华