更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
有一传感器数据采集系统如图4.5所示。传感进程S1、S2、S3采集数据送入缓存D1,编码进程T1从缓存D1中取出数据,将数据转换为编码,再存入缓存D2。控制进程C1、C2、C3从缓存D2中取出各自的编码,然后控制设备动作。缓存的大小为1个数据单位。已知S1、S2、S3、T1、C1、C2、C3并发执行的程序段如下。阅读下列伪语言程序段,在划线处补上恰当P、V操作语句,使程序段完整。 (含图) 图4.5 传感器数据采集系统示意图 //设一个数据单位的结构为data_t; 数据编码结构为code_t; 它们在其它文件中已有定义; void put_data(data_t &, data_t); //函数已有定义,且函数体内未使用P、V操作 void get_data(data_t &, data_t); //函数已有定义,且函数体内未使用P、V操作 void sensing(data_t &); //函数已有定义,且函数体内未使用P、V操作 void coding(coding &, data_t); //函数已有定义,且函数体内未使用P、V操作 void controlling(code_t); //函数已有定义,且函数体内未使用P、V操作 Semophore emptyD1,emptyD2; //定义信号量, 分别表示D1、D2空 Semophore fullD1,fullD2; //定义信号量, 分别表示D1、D2满 Semaphore mutexD1,mutexD2; //定义信号量,分别表示互斥访问D1、D2 emptyD1.value=1; emptyD2.value=1; //信号量初始化 fullD1.value=0; fullD2.value=0; //信号量初始化 mutexD1.value=1; mutexD2.value=1; //信号量初始化 data_t D1; //定义数据的结构变量 code_t D2; //定义编码的结构变量 cobegin //cobegin和coend之间的函数代码并发执行 void sensor()//传感器 { data_t dd; //局部结构变量, 存放采集数据 sensing(  ); //传感器采集数据,保存在dd中 P(emptyD1); //P操作 P(mutexD1); //填空① put_data(D1,dd); //数据DD存入D1 V(mutexD1); //V操作 V(fullD1); //填空② } //编码进程 T1() { data_t dd; //局部结构变量,存放数据 code_t cc; //局部结构变量,存放编码 P(fullD1); get_data(dd, D1); //D1数据读到dd中 V(emptyD1); //填空③