问题 问答题

假设有一个计算进程CP和一个打印进程PP,进程CP将计算结果送入由10个缓冲区组成的缓冲池,进程PP从该缓冲区中取出数据并打印。为实现进程同步,设置信号量SC,SP,送数指针in、取数指针out。同步算法如下:
Struct seinaphone mutex=1 SC=10, SP=0;
Message buffers[10];
Int in,out=0,0;
Cobegin
Void CP()
while(TRUE)
计算下一个数据到x;
①;
②;
Buffers[in]=x;
③;
V(mutex);
④;


Void PP()
while(TRUE)
⑤;
⑥;
y=buffers[out];
⑦;
V(mutex);
⑧;
打印y中的数据;



coend
问:(1)指出信号量SC,SP初值的物理意义。
(2)要求打印进程打印的数据与计算进程计算的数据个数次序完全一致,在括号内填入有关的语句,完善程序。

答案

参考答案:(1)SC是指缓冲区有无空位置,初始状态下有10个空位置所以为10。SP是指缓冲区有无数据,初始状态下无数据,所以为0。
(2)①P(SC) ②P(mutex) ③in:=(in+1)mod 10 ④V(SP)
⑤P(SP) ⑥P(mutex) ⑦out:=(out+1)mod 10 ⑧V(SC)
此题是简单的生产者——消费者。对于生产者——消费者要着重掌握,很多题目都于此问题类似。

填空题
判断题