操作系统第 2 章:进程与线程总览
这一页只负责导航,不装内容。每个节号点进去就是那一节的完整讲义。
第 2 章的主线是一条因果链:并发带来了管理难题(2.1 进程与线程)→ 谁先用 CPU(2.2 CPU 调度)→ 共享资源怎么不打架(2.3 同步与互斥)→ 打架打死了怎么办(2.4 死锁)。
章节导航
2.1 进程与线程 ✅
2.2 CPU 调度 ✅
| 节 | 页面 | 一句话 |
|---|
| 2.2.1 | 调度的概念 | 三层调度;低级调度是唯一必不可少的 |
| 2.2.2 | 调度的实现 | 三种不能调度的时机;内核临界区 ≠ 普通临界区 |
| 2.2.3 | 调度的目标 | 带权周转时间恒 ≥ 1,可用作自检 |
| 2.2.4 | 进程切换 | 调度 ≠ 切换;开销大头是 TLB 与 Cache 失效 |
| 2.2.5 | CPU 调度算法 | 手算五步法;只有 FCFS/HRRN/RR 不会饥饿 |
| 2.2.6 | 多处理机调度 | 亲和性与负载均衡互相冲突(低频考点) |
2.3 同步与互斥 ✅
| 节 | 页面 | 一句话 |
|---|
| 2.3.1 | 同步与互斥的基本概念 | 同步=按序,互斥=不能同时;四准则分量不同 |
| 2.3.2 | 实现临界区互斥的基本方法 | 四个软件算法是一条改错链,各违反一条准则 |
| 2.3.3 | 互斥锁 | 自旋锁 ⊂ 互斥锁;持锁期间禁止调度 |
| 2.3.4 | 信号量 | value<0 时 |value| 即等待人数;不要抱着锁睡觉 |
| 2.3.5 | 经典同步问题 | 四个模式可迁移;读写公平靠闸门 w |
| 2.3.6 | 管程 | 互斥由编译器保证;V 有记忆,signal 没有 |
2.4 死锁 ✅
| 节 | 页面 | 一句话 |
|---|
| 2.4.1 | 死锁的概念 | 四个必要条件;循环等待必要不充分 |
| 2.4.2 | 死锁预防 | 破坏四条之一;预防是立法,避免是现算 |
| 2.4.3 | 死锁避免 | 试探分配 + 找安全序列;安全 ⟹ 不死锁,反之不成立 |
| 2.4.4 | 死锁检测和解除 | 环是嫌疑,化简才是定罪;死锁定理属于检测 |
本章高频边界
按考频排的成对辨析,每条都链到详细拆解处:
| 边界 | 判据 | 在哪 |
|---|
| 并发 vs 并行 | 时间段 vs 时刻 | 2.1.1 |
| 就绪 vs 阻塞 | 缺的是不是 CPU | 2.1.3 |
| 阻塞→运行、就绪→阻塞 | 都不存在 | 2.1.3 |
| 进程切换 vs 模式切换 | 换不换进程;单向蕴含 | 2.1.4 |
| 进程映像 vs 进程上下文 | 内存占用 vs 切换代价 | 2.1.2 |
| 低级 vs 高级通信 | 能传多少数据 | 2.1.5 |
| 共享存储 vs 管道 | 谁负责同步 | 2.1.5 |
| ULT vs KLT | 内核知不知情 | 2.1.6 |
| 高级 vs 低级调度 | 跨不跨内存边界;建不建 PCB | 2.2.1 |
| 周转 vs 等待 vs 响应时间 | 终点是完成 / 干等 / 首次响应 | 2.2.3 |
| 内核临界区 vs 普通临界区 | 前者禁止调度,后者可以 | 2.2.2 |
| 调度 vs 切换 | 决策 vs 执行;调度结果可能仍是原进程 | 2.2.2 |
| 会不会饥饿 | 只有 FCFS、HRRN、RR 不会 | 2.2.5 |
| 多级队列 vs 多级反馈队列 | 进程能否在队列间移动 | 2.2.5 |
| 同步 vs 互斥 | 必须按序 vs 不能同时 | 2.3.1 |
| 双标志”先检查” vs “后检查” | 先检查会互斥失效,后检查会双方卡死 | 2.3.2 |
| 互斥锁 vs 自旋锁 | 等不到时让不让出 CPU | 2.3.3 |
| 同步 P vs 互斥 P 的顺序 | 同步 P 必须在前,否则死锁 | 2.3.4 |
signal vs V | V 有记忆,signal 无记忆 | 2.3.6 |
| 读者优先 / 公平 / 写者优先 | 谁能插队,谁会饿死 | 2.3.5 |
| 不可剥夺 vs 请求并保持 | 别人抢不走 vs 自己不放手 | 2.4.1 |
| 死锁 vs 饥饿 vs 死循环 | 阻塞成环 / 轮不到 / 自身 bug 且在运行 | 2.4.1 |
| 有环 vs 死锁 | 多实例时有环未必死锁 | 2.4.4 |
| 银行家算法 vs 图化简 | 看 Need vs 看当前请求边;预言家 vs 验尸官 | 2.4.3 |
复习顺序
- 2.1.1 → 2.1.2:先把”为什么需要进程”和”进程有哪些状态”接上。这两节是后面一切的地基。
- 2.1.3 → 2.1.4:状态是怎么被改变的(原语),以及进程在内存里长什么样。
- 2.1.5:通信。本章提问最多的一节,三种方式的同步归属是核心。
- 2.1.6:线程。记住那句”资源分配归进程、调度归线程”,ULT/KLT 的所有结论都是推论。
- 2.2.1 → 2.2.2:先分清三层调度,再拿到五个评价指标——没有指标就无从比较算法优劣。
- 2.2.3:工程实现。三种不能调度的时机几乎年年考,须逐条记住理由。
- 2.2.4:本章计算题主战场。先掌握手算五步法,再记各算法;流程比算法更值得先熟练。
- 2.3.1 → 2.3.2:先立四准则,再看四个软件算法分别违反哪一条——按准则记,不要背代码。
- 2.3.3 → 2.3.4:工具升级线。互斥锁只解决互斥且忙等;信号量兼顾同步、且满足让权等待。
- 2.3.5:管程。理解”互斥由编译器保证”这一句,其余是推论。
- 2.3.6:大题落点。四个问题记的是模式不是题目;读写公平要能讲出
w 为什么放在那两个位置。
- 2.4.1:先把四个必要条件立住,2.4 后三节全部由它派生。
- 2.4.2 → 2.4.3 → 2.4.4:按”事前立法 → 事中现算 → 事后收拾”这条时间线理解三种策略,
限制依次放松、资源利用率依次提高。银行家算法是唯一必须手算的。
链接
- 📖 名词库:第 2 章名词库
- 📜 原始提问档案:第 2 章 原始提问档案(本地资料)(82 条,按节号归位)
- 🏗️ 重构施工文档:OS + 计组 笔记体系重构计划(本地资料)