资源描述
一、选择题(本题满分14分,每个选择1分)
1、一般来说,嵌入式软件系统中的任务函数中,应设计一个( ),表示该功能是可以连续执行的。
A)条件语句 B) 循环语句 C) 普通函数 D) 无限循环
2、采用交叉开发方式,开发平台一般采用( )。运行平台基于( )。
A)单片机 B) 固定硬件 C)通用计算机 D) 实验仪
3、m在μC/OS-II操作系统中,大部分源码采用移植性很强的( )编写,和微处理器硬件相关部分采用( )编写。
A)C语言 B) JAVA C) VC++ D) 汇编语言
4、μC/OS-II的启动多任务环境的函数叫做OSStart()。用户在调用OSStart()之前,必须已经建立了一个或更多任务,OSStart()函数会调度( )的任务运行。
A)优先级最高 B) 优先级最低 C) 当前任务 D)随机任务
5、利用关闭任务调度函数OSSchedLock( )和打开任务调度函数OSSchekUnlock( ),可以实现( )间互斥访问数据。
A)函数 B) 中断处理子程序 C) 任务和中断处理子程序 D)任务
6、嵌入式操作系统管理的多任务的堆栈的空间( ),在( )中定义。
A)各自独立 B) 集中在一起 C) 应用代码 D) μC/OS-II内核
7、假定μC/OS-II设定的时钟节拍率是200Hz,时钟节拍计数器每秒钟递增( )。
A)100 B) 200 C) 300 D) 400
8、移植μC/OS-II到一个新的体系结构上,需要修改的文件不包括( )。
A)OS_CPU.H B)TASK.C C)OS_CPU_C.C D)OS_CPU_A.ASM
9、μC/OS-II对内存进行( )管理,可把管理的动态内存空间分成( )的分区,每个分区又分成了( )的内存块来进行管理。
A)一级 B)一个 C) 多个大小相等 D)两级 E)多个大小不等
二、判断题(本题满分10分,共含10道小题,每小题1分)
1、时限要求严格的系统称为硬实时系统。
2、μC/OS-Ⅱ是非抢占式实时多任务内核,优先级最高的任务一旦准备就绪,则拥有CPU的所有权开始投入运行。
3、当系统需要确保响应时间时,需要使用可剥夺型操作系统内核进行管理和编程。
4、并发任务所访问的资源必须独占使用的方式,称为互斥。
5、为确保临界段代码的互斥执行,通常,在进入临界段之前开中断,而临界段代码执行完以后要立即关中断。
6、全部μC/OS-II操作系统的系统函数的执行时间不可以确定。
7、μC/OS-II提供的禁止任务切换可以防止中断的干扰。
8、congfig.h文件的作用设置所有选项,用于配置和裁剪内核代码及其数据结构。
9、OS_CPU.H文件中的typedef unsigned char INT8U;表明INT8U的类型为unsigned char。
10、嵌入式操作系统μC/OS-II的多任务环境由函数OSStart( ) 启动。用户在调用该函数之前,必须已经建立了一个或更多任务。嵌入式应用程序中,该函数一般在主函数中调用。
三、图示题(本题满分17分,共含1道小题)
下图是一个嵌入式操作系统多任务管理下的就绪表,由其中变量OSRdyGrp和一维数组OSRdyTbl[8]均是8bit的无符号整型,根据下图回答以下问题。
图中包含几个就绪任务: 。
这些就绪任务的优先级各为: ,
其中优先级最高的是 ,优先级最低的是 。
当前变量OSRdyGrp的值为 。
当前一维数组OSRdyTbl[8]的各个元素的值依次分别为:
、 、 、 、 、 、 、 。
OSRdyGrp
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
OSRdyTbl[8]
X
Y
四、数据结构及算法计算题(本题满分17分)
某事件的等待任务表的当前状态,如下图所示:
pevent
OSEventType
OSEventCnt;
OSEventPtr;
OSEventTbl[8]
OSEventGrp;
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
假如等待事件到来,需要运用查表法,在等待任务表中查找最高优先级的任务,并从该等待表中删除它。提示,查表法算法如下所示。
1、在等待任务表中查找最高优先级任务(优先级为prio)算法如下:
y = OSUnMapTbl[pevent->OSEventGrp];
x = OSUnMapTbl[pevent->OSEventTbl[y]];
prio = (y << 3) + x;)
2、从等待任务表中删除一个任务(优先级为prio)的算法如下:
if((pevent->OSEventTbl[prio>>3]&=~OSMapTbl[prio&0x07])== 0)
{ pevent->OSEventGrp &= ~OSMapTbl[prio >> 3]; }
请利用上述算法运算及其结果,并在空白处填写对应的各表达式的值,并解答相关问题,总结上述算法特性。其中,OSUnMapTbl[ ] 和OSMapTbl[ ]两表的值如下所示。
INT8U const OSMapTbl[ ]={ 1,2,4,8,16,32,64,128 };
[1] 在等待任务表中查找最高优先级任务的过程如下,请将左边表达式的值写在对应右边的空白处。
pevent->OSEventGrp
y=OSUnMapTbl[pevent->OSEventGrp]
pevent->OSEventTbl[y]
x=OSUnMapTbl[pevent->OSEventTbl[y]]
y << 3
prio = (y << 3) + x
当前最高优先级等待任务是:
[2] 从等待任务表中删除该优先级任务的过程如下,请将左边表达式的值写在对应右边的空白处。
prio>>3
运算前,pevent->OSEventTbl[prio>>3]
prio&0x07
OSMapTbl[prio&0x07]
运算后,pevent->OSEventTbl[prio>>3]
运算前,pevent->OSEventGrp
运算后,pevent->OSEventGrp
此时,该等待任务是否还在等待任务表中?
评价该算法有何特点
五、代码分析题(本题满分14分,共含3道小题,每空1分)
1、请以下列任务控制块类型定义的代码为例,回答以下问题,说明嵌入式操作系统µC/OS-II如何实现内核裁减。
typedef struct os_tcb {
OS_STK *OSTCBStkPtr;
#if OS_TASK_CREATE_EXT_EN Void *OSTCBExtPtr;
OS_STK *OSTCBStkBottom;
INT32U OSTCBStkSize;
INT16U OSTCBOpt;
INT16U OSTCBId;
#endif
…
} OS_TCB;
不可以裁剪的代码部分是 。
可以裁剪的代码部分是 。
是否裁剪由哪个数据决定? 。
如需裁剪,该数据设为 。
如不需裁剪,该数据设为 。
2、以下程序代码段利用信号量机制实现互斥。
OS_EVENT *SemMu;
SemMu =OSSemCreate (1);
void Task1 (void *pdata)
{ INT8U err;
for (;;){ OSSemPend(SemMu, 0, &err);
。。。。。。;
OSMboxPost(SemMu);
}
}
请根据上述代码,回答以下问题:
信号量变量名为 。
信号量的初值为 。
需要互斥的代码段是
进入互斥代码段的实现方法为 。
退出互斥代码段的实现方法为 。
3、以下是嵌入式操作系统µC/OS-II创建内存分区代码段。
OS_MEM *Buf;
INT8U CommTx[10][16];
void main (void)
{ INT8U err;
…
Buf = OSMemCreate(CommTx, 10, 16, &err);
…
OSStart();
}
根据代码段,回答以下问题:
指示内存分区的变量名为 。
分区的空间大小为 字节。
该分区的内存块的个数为 。
每个内存块的字节数为 。
六、程序设计题(本题满分28分,共含2道小题)
1、在一个能够持续运行的应用程序中,设计任务1(task1),每1秒运行一次,在屏幕的第一行处显示“1S”;设计任务2(task2),每2秒运行一次,在屏幕的第二行处显示“2S”;设计任务3(task3),每5秒运行一次,在屏幕的第三行处显示“5S”。 写出以上3个任务函数原型定义及其包含以上功能的代码段。(10分)
2、在一个能够持续运行的应用程序中,设计3个任务,其中:任务1(task1)每隔2秒接收信号量集中的第0、1、2、3位的信号全“1”;任务2(task2)每隔3秒接收信号量集中的第4、5、6、7位的信号全“1”;任务3(task3)每隔2秒向信号量集中信号发送信号全“1”。(18分)
要求如下:
(1)写出3个任务的堆栈定义(3分)
(2)创建3个任务的μC/OS-II内核调用语句(3分)
(3)3个任务函数原型定义及其包含以上功能的代码段。(12分)
七、实验题
(一) 分析与设计题 (满分20分,共含2小题,每小题10分)
1、 对本课题组所开发的综合算法演示程序进行简要描述,包括课题组成员、各算法名称及各算法基本功能。
2、 你个人开发算法演示程序功能进行简要描述,包括算法中任务数量、任务名称、各任务简要功能描述及并发任务间的同步关系简要描述。
(二) 设计与实现题(本题满分48分,共含5小题)
选择你个人负责开发的一个算法,回答以下开发、设计实现问题。
1. 你设计的所有任务如何创建?要求写出调用μC/OS-II创建任务系统函数语句。(8分)
2. 你设计的信号量如何创建?要求写出调用μC/OS-II创建信号量系统函数语句。(8分)
3. 写出1、2、中每个任务的优先级和每个信号量的初值。(8分)
4. 简要说明至少两个任务函数的内部处理流程。其中重点应包括信号量申请、信号量释放、界面信息显示方法、时间延迟及无限循环的设计与实现。(16分)
5. 分别说明4、中两个任务每一次循环执行时,在界面上显示的动态变化的信息说明。(8分)
(三) 界面设计与实现题(本题满分21分)
1. 画出你个人实现的算法演示程序运行界面的布局示意简图(7分),
2. 并按照静态信息(运行过程中内容不变)(2分)
3. 和动态信息(根据运行的推进不断发生变化的内容)(5分),
4. 对所显示的内容,分别进行编程实现方法的说明。请结合实现显示需要调用的函数及其参数进行说明(7分)。
(四) 技术综述题(本题满分11分)
简要综述你个人在本课程中使用的嵌入式操作系统μC/OS-II的基本功能,也可以按照你所使用的操作系统内核函数进行列举说明。
7
展开阅读全文