408 知识网络

四必要条件

操作系统

所属模块:OS-4 死锁 · 本模块第 8 / 11 个概念

在「OS-4 死锁」概念体系中的位置

flowchart TD
    A["并发进程互斥使用资源<br/>+ 按需逐步申请"] --> B["死锁四必要条件<br/>互斥 / 请求并保持<br/>不可剥夺 / 循环等待"]
    B --> C["死锁 = 存在进程集合<br/>每个进程都在等集合内另一进程占有的资源"]
    C --> D1["预防:破坏四条件之一<br/>(静态,保守)"]
    C --> D2["避免:银行家算法<br/>每次分配前检查安全状态<br/>(动态,需预知最大需求)"]
    C --> D3["检测与解除:资源分配图化简<br/>+ 剥夺 / 撤销 / 回退<br/>(放任发生,事后处理)"]

核心概念:

概念 要点 易考点
死锁 一组进程中每个都在等待同组内另一进程释放资源,无外力则永远僵持 至少 2 个进程,且死锁时必然 ≥2 个进程阻塞(2019 年 30 题 IV)
四必要条件 互斥、请求并保持、不可剥夺、循环等待 缺一不可:预防 = 破坏其一;循环等待是前三个共同导致的“结果性条件”
安全状态 存在至少一个安全序列,按此顺序推进所有进程都能完成 安全 ⇒ 无死锁;不安全 ≠ 已死锁(只是可能,2013 年 32 题 C 项陷阱)
安全序列 一个进程序列,每个进程所需剩余资源 ≤ 当前可用 + 排在其前的进程释放之和 可以有多个(2022 年 26 题:安全序列 2 个)
死锁 vs 饥饿 死锁:互相等待、无外力永不解脱;饥饿:被调度策略长期冷落,理论上可解脱 判别线索:饿死的是“排队总被插队”,死锁的是“拿着东西等对方”