C07

PV 操作与前趋图

信号量就是资源计数器:P 减并可能排队,V 加并可能唤醒——同步在前、互斥在后

开始讲解

0 / 0

交互实验

共享缓冲区(绿色 = 已放入产品)

边界演示:

边界③玩法:点预设后消费者已阻塞在 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 或资源数)。

真题演练

查看解析