C07
PV 操作与前趋图
信号量就是资源计数器:P 减并可能排队,V 加并可能唤醒——同步在前、互斥在后
开始讲解
交互实验
共享缓冲区(绿色 = 已放入产品)
边界演示:
边界③玩法:点预设后消费者已阻塞在 full 队列(P 是可以等的,不算死锁)——再点几次「生产者执行一步」,生产者 V(full) 时它就被唤醒。顺序颠倒的 P 只是等待,V 到了就好。
前趋图模式:给图求信号量个数、初值与 P/V 落位(真题形)
口诀:几条边几个信号量(初值全 0);节点开头 P 所有入边信号量,末尾 V 所有出边信号量。
核心思想
- 读值三段:S>0 余 S 个资源;S=0 刚好用完;S<0 排了 |S| 个进程。
- P 会阻塞、V 永不阻塞——「先 V 后 P」顺序打乱最多空唤醒,不会死锁;「互斥 P 抢到同步 P 前面」才会持锁干等。
- 生产者-消费者三板斧:empty=n、full=0、mutex=1;两侧都是同步在前、互斥在后。
- 前趋图秒答:边数 = 信号量个数,初值全 0;入边开头 P、出边末尾 V。
- 审题先数资源种类再定信号量个数:一种互斥资源一个 mutex(初值 1),一类同步关系一个计数(初值 0 或资源数)。
真题演练
查看解析
深化笔记:10 · 操作系统深化 §C PV 操作与信号量 (互斥 vs 同步判定、三大经典模型、案例四步法、真题举一反三)。反查:21 · 考点反查索引。