生产者—消费者问题表述如下:一组生产者进程和一组消费者进程通过缓冲区发生联系。生产者进程将生产的产品送入缓冲区,消费者进程则从中取出产品。假定环形缓冲池中共有N个缓冲区,编号为0~N-1。
为了描述生产者进程和消费者进程,设指针in 和out分别指向生产者进程和消费者进程当前所用的缓冲区(buffer),初始值为0。
(1) 应设置三个信号量实现两类进程的同步,分别是full、empty和mutex。请说出它们的含义及初值。
(2) 下面是生产者进程的算法描述,请填写相应的P、V操作语句。
while(1) {
( );
( );
产品送往buffer[in];
in=(in+1)%n;
( );
( );
}
(3)指出生产者进程算法中的临界区是哪一段程序?