一、题目描述
在某一自动测量系统中要完成采样、转换和显示等任务。采样过程把从传感器上得到的整型微电压值存入一个缓冲区1,转换过程把微电压值从缓冲区B1取出,计算转换成量度值再存入该缓冲区B2,显示过程把缓冲区2中的量度值取出并显示。用PV操作实现三个过程共享缓冲区的同步问题。
二、分析
1.设置四个信号量,S1,S2,S3,S4
2.初始时S1=1,B1空所以开始采样,与此同时S2=0,待B1满的时候才可以进行转换;S3=0,B2为空,则可以转换,与此同时S4=0,待B2满的时候进行显示
3.互斥的满足
①采样的时候不能对S2进行V操作,待B1满再对其进行V操作
②从B1中取出电压值后再释放S1
③转换的时候不能对S4进行V操作,待B2满的时候再对其进行V操作
④显示完毕对S3进行V操作
三、算法描述
semaphore S1=1;
semaphore S2=0;
semaphore S3=1;
semaphore S4=0;
cobegin
process P采样
{while(true)
{得到微电压值;
P(S1);
存入B1;
V(S2);
}
}
process P转换
{while(true)
{P(S2);
从B1中取
出微电压值
V(S1);
转换成量度值;
P(S3);
将量度值存入
B2;
V(S4);
}
}
process P显示
{while(true)
p(S4);
从B2中取
出量度值;
V(S3);
显示;
}
}
coend