在测温系统中要完成采样、转换和显示等任务。采样过程把从传感器上得到的整型微电压值存入一个缓冲区,转换过程把微电压值从缓冲区中取出,计算转换成温度值再存入该缓冲区,显示过程把缓冲区中的温度值取出并显示。试用PV操作实现三个过程共享缓冲区的同步问题。

admin2013-03-18  15

问题 在测温系统中要完成采样、转换和显示等任务。采样过程把从传感器上得到的整型微电压值存入一个缓冲区,转换过程把微电压值从缓冲区中取出,计算转换成温度值再存入该缓冲区,显示过程把缓冲区中的温度值取出并显示。试用PV操作实现三个过程共享缓冲区的同步问题。

选项

答案本题类似于两个生产者消费者问题。采样过程相当于生产者,转换过程相当于消费者,显示过程为消费者,而转换过程还充当生产者。为此设立三个信号量:SS表示采集的微电压值能否存入缓冲区,初值为1;SC表示缓冲区中是否有微电压值要转换成温度值,初值为0;sD表示缓冲区是否有温度值要显示,初值为0。解决此同步问题的程序段为: Begin Ss,sc,sd:semaphore; Buffer:integer; ss:=1; sc:=0; sd:=0; Cobegin Process sample; Begin L1:get a sample; P(ss); buffer:=sample; V(sc); goto L1; End Proeess convert; Begin L2:P(sc); take a sample from buffer; convert the sample to temperature; buffer:=temperature; v(sd); goto L2; End process display; Begin L3:p(sd); take a temperature from buffer; display the temperature; goto L3; End Coend End

解析
转载请注明原文地址:https://kaotiyun.com/show/kVsp777K
0

最新回复(0)