早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

请根据本题要求完善任务Task1和任务Task2的程序代码,填补图中的空缺。

题目

请根据本题要求完善任务Task1和任务Task2的程序代码,填补图中的空缺。

参考答案
正确答案:(1)OSSemPend(emptySemO&err) (2)Buffer=readc (3)ret=OSSemPost(fullSem) (4)OSSemPend(fullSemO&err) (5)ret=OSSemPost(emptySem) (6)Printc(wntec)
(1)OSSemPend(emptySem,O,&err) (2)Buffer=readc (3)ret=OSSemPost(fullSem) (4)OSSemPend(fullSem,O,&err) (5)ret=OSSemPost(emptySem) (6)Printc(wntec) 解析:本问题是信号量应用实例。
μC/OS-II操作系统提供了操作信号量的若干系统调用,任务Task1为了实现从键盘读入一个字符并写到buffer的功能,就必须在读完字符后调用OSSemPend()和OSSemPost()对写buffer缓冲的动作加锁和解锁。
Task2为了完成将该字符输出到屏幕,也必须在读buffer缓冲的动作时加锁和解锁。这样就避免任务Task1和Task2同时操作buffer缓冲的资源冲突。
因此,任务Task1的代码如下:
voidTask1(void*#pdata)
{
INT8U readc;
INT8U err;
INT8U ret;
while(1){
readc=scanc();
OSSemPend(emptySem,0,&err);
Buffer=readc;
ret=OSSemPost(fullSem);
}
}
任务Task2的代码如下:
voidTask2(void*#pdata)
{
INT8U writec;
INT8U err;
INT8U ret;
while(1){
OSSemPend(fullSem,0,&err);
writec=buffer;
ret=OSSemPost(emptySem);
Printc(writec);
}
}
看了请根据本题要求完善任务Task...的网友还看了以下: