PV 操作是一种实现进程互斥与同步的有效方法。PV 操作与信号量的处理相关, P 表示通过的意思, V 表示释放的意思。
PV 操作是典型的同步机制之一。用一个信号量与一个消息联系起来:
用 PV 操作实现进程同步时, 调用 P 操作测试消息是否到达, 调用 V 操作发送消息。
P 操作: 相当于请求资源、输入
V 操作: 相当于释放资源、输出
1、 P: 请求到资源 (相当于程序输入)
2、 执行…
3、 V: 释放资源 (相当于程序的输出)
1、 V: 一个进程释放了资源
2、 P: 另一个进程可以申请该资源
相当于程序只出不进
相当于程序只进不出

假设系统中有 n 个进程共享 3 台打印机, 任一进程在任一时刻最多只能使用 1 台 打印机。若用 PV 操作控制 n 个进程使用打印机, 则相应信号量 s 的取值范围为 3 ~ -(n-3); 若信号量 S 的值为 -3, 则系统中有 3 个进程等待使用打印机。
1、案例



2、分析
1) 先标信号 S
按照从左到右、从上到下
如果两条线的起点相同, 就比较终点; 终点在上或在前的, 就排在前面

2) 依次分析每个进程
原则:
- 初始进程, 只有 V, 没有 P
- 终止进程, 只有 P, 没有 V
- 进程内, 从 P 到 V
- 进程间, 从 V 到 P
- 一个进程有几个输入, 就有几个 P; 有几个输出, 就有几个 V
初始进程: 只有 V
有两个输出 S1、S2, 所以 V 为: V(s1)、V(s2)

一个输入 S1, 两个输出 S3、S4
所以 P 为: P(s1), V 为: V(s3)、V(s4)

两个输入 S2、S3, 两个输出 S5、S6
所以 P 为: P(s2)、P(s3), V 为: V(s5)、V(s6)

两个输入 S4、S5, 一个输出 S7
所以 P 为: P(s4)、P(s5), V 为: V(s7)

一个输入 S6, 一个输出 S8
所以 P 为: P(s6), V 为: V(s8)

终止进程, 只有 P, 没有 V
两个输入 S7、S8
所以 P 为: P(s7)、P(s8)

3)答案
