有四个并发进程:R1、R2、W1和W2,它们共享可以存放一个数的缓冲区。进程R1每次从磁盘读入一个数存放到缓冲区,供进程W1打印

有四个并发进程: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);
       打印输出;