《实时操作系统复习题(共9页).doc》由会员分享,可在线阅读,更多相关《实时操作系统复习题(共9页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上得 分 一、 选择题 (每题2分,共20分)1、 组成uC/OS-II任务的三个部分不包括( B )。P42A: 任务程序代码; B: 任务就绪表;C: 任务堆栈; D: 任务控制块;2、 任务的执行代码通常是一个无限循环结构,这种结构也叫超循环结构,中断不可能在其中的( D )发生。A: 延时程序代码; B: 无限循环外的代码;C: 无限循环内的代码; D: 临界段的代码;3、 空闲任务OSTaskIdle( )是由( C )创建的任务。A: 用户; B: 延时;C: 系统; D: 中断;4、 如果任务的优先级共有28个,程序中还使用了统计任务,那么用户可用的优先级
2、别有( A )个。A: 26 B: 27c: 28 d: 255、 从任务创建函数OSTaskCreate( MyTask. /任务的指针 & MyTaskAgu. /传递给任务的参数 &MyTaskStk0./任务堆栈顶地址20 /任务的优先级别 );可知堆栈的发展方向是( A )。A: 向上的; B: 向下的;C: 51单片机方式; D: 由微处理器决定;6、 当中断服务子程序的运行结束后,系统( B )。A: 必须回到刚才被中断的任务;B: 转向运行另一个具有更高优先级别的就绪任务;C: 转向运行统计任务;D: 转向运行空闲任务;7、 下面条件编译的代码# if OS_CRITICAL_
3、METHOD =3 OS_CPU_SR cpu_sr; #endif表明,如果用户使用的C编译器具有扩展功能,就可以将程序状态字的值保存 ( C )。P98页A: 堆栈中; B: CPU专用寄存器中;C: C语言函数的局部变量中; D: 中断程序中;8、 最小时钟单位即时钟节拍(Time Tick)是由( D )引起的。A: 中断服务程序OSTickISR( ); B: 函数OSTimeTick();C: CPU的寄存器; D: 硬件定时器;9、 uC/OS-II任务的状态中没有( D )状态。A: 运行状态; B: 等待状态; C: 中断状态; D: 随机状态; 10、 用户应用程序的一般结
4、构中,必须( D )A: 创建两个以上的用户任务; B: OSStart( )之前必须创建至少两个任务;C: 只能在main()函数中创建任务; D: OSStart( )之前必须创建至少一个任务;得 分 二、 填空题(每题3分,共30分)。1、 堆栈的增长方向是随系统所使用的处理器不同而不同的。PC机的处理器要求堆栈的增长方向是( 向下的 )的。2、 已知某一个已经就绪的任务的优先级别prio=30,则OSRdyTbl3 的(D )位置1.3、 将下面下划线处将所缺数补充完整,可对优先级别为prio的任务置为就绪: OSRdyGrp | = OSMapTblprio 3 ;P58页 OSRd
5、yTblprio3 | = OSMapTblprio&0x07;4、 在下划线处填上一个数,使调用函数OSStart()之前创建一个YouTASk任务,并赋予仅高于空闲任务的优先级别,系统最多有12个任务。OSTaskCreate( YouTASk, s_M, & YouTASk TASK_STK_SIZE -1, 10 );5、 uC/OS-II规定:除了空闲任务之外的所有任务必须在任务中合适的位置调用系统提供的函数OSTimeDly( )或延时函数OSTimeDlyHMSM( ),使当前任务的运行延时一段时间并进行一次( 任务调度 ),以让出CPU的使用权。6、 任务获得信号量,并在访问共
6、享资源结束以后,必须( 释放信号量 )。7、 信号量集等待任务链表的一个节点如下图所示当任务所等待的( 第0、第4和第7个 )信号的状态都为0时,任务才可以结柬等待状态而进人就绪状态。8、 多任务操作系统中,系统提供的函数应该能允许同时被多个任务所调用,而不会通过函数中变量的耦合引起任务之间的相互千扰.这样的函数叫做( 可重入函数 )。9、 堆栈的增长方向是随系统所使用的处理器不同而不同的。51单片机的处理器要求堆栈的增长方向是( 由下往上增长 )的。得 分 三、改错题(每题3分,共12分)。1、 在程序启动之后,系统只运行下面这个任务的代码,请找出原因并添加必要的代码。 没有延时函数,所以任
7、务就一直在运行,不能进行调度 P72void YouTask (void *pdata)#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endifpdata = pdata; for (;) if (x50) x=0; y+=2; PC_DispChar(x, y,/显示字符的位置*(char*)pdata, DISP_BGND_BLACK+DISP_FGND_WHITE ); x += 1; OSTimeDlyHMSM(0,0,1,0) 2、 任务InterTask是在时钟节拍中断服务程序中用钩函数OSTimeTickHook ()中断了10000次
8、时使用一个信号变量InterKey激活的,但运行时没有激活,请找出原因并修改必要的代码。P106页extern BOOLEAN InterKey;INT16U InterCtr=0;void OSTimeTickHook (void)if(InterCtr=10000)InterKey=TRUE;InterCtr-; InterCtr+3、 在任务MyTask中用一个变量Times记录任务MyTask的运行次数,并将其作为消息用邮箱OSMbox发给任务YouTask且由任务YouTask显示出来。程序运行时发现显示内容无变化,问题应出在下面程序段,请找出原因并改正。(直接划掉错误的代码及改正)
9、void MyTask (void *pdata)#if OS_CRITICAL_METHOD = 3 OS_CPU_SR cpu_sr;#endif pdata = pdata; for (;) sprintf(s,%d ,Times);OSMboxPost(Str_Box, pdata);/发送消息 OSMboxPost(Str_Box,s); /*PC_DispStr(10,+y,Str_Box-OSEventPtr,/s,DISP_BGND_BLACK+DISP_FGND_WHITE );*/Times+; OSTimeDlyHMSM(0, 0, 1, 0);/等待1秒 得 分 四、程
10、序修改:(6分)。1、 设计一个有三个任务的应用程序,这三个任务分别叫做MyTask、YouTask和HerTask.要求用一个信号量集来控制MyTask的运行,即任务YouTask发送一个信号,任务HerTask发送一个信号,当这两个任务都发了信号之后,MyTask才能运行.MyTask请求信号量的代码是: OSFlagPend(Sem_F,(OS_FLAGS)3,OS_FLAG_WAIT_SET_ALL,0,&err);YouTask发送信号量的代码是:OSFlagPost(Sem_F,(OS_FLAGS)2,OS_FLAG_SET,&err);HerTask发送信号量的代码是:OSFla
11、gPost(Sem_F,(OS_FLAGS)1,OS_FLAG_SET,&err);现将MyTask请求信号量的代码改为: OSFlagPend(Sem_F,(OS_FLAGS)12,OS_FLAG_WAIT_SET_ALL,0,&err);请分别修改YouTask和HerTask发送信号量的代码,以便当这两个任务都发了信号之后,MyTask才能运行。YouTask发送信号量的代码改为:OSFlagPost(Sem_F,(OS_FLAGS)4,OS_FLAG_SET,&err);HerTask发送信号量的代码改为:OSFlagPost(Sem_F,(OS_FLAGS)3,OS_FLAG_SET
12、,&err);得 分 五、编程题(12分)。1、 设计一个任务,在任务中调用函数OSTimeGct()获得并显示系统的时钟节拍数OSTime。1) 问题的文字分析。(3分)P113页2) 程序代码。(7分)3) 程序中的重要指令加上注释。(2分)2、 编写两个任务MyTask,其中用一个变量Times记录任务MyTask的运行次数,并将其作为消息,用邮箱Str_Box发给任务YouTask且由任务YouTask显示出来,要求:1) 问题的文字分析。(3分)P156页2) 程序代码。(7分)3) 程序中的重要指令加上注释。(2分)得 分 六、硬件与接口题。(共20分)1、 图1是89S52单片机
13、与8155接口驱动显示电路的proteus仿真电路图,图2是其接口部分联线的详图,用汇编语言编写的测试代码如下:CWR equ 7F00H ;P0A equ 7F01H ;P0B equ 7F02H ; MOV R1,#8 MOV R0,#40H MOV A,#0RELOAD: MOV R0,A INC A INC R0 DJNZ R1,RELOAD MOV DPTR,#CWRMOV A,#3HMOVX DPTR,ADIR:MOV R0,#40HMOV R6,#0FEH MOV R5,#8AGAIN:MOV A,#0FFHMOV DPTR,#P0AMOVX DPTR,A; ACALL DELA
14、YMOV A,R0MOV DPTR,#TABMOVC A,A+DPTRMOV DPTR,#P0BMOVX DPTR,AMOV A,R6MOV DPTR,#P0AMOVX DPTR,AACALL DELAYINC R0CLR CMOV A,R6RL AMOV R6,ADJNZ R5, AGAINACALL DELAYAJMP DIRDELAY:MOV R4,#0DELAY2:MOV R7,#0DELAY1:DJNZ R7,DELAY1 DJNZ R4,DELAY2RETTAB:DB 3FH,06,5BH,4FH,55H,6DH,7DH,07DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H END图1 系统仿真图图2 接口电路图(1)分析电路和汇编程序,说明在仿真软件下的测试效果(2)试编写一个任务,使之运行出该汇编程序的效果(10分)专心-专注-专业