Appearance
同步与互斥基本概念
考情分析
进程同步在 408 真题中累计考查约 92 分(2009-2026),是整个操作系统考频最高的章节。🔥🔥🔥 绝对核心。本文是该章节的基础概念篇。
两个进程同时往打印机输出,打出来的东西就是一团乱码。多个进程并发访问共享资源时,不加控制一定会出问题——同步和互斥就是解决"谁先谁后"和"不能同时"的核心机制。
两种制约关系
并发进程之间存在两种制约关系:
| 关系 | 又称 | 含义 | 典型场景 |
|---|---|---|---|
| 互斥 | 间接制约 | 多个进程竞争同一资源,同一时刻只能一个使用 | 多个进程共用一台打印机 |
| 同步 | 直接制约 | 多个进程因协作需要按特定顺序执行 | 生产者生产后消费者才能消费 |
临界资源与临界区
- 临界资源:一次只允许一个进程使用的资源(如打印机、共享变量)
- 临界区(Critical Section):访问临界资源的那段代码
进入区(Entry Section) ← 检查是否可进入临界区
临界区(Critical Section) ← 访问临界资源的代码
退出区(Exit Section) ← 释放临界资源
剩余区(Remainder Section) ← 其他代码临界区访问的四个原则
| 原则 | 说明 |
|---|---|
| 空闲让进 | 临界区空闲时,允许一个请求进程进入 |
| 忙则等待 | 已有进程在临界区时,其他进程必须等待 |
| 有限等待 | 等待进入临界区的进程,应在有限时间内获得进入机会(不能饥饿) |
| 让权等待 | 不能进入临界区的进程,应释放 CPU(避免忙等待) |
四个原则的重要性
「空闲让进」和「忙则等待」是最基本的两个要求。判断一个互斥算法是否正确时,首先检查这两点。「让权等待」是最容易被违反的——很多硬件方法(如 TestAndSet)不满足让权等待。
互斥的逻辑结构
// 进程 P_i 的结构
while (true) {
进入区; // 申请进入临界区
临界区; // 访问临界资源
退出区; // 释放
剩余区; // 其他操作
}互斥的实现方法(后续文章详细讨论):
| 类别 | 方法 |
|---|---|
| 软件方法 | Peterson 算法等 |
| 硬件方法 | 中断屏蔽、TestAndSet、Swap |
| 信号量 | P/V 操作(最常用) |
| 管程 | Monitor |
易错
同步和互斥的区别是选择题常考点:
- 互斥是"竞争"关系(间接制约),多个进程争同一资源,谁用都行但不能同时用
- 同步是"协作"关系(直接制约),进程之间有先后顺序要求
常见错误:把"生产者-消费者"只当成互斥问题。实际上它同时包含互斥(缓冲区互斥访问)和同步(先生产后消费)。
考研高频考点
- 🔥🔥🔥 同步和互斥的区别(直接制约 vs 间接制约)
- 🔥🔥🔥 临界区访问的四个原则
- 🔥🔥 临界资源的概念和例子
- 🔥 进入区/临界区/退出区/剩余区的结构
知道了同步互斥的概念和原则,接下来看具体怎么实现——从最朴素的软件方法到硬件指令。