在测温系统中要完成采样 转换和显示等任务。采样过程把从传感器上得到的整型微电压值存入一个缓冲

大学 测温,过程,电压 已帮助 人

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

请帮忙给出正确答案和分析,谢谢!

热搜:在word中要使文字能够环绕图形编辑

答案解析

难度★★☆ 搜索
  • 正确答案:本题类似于两个生产者消费者问题。采样过程相当于生产者转换过程相当于消费者显示过程为消费者而转换过程还充当生产者。为此设立三个信号量:SS表示采集的微电压值能否存入缓冲区初值为1;SC表示缓冲区中是否有微电压值要转换成温度值初值为0;sD表示缓冲区是否有温度值要显示初值为0。解决此同步问题的程序段为: Begin Ssscsd: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
    本题类似于两个生产者消费者问题。采样过程相当于生产者,转换过程相当于消费者,显示过程为消费者,而转换过程还充当生产者。为此设立三个信号量:SS表示采集的微电压值能否存入缓冲区,初值为1;SC表示缓冲区中是否有微电压值要转换成温度值,初值为0;sD表示缓冲区是否有温度值要显示,初值为0。解决此同步问题的程序段为:BeginSs,sc,sd:semaphore;Buffer:integer;ss:=1;sc:=0;sd:=0;CobeginProcesssample;BeginL1:getasample;P(ss);buffer:=sample;V(sc);gotoL1;EndProeessconvert;BeginL2:P(sc);takeasamplefrombuffer;convertthesampletotemperature;buffer:=temperature;v(sd);gotoL2;Endprocessdisplay;BeginL3:p(sd);takeatemperaturefrombuffer;displaythetemperature;gotoL3;EndCoendEnd