在某一自动测量系统中要完成采样、转换和显示等任务。采样过程把从传感器上得到的整型微电压值存入一个缓冲区,转换过程把微电压值从缓冲区中取出,计算转换成度量值再存入该缓冲区,显示过程把缓冲区中的度量值取出并显示。用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 21:02:48 浏览: 67
SS、SC、SD 分别是采样、转换和显示三个进程的信号量,其作用是实现进程之间的同步,确保每个进程在操作缓冲区时不会出现冲突。
填充程序如下:
```
Begin
Buffer:integer;
SS,SC,SD:semaphore;
SS:=1; SC:=0; SD:=0;
Cobegin
PROCESS sample
Begin
L1:
P(SS); // 等待信号量 SS
get a sample;
buffer:=sample;
V(SC); // 发送信号量 SC
goto L1
end;
PROCESS conver
Begin
L2:
P(SC); // 等待信号量 SC
Take a sample from buffer;
Convert the sample to a value;
buffer:=value;
V(SD); // 发送信号量 SD
goto L2
end;
PROCESS display
Begin
L3:
P(SD); // 等待信号量 SD
Take a value from buffer;
display the value;
V(SS); // 发送信号量 SS
goto L3
end;
coend;
end;
```
在采样进程中,首先等待信号量 SS,确保缓冲区空闲。然后获取一个样本值,存入缓冲区,发送信号量 SC,通知转换进程可以进行操作。
在转换进程中,首先等待信号量 SC,确保缓冲区有值。然后从缓冲区中取出样本值,转换成度量值,存回缓冲区,发送信号量 SD,通知显示进程可以进行操作。
在显示进程中,首先等待信号量 SD,确保缓冲区有值。然后从缓冲区中取出度量值,进行显示,发送信号量 SS,通知采样进程可以进行操作。
阅读全文