| 项目 | 值 |
|---|---|
| 核心概念 | 协调多进程对共享资源的访问,防止数据不一致 |
| 临界区四部分 | 进入区→临界区→退出区→剩余区 |
| P 操作 | $S=S-1$;若 $S<0$ 阻塞,加入等待队列 |
| V 操作 | $S=S+1$;若 $S\le 0$ 唤醒一个等待进程 |
进程同步是协调多个进程/线程对共享资源的访问,防止因并发执行导致数据不一致。临界资源是同一时刻只允许一个进程使用的资源,访问临界资源的代码段称为临界区。临界区四部分:进入区(检查并上锁)→ 临界区 → 退出区(解锁)→ 剩余区。
信号量机制:信号量 $S$ 是整型变量,只能通过两个原子操作访问:
信号量类型:
| 概念 | 定义 |
|---|---|
| 临界资源 | 同一时刻只允许一个进程访问的资源 |
| 临界区 | 访问临界资源的代码段 |
| 互斥 | 某时刻只有一个进程能进入临界区 |
| 同步 | 多进程按约定顺序执行(直接制约) |
| 信号量 | 整型变量 + 原子操作 P/V,用于同步和互斥 |
| 管程 | 高级同步机制,封装共享数据与操作,保证互斥 |
| 考点 | 说明 |
|---|---|
| PV 操作分析 | 根据题意写信号量初值及 PV 序列 |
| 信号量物理意义 | $S>0$ 可用资源数;$S=0$ 无资源无等待;$S<0$ 等待数 $=\lvert S\rvert$ |
| 经典同步问题 | 生产者-消费者、读者-写者、哲学家就餐 |
| 管程 vs 信号量 | 管程互斥由编译器保证;信号量需手动 |
| 同步 vs 互斥 | 同步是先后顺序,互斥是不能同时 |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。