单选题 某系统中有一个缓冲区,进程P1不断地加工数据送入缓冲区,进程P2不断地从缓冲区中取数据打印,用P/V操作实现进程间的同步模型如图2-13所示。假设信号量S1的初值为1,信号量S2的初值为0,那么图2-13中a、b、c、d处应分别填 (5)
【正确答案】 C
【答案解析】[分析] 信号量S1的初值为1,信号量S2的初值为0,说明S1表示空闲的缓冲区数量,而S0表示有数据的缓冲区数量。
P1是送数据的,所以在送数据之前,先要把S1减1(执行P操作),如果S1大于等于0,则可以存放数据,否则,说明P2未取完数据。存放完毕后,再把S2加1(执行V操作),表明缓冲区中有数据。
P2是取数据的,它首先把S2减1(执行P操作),看缓冲区中是否有数据,如果S2小于0,表示缓冲区中没有数据,需要等待P1放数据。否则就可以取数据,取完后,再把S1加1(执行V操作),表示把缓冲区置空闲。