Procedure P(Var S:Semaphore);
    Begin
        S:=S-1;
// 执行 P 操作的进程插入等待队列
        If S<0 then w(S)
    End;
(2) V操作定义如下。
Procedure V(Var s:Semaphore);
    Begin
        S:=S+1;
       
If s≤0 then R(S) // 从阻塞队列中唤醒一个进程
    End;
(3) 利用 PV 操作实现互斥。
P(mutex)
    临界区
V(mutex)
利用 PV 操作实现进程的同步
进程的同步,是由于进程间 合作引起的相互制约 的问题,要实现进程的同步可用一个信号量与消息联系起来,当信号量的值为 0 时表示等待的消息未产生,当信号量的值为非 0 时表示等待的消息已经存在。假定用信号量 S 表示某条消息,进程可以通过调用 P 操作测试消息是否到达,调用 V 操作通知消息已准备好。最典型的同步问题是单缓冲区的生产者和消费者的同步问题。