Skip to content

同步与互斥基本概念

考情分析

进程同步在 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 间接制约)
  • 🔥🔥🔥 临界区访问的四个原则
  • 🔥🔥 临界资源的概念和例子
  • 🔥 进入区/临界区/退出区/剩余区的结构

知道了同步互斥的概念和原则,接下来看具体怎么实现——从最朴素的软件方法到硬件指令。

真题练习

相关真题(10题)

2026Q27选择题2分

Bernstein条件:并发正确性需读写集和写写集无交集

2025Q45综合题8分

综合题:多资源多步骤的同步互斥问题(铁锹互斥+工序同步+坑数限制)

2021Q45综合题7分

综合题:多操作间的前驱关系同步,用信号量实现

2020Q32选择题2分

临界区准则:互斥、空闲让进、有限等待是必须的,让权等待不是必须的

2018Q25选择题2分

并发执行:两个线程各执行3条指令对x加1,分析x=2的序列

2016Q30选择题2分

互斥执行:同一进程内共享变量x的写操作需互斥

2016Q32选择题2分

管程:既能实现互斥也能实现同步

2013Q45综合题7分

综合题:博物馆出入口的同步互斥问题(人数限制+出入互斥)

2011Q32选择题2分

并发共享变量:由于指令交叉执行,x可能为0、1或2

2011Q45综合题8分

综合题:银行叫号系统的同步互斥问题(座位限制+取号互斥+服务同步)