现有4个进程R1,R2,W1,W2,它们共享可以存放一个数的缓冲器B。进程R1每次把从磁盘上读入的一个数存到缓冲器B中,供进程W1打印输出。进程R2每次把从键盘上读一个数存到缓冲器B中,供进程W2打印输出。当一个进程把数存放到缓冲器后,在该数还没有被打印输出之前不准任何进程再向缓冲器中存数。当一个进程已把缓冲器中的数打印输出后,在缓冲器中还没有存入一个新数之前不准任何进程加快从缓冲区中取数打印。怎样用PV操作使这四个进程在并发执行时能协调地工作?
这四个进程实际上是两个生产者R1,R2和两个消费者W1,W2。各自生成不同的产品供各自的消费对象去消费,他们共享一个的缓冲器。由于缓冲器只能存放一个数,所以,R1和R2在存放数时必须互斥。而R1和W1、R2和W2之间存在同步。为了协调它们的工作,可定义三个信号量:
S:表示能否把数存人缓冲器B,初始值为1。
S1:表示R1是否已向缓冲器存入从键盘上读人的一个数,初始值为0。
S2:表示R2是否已向缓冲器存入从磁盘上读人的一个数,初始值为0。