问题 多项选择题

从读卡机上读进Ⅳ张卡片,然后复制一份,要求复制出来的卡片与读进来的卡片完全一致。这一工作由三个进程get、copy和put以及两个缓冲区buffer1和buffer2完成。进程get的功能是把一张卡片上的信息从读卡机上读进buffer1,进程copy的功能是把buffer1中的信息复制到buffer2,进程put的功能是取buffer2中的信息并从行式打印机上打印输出。试用P、V操作完成这三个进程间的尽可能并发正确运行的关系(用程序或框图表示),并指明信号量的作用及初值。

答案

参考答案:设互斥信号量SA,SB初值为A,分别用于对bufferA和bufferB的互斥访问;同步信号量SnA,SnB初值为A,分别表示bufferA和bufferB初始状态为空闲,可以放一张卡片信息;同步信号量SmA和SmB初值为0,分别表示bufferA和bufferB中的信息还没有被取用(或已被取用了)。用P、V操作完成这三个并发进程间能正确运行的程序如下:
BEGIN
SA,SB,SnA,SnB,SmA,SmB:semaphore;
SA=SB=A;
SnA=SnB=A;
SmA=SmB=0;
Cobegin
Proces s produce get
Begin
LA: 从读卡机读进一张卡片信息:
P(SnA);
P(SA);
将信息放入bufferA;
V(SmA);
V(SA); Goto LA
End
Process produce copy
Begin
LB: P(SmA);
P(SA);
从bufferA复制信息;
V(SnA);
V(SA);
P(SnB);
P(SB);
将复制的信息放入bufferB;
V(SmB);
V(SB);
Goto LB
End
Process produce put
Begin
LC: P(SmB);
P(SB);
从bufferB取信息;
V(SnB);
V(SB);
把信息从打印机输出;
Goto LC
End
Coend;
END

填空题
单项选择题