在某一自动测量系统中要完成采样、转换和显示等任务。采样过程把从传感器上得到的整型微电压值存入一个缓冲区,转换过程把微电压值从缓冲区中取出,计算转换成度量值再存入该缓冲区,显示过程把缓冲区中的度量值取出并显示。用PV操作实现三个过程的同步问题,需要三个信号量。 Begin Buffer:integer; SS,SC,SD:semaphore; SS:=1;SC:=0; SD:=0; Cobegin PROCESS sample Begin L1:get a sample; ; buffer:=sample; ; goto L1 end; PROCESS conver Begin L2: ; Take a sample from buffer; Convert the sample to a value; Buffer:=value; ; goto L2 end; PROCESS display Begin L3: ; Take a value from buffer; ; display the value; goto L3 end; coend; end; 说明信号量SS,SC,SD的作用。 完成程序的填充,使其能正确执行。
时间: 2024-01-26 18:02:56 浏览: 85
信号量SS,SC,SD分别表示采样、转换和显示过程的状态,其中SS初始为1表示采样过程可以执行,SC和SD初始为0表示转换和显示过程需要等待信号量才能执行。
完整的程序如下:
```
Begin
Buffer: integer;
SS, SC, SD: semaphore;
SS := 1;
SC := 0;
SD := 0;
Cobegin
PROCESS sample
Begin
L1: get a sample;
P(SS);
buffer := sample;
V(SC);
goto L1;
end;
PROCESS conver
Begin
L2: P(SC);
Take a sample from buffer;
Convert the sample to a value;
V(SS);
P(SD);
Buffer := value;
V(SS);
goto L2;
end;
PROCESS display
Begin
L3: P(SD);
Take a value from buffer;
V(SC);
display the value;
goto L3;
end;
coend;
end.
```
在采样过程中,使用P(SS)操作等待信号量SS,如果SS等于0,则阻塞等待;获取到信号量后将采样值存入缓冲区,然后释放信号量SC,表示转换过程可以执行。
在转换过程中,使用P(SC)操作等待信号量SC,如果SC等于0,则阻塞等待;从缓冲区中取出采样值并进行转换,获取到信号量SS后将转换后的值存入缓冲区,然后再次释放信号量SS,表示采样过程可以执行;最后使用P(SD)操作等待信号量SD,如果SD等于0,则阻塞等待;将转换后的值存入缓冲区后释放信号量SS,表示采样过程可以执行。
在显示过程中,使用P(SD)操作等待信号量SD,如果SD等于0,则阻塞等待;从缓冲区中取出转换后的值后释放信号量SC,表示转换过程可以执行;最后将值显示出来。
阅读全文