有四个并发进程:R1、R2、W1和W2,它们共享可以存放一个数的缓冲区。进程R1每次从磁盘读入一个数存放到缓冲区,供进程W1打印输出;进程R2每次从键盘读一个数存放到缓冲区,供进程W2打印输出。当缓冲区满时,不允许再向缓冲区存放数据;当缓冲区空时,不允许再从缓冲区取出数据打印输出。试用PV操作进行四个进程的同步管理。
empty,full1,full2:semaphore;
empty=1,full 1=full2=0;
R1()
从磁盘上读入一个数;
P (empty);
将数存放到缓冲区中;
V(full1);
R2()
从键盘上读入一个数;
P (empty);
将数存放到缓冲区中;
V (full2);
W1()
P (full1);
将缓冲区中的数取出;
V (empty);
打印输出;
W2()
P (full2);
将数存放到缓冲区中;
V (empty);
打印输出;