168

问答题 168 /170

设 input进程不断向缓冲区Q写入信息,output进程不断地将刚由input进程写入的信息读出。试问: 
(1)这两个进程有何相互制约关系? 
(2)试用P、V操作写出这两个进程完成这项任务的代码段和信号量的含义及初值。

参考答案

这两个进程的相互制约关系为同步关系;
设两个信号量S1和S2。其中S1表示Q是否为空,初值为1,表示Q是空的;S2表示Q中是否有信息,初值为0,表示Q中无信息。
两进程的代码段如下:
       input进程                                 output进程
        ……                                     ……
       While 信息未处理完毕                     While 信息未处理完毕
      {  加工一个信息;                         { P(S2);
       P(S1);                                从Q中读出一个信息;
       将信息放入Q中;                         V(S1);}
       V(S2);}                                 ……