嵌入式实时操作系统题库.pdf_第1页
嵌入式实时操作系统题库.pdf_第2页
嵌入式实时操作系统题库.pdf_第3页
嵌入式实时操作系统题库.pdf_第4页
嵌入式实时操作系统题库.pdf_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式实时操作系统题库 一、填空题 1 uC/OS-II是一个简洁、易用的 基于优先级的嵌入式( 抢占式)多任 务 实时内核。 2 任务是一个无返回的无穷循环。uc/os-ii总是运行进入就绪状态的( 最高 优先级)的任务 。 3 因为uc/os-ii总是运行进入就绪状态的最高优先级的任务。所以,确 定哪个 任务优先级最高,下面该哪个任务运行,这个工作就是由(调度器 (scheduler)来完成的。 4 ( 任务级)的调度是由函数OSSched()完成的,而( 中断级)的调 度是 由函数OSIntExt() 完成。对于OSSched(),它内部调用的是( OS_TASK_SW()) 完成实际的调度;OSIntExt()内部调用的是( OSCtxSw())实现调度。 5 任务切换其实很简单,由如下2步完成: (1)将被挂起任务的处理器寄存器推入自己的( 任务堆栈)。 (2)然后将进入就绪状态的最高优先级的任务的寄存器值从堆栈中恢 复到(寄存器)中。 6 任务的5种状态。 (睡眠态(task dormat)):任务驻留于程序空间(rom或ram)中,暂时 没交给ucos-ii处理。 (就绪态(task ready):任务一旦建立,这个任务就进入了就绪态。 (运行态(task running):调用OSStart()可以启动多任务。 OSStart()函数只能调用一次,一旦调用,系统将运行进入就绪态并且 优先级最高的任务。 (等待状态(task waiting):正在运行的任务,通过延迟函数或 pend(挂起)相关函数后,将进入等待状态。 (中断状态(ISR running):正在运行的任务是可以被中断的,除非 该任务将中断关闭或者ucos-ii将中断关闭。 7( 不可剥夺型)内核要求每个任务自我放弃CPU的所有权。不可剥 夺型调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。 8当系统响应时间很重要时,要使用( 可剥夺型)内核。最高优先级 的任务一旦就绪,总能得到CPU的控制权。 9使用可剥夺型内核时,应用程序不应直接使用不可重入型函数。调 用不可重入型函数时,要满足互斥条件,这一点可以用( 互斥型信号 量)来实现。 10( 可重入型)函数可以被一个以上的任务调用,而不必担心数据 的破坏。 11可重入型函数任何时候都可以被中断,一段时间以后又可以运行, 而相应数据不会丢失。可重入型函数或者只使用( 局部变量),即变 量保存在CPU寄存器中或堆栈中。如果使用全局变量,则要对全局变量 予以( 保护)。 12每个任务都有其优先级。任务越重要,赋予的优先级应( 越 高)。 13C/OS-初始化是通过调用系统函数(OSIint())实现的,完成 C/OS-所有的变量和数据结构的初始化。 14多任务的启动是用户通过调用(OSStart())实现的。然而,启动 C/OS-之前,用户至少要建立一个应用(任务)。 15. C/OS-的参数配置文件名为(OS_CFG.H)。 16 删除任务,是说任务将返回并处于(休眠状态),并不是说任务的 代码被删除了,只是任务的代码不再被C/OS-调用。 17C/OS-要求用户提供(定时中断)来实现延时与超时控制等功 能。 18定时中断也叫做(时钟节拍),它应该每秒发生10至100次。 19. 时钟节拍的实际频率是由用户的应用程序决定的。时钟节拍的频率 越高,系统的负荷就(越重)。 20C/OS-II中的信号量由两部分组成:一个是信号量的(计数值), 它是一个16位的无符号整数(0 到65,535之间);另一个是由等待该信 号量的任务组成的(等待任务表)。用户要在OS_CFG.H中将OS_SEM_EN 开关量常数置成( 1),这样C/OS-II才能支持信号量。 21. C/OS-II中表示当前已经创建的任务数全局变量名为:( OSTaskCtr)。 21. C/OS-II中表示当前内核运行的标记全局变量名为:( OSRunning)。 22、一般而言,嵌入式系统的架构可以分为4个部分,分别是(处理 器)、存储器、输入输出和软件,一般软件分为(操作系统)和应用软 件两个主要部分。 23、从嵌入式操作系统特点可以将嵌入式操作系统分为(实时操作系 统)和分时操作系统,其中实时系统可分为(硬实时系统)和软实时系 统 24、C/OS中,为保护任务之间的共享数据和提供任务之间的通信,提 供了操作系统任务间通信方法有: 、邮箱、 ,事件标志。 6、COS-II操作系统中处于就绪状态的任务中,优先级最高的任务可以 由任务调度马上切换到 7、C/OS-II中,任务之间的通信和同步,操作系统提供了4种同步对 象: 、邮箱、消息队列和事件。 二、选择题 1、uc/os操作系统不包括以下哪种状态 A、运行B、挂起C、退出D、休眠 2、0x70 (B)提供不同的时钟频率; (C)关闭暂时不使用的功能块; (D)提升工作的时钟频率。 7、以下关于同步、互斥与通信机制的描述中,错误的是( ) (A)间接通信指通信双方不需要指出消息的来源或去向,而通过中间 机制来通信。 (B)在消息队列通信中,将数据从发送任务的空间完全拷贝到接收任 务的空间,具有较好的时间及空间性能; (C)操作系统可以环形缓冲的形式管理消息队列; (D)事件无队列,即多次发送同一事件,在未经过任何处理的情况 下,其效果等同于只发送一次。 8、以下哪一项不属于处理器存储器子系统的范畴( )。 (A)MMU/MPU (B)Cache (C)write buffer (D)external memory 9、多任务系统的优点很多,但( )不是其优点。 (A)将复杂的系统分解成相对独立的多个任务,达到分而制之的目 的,从而降低系统的复杂性; (B)便于保证系统的实时性; (C)需要增加功能:任务间的协调,同步和通信功能; (D)系统的模块化好,提高系统的可维护性。 10、 以下关于任务分类的描述,不正确的是( ) (A)按照到达情况的可预测性,任务可划分为周期任务和非周期任 务; (B)按照重要程度,任务可分为关键任务和非关键任务; (C)非关键任务如果没有得到及时执行,将会产生严重后果; (D)周期任务每隔一个固定的时间间隔就会执行一次。 11、运行任务被抢占的原因不包括( ) (A) 它唤醒了高优先级的任务 (B) 将自己挂起 (C) 有多个同优先级的就绪任务,运行的时间片到 (D) 优先级较低的 中断产生并处理中断 12. ARM处理器在哪种模式下,具有最多的影子寄存器( ) (A)USER (B)SYSTEM (C)FIQ (D)IRQ (E)ABORT 13. 以下关于ARM处理器的分类,哪项描述不正确( ) (A)应用处理器具有最快频率、最高性能以及合理的功耗 (B)实时控制处理器具有实时响应、合理性能、较低功耗 (C)微控制器具有一般性能、最低成本和极低的功耗 (D)微控制器也可以具有存储器子系统 14. 关于中断服务程序的编写原则,以下哪个是不正确的:( ) (A)中断服务程序要尽量地简短,只完成必要的处理工作; (B)中断服务程序中可以调用操作系统提供的一些服务; (C)中断服务程序中可以与任务相同的方式使用操作系统的服务; (D)中断服务程序中可以打开系统的中断响应,以支持中断嵌套。 15. 实际的嵌入式系统对实时性的要求各不相同,其中_属硬实时应 用。 A手机 B自动售货机 C汽车发动机/刹车控制 DPDA 4. 下面属于嵌入式系统的是_ A. “天河”计算机系统 B.联想上网本 C. 联想笔记本电脑 D. IPhone 5 3、COS-II操作系统不属于( )。 A、RTOS B、占先式实时操作系统 C、非占先式实时操作系统 D、嵌入式实时操作系统 1、以下说法不正确的是( )。 A、任务可以有类型说明 B、任务可以返回一个数值 C、任务可以有形参变量 D、任务是一个无限循环 3、COS-II操作系统中最多可以管理( )个任务。 A、64 B、56 C、128 D、63 26 在C/OS-II系统中,OSTimeTick()函数只被以下( )函数或过程所 调用。 A. OSTickISR B. OSShed C. OSCtxSw D. OSIntCtxSw 14、COS-II操作系统不属于( )。 A、RTOS B、占先式实时操作系统 C、非占先式实时操作系统 D、嵌入 式实时操作系统 9 实时操作系统中,两个任务并发执行,一个任务要等待其合作伙伴发 来信息,或建立某个条件后再向前执行,这种制约性合作关系被成为( )。 A. 同步 B. 互斥 C. 调度 D. 执行 4 COS-II中对关键代码段由于希望在执行的过程中不被中断干扰,通常 采用关中断的方式,以下X86汇编代码正确而且不会改变关中断之前的 中断开关状态的是(4) A. 先CLI、执行关键代码、再STI B. 先STI、执 行关键代码、再CLI C. 先POPF、CLI、执行关键代码、再PUSHF D. 先 PUSHF、CLI、执行关键代码、再POPF。 1、以下说法不正确的是( 2 )。 A、任务可以有类型说明 B、任务可 以返回一个数值 C、任务可以有形参变量 D、任务是一个无限循环 11. 以下不是嵌入式系统应用领域的是( C ) .移动电话 B.汽车电子 C.办公系统 D.军工航天 12. 十进制数235,用八进制表达为( C ) .351 B.352 C.353 D.354 20.1Byte等于( D ) .1024KB B.1024KM C.1024GB D.8bit 21. 以下不是嵌入式系统应用领域的是( A ) .电子商务 B.移动电话 C.消费类电子产品 D.军工航天 22. 十进制数235,用十六进制表达为( A ) .EB B.EC C.EA D.EE 30. 1KB等于( B ) .1024MB B.1024B C.1024GB D. D.8bit 31. 以下不是嵌入式系统应用领域的是( A ) .通用软件 B.工业控制 C.消费类电子产品 D.机器人 32. 十进制数100,用十六进制表达为( C ) .62 B.63 C.64 D.65 1、以下描述中,哪一项不适用于前后台系统:( ) (A)是中断驱动系统的一种 (B)后台是一个循环轮询系统一直 在运行 (C)前台由一些中断处理过程组成 (D)具有多任务 3、以下关于同步、互斥与通信机制的描述中,错误的是( ) (A)间接通信指通信双方不需要指出消息的来源或去向,而通过中间 机制来通信。 (B)在消息队列通信中,将数据从发送任务的空间完全拷贝到接收任 务的空间,具有较好的时间及空间性能; (C)操作系统可以环形缓冲的形式管理消息队列; (D)事件无队列,即多次发送同一事件,在未经过任何处理的情况 下,其效果等同于只发送一次。 5、多任务系统的优点很多,但( )不是其优点。 (A)将复杂的系统分解成相对独立的多个任务,达到分而制之的目 的,从而降低系统的复杂性; (B)便于保证系统的实时性; (C)需要增加功能:任务间的协调,同步和通信功能; (D)系统的模块化好,提高系统的可维护性。 6、 以下关于任务分类的描述,不正确的是( ) (A)按照到达情况的可预测性,任务可划分为周期任务和非周期任 务; (B)按照重要程度,任务可分为关键任务和非关键任务; (C)非关键任务如果没有得到及时执行,将会产生严重后果; (D)周期任务每隔一个固定的时间间隔就会执行一次。 7、运行任务被抢占的原因不包括( ) (A) 它唤醒了高优先级的任务 (B) 将自己挂起 (C) 有多个同优先级的就绪任务,运行的时间片到 (D) 优先级较低的中 断产生并处理中断 10. 关于中断服务程序的编写原则,以下哪个是不正确的:( ) (A)中断服务程序要尽量地简短,只完成必要的处理工作; (B)中断服务程序中可以调用操作系统提供的一些服务; (C)中断服务程序中可以与任务相同的方式使用操作系统的服务; (D)中断服务程序中可以打开系统的中断响应,以支持中断嵌套。 三、简单题 1、目前使用的嵌入式操作系统主要有那些?请举出六种常用的。 Windwos CE、Windows Mobile、VxWork、Linux、uCos、Symbian、 QNX 2、根据嵌入式系统的特点、写出嵌入式系统的定义 答:以应用为中心,以计算机技术为基础,软硬件可裁剪、功能、 可靠性、成本、体积、功耗严格要求的专用计算机系统 3、分析抢占式和非抢占式的区别 执行的过程中对中断的处理方式不一样。抢占式:某一中断执行完 成后,如果有更高优先级的任务处于就绪状态,将执行更高优先级的任 务,而非抢占式不一样,一个任务只有主动放弃CPU控制权,其他任务 才能够获得CPU的控制权。 4. OS_ENTER_CRITICAL() 和 OS_EXIT_CRITICAL()的含义及作用? 答:OS_ENTER_CRITICAL() :关中断; OS_EXIT_CRITICAL():开中断。 关中断和开中断是为了保护临界段代码。 5uC/OS-II的任务框架 答: void task_xxx(void *pData) /* 该任务的初始化工作 */ /* 进入该任务的死循环 */ while(1) 6、uC/OS-II的三类事件 (1)中断服务函数发送的事件 (2)系统延时时间到所引起的 (3)其它任务 发送的事件。 7 与共享资源打交道时,使之满足互斥条件最一般的方法包括哪些? 答: 包括:关中断、使用测试并置位指令、禁止做任务切换、利用信号量 等。 8. 描述利用C/OS_ 宏调用关中断和开中断处理共享数据的示意性代 码程序。 答: OS_ENTER_CRITICAL(); /*在这里处理共享数据*/ OS_EXIT_CRITICAL(); 9. 信号量的典型应用包括哪些? 答: 信号量(Semaphores) 是一种约定机制,在多任务内核中的典型应用包 括: (1) 控制共享资源的使用权(满足互斥条件); (2) 标志某事件的发 生 (3) 使两个任务的行为同步 10对信号量只能实施哪三种操作? 答: 一般地说,对信号量只能实施三种操作: (1) 初始化(INITIALIZE),也可称作建立(CREATE); (2) 等信号(WAIT)也可称作挂起(PEND); (3) 给信号(SIGNAL)或发信 号(POST)。 11.给出C/OS-中如何用信号量处理共享数据的示意代码? 答: 通过获得信号量处理共享数据的示意代码如下: OS_EVENT *SharedDataSem; void Function (void) INT8U err; OSSemPend(SharedDataSem, 0, /*共享数据的处理在此进行,(中 断是开着的)*/ OSSemPost(SharedDataSem); 11.给出初始化和启动C/OS-的示意代码。 答: void main (void) OSInit(); /* 初始化uC/OS-II */ . 通过调用OSTaskCreate()或OSTaskCreateExt()创建至少一个任务; . OSStart(); /* 开始多任务调度!OSStart()永远不会返回 */ 12任务可以是一个无限的循环,也可以是在一次执行完毕后被删除 掉。 请给出示意代码结构。 答:C/OS-描述的任务示意代码必须是以下两种结构之一: void YourTask (void *pdata) for (;) /* 用户代码 */ 调用C/OS-的服务例程之一: OSMboxPend(); OSQPend(); OSSemPend(); OSTaskDel(OS_PRIO_SELF); OSTaskSuspend(OS_PRIO_SELF); OSTimeDly(); OSTimeDlyHMSM(); /* 用户代码 */ 或 void YourTask (void *pdata) /* 用户代码 */ OSTaskDel(OS_PRIO_SELF); 14C/OS-任务管理提供哪些服务? 答:C/OS-任务管理提供的服 务包括: (1)建立任务:OSTaskCreate()或OSTaskCreateExt(); (2)删除任务: OSTaskDel(); (3)请求删除任务:OSTaskDelReq(); (4)改变任务的优先级:OSTaskChangePrio(); (5)挂起任务: OSTaskSuspend(); (6)恢复任务:OSTaskResume(); (7)获得有关任务的信息:OSTaskQuery()。 15C/OS-时间任务管理提供哪些服务? 答:C/OS-时间任务管理 提供的服务包括: (1) 任务延时函数:OSTimeDly() (2) 按时分秒延时函数:OSTimeDlyHMSM() (3) 让处在延时期的任务结束延时:OSTimeDlyResume() (4) 设置系 统时间:OSTimeGet() (5) 获得系统时间:OSTimeSet() 16. C/OS-提供的数据共享和任务通讯的方法包括哪些? 答:C/OS-提供的数据共享和任务通讯的方法包括五种方法: (1) 利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来关闭中断和 打开中断。 (2) 利用函数OSSchedLock()和OSSchekUnlock()对C/OS-II中的任务调度函 数上锁和开锁。 (3) 信号量。 (4) 邮箱。 (5) 消息队列。 17对于事件控制块进行的一些通用包括哪些操作? 答:对于事件控 制块进行的一些通用操作包括: (1) 初始化一个事件控制块: OSEventWaitListInit(); (2) 使一个任务 进入就绪态:OSEventTaskRdy(); (3) 使一个任务进入等待该事件的状态:OSEventTaskWait(); (4) 因为等待超时而使一个任务进入就绪态:OSEventTO()。 18C/OS-信号量提供哪些服务? 答:C/OS-信号量提供的服务包 括: (1) 建立一个信号量:OSSemCreate(); (2) 等待一个信号量: OSSemPend(); (3)发送一个信号量:OSSemPost(); (4)无等待地请求一个信号量:OSSemAccept(); (5)查询一个信号 量的当前状态:OSSemQuery()。 19C/OS-邮箱提供哪些服务? 答:C/OS-邮箱提供的服务包括: (1)建立一个邮箱:OSMboxCreate(); (2)等待一个邮箱中的消息:OSMboxPend(); (3)发送一个消息到 邮箱中:OSMboxPost(); (4)无等待地从邮箱中得到一个消息:OSMboxAccept(); (5)查询 一个邮箱的状态:OSMboxQuery() 20C/OS-消息队列提供哪些服务? 答:C/OS-消息队列提供的服 务包括: (1)建立一个消息队列:OSQCreate(); (2)等待一个消息队列中的消息:OSQPend(); (3)向消息队列发送 一个消息(FIFO):OSQPost(); (4)向消息队列发送一个消息 (LIFO):OSQPostFront(); (5)无等待地从一个消息队列中取得消 息:OSQAccept(); (6)清空一个消息队列:OSQFlush(); (7)查询一个消息队列的状态:OSQQuery()。 21C/OS-内存管理提供哪些服务? 答:C/OS-内存管理提供的服 务包括: (1) 建立一个内存分区:OSMemCreate(); (2) 分配一个内存块: OSMemGet(); (3) 释放一个内存块:OSMemPut(); (4) 查询一个内存分区的状态:OSMemQuery()。 22移植C/OS-时,要使C/OS-正常运行,处理器必须满足哪些基 本要求? 答:要使C/OS-正常运行,处理器必须满足以下要求: (1) 处理器的C编译器能产生可重入代码。 (2) 用C语言就可以打开和关闭 中断。 (3) 处理器支持中断,并且能产生定时中断(通常在10至100Hz之间)。 (4) 处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈。 (5) 处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的 指令。 四、名词解释 1代码的临界段 代码的临界段也称为临界区,指处理时不可分割的代码。 2资源 任何为任务所占用的实体都可称为资源。资源可以是输入输出设备;资 源也 可以是一个变量,一个结构或一个数组等。 3共享资源 可以被一个以上任务使用的资源叫做共享资源。 4任务 一个任务,也称作一个线程,是一个简单的程序,该程序可以认为CPU 完全只属该程序自己。典型地、每个任务都是一个无限的循环。 5任务切换 指Context Switch,其含义是CPU寄存器内容切换。当多任务内核决定运 行另外的任务时,它保存正在运行任务的当前状态(Context),即CPU 寄存器中的全部内容。 6内核 多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时 间,并且负责任务之间的通讯。内核提供的基本服务是任务切换。 7调度(Scheduler) 内核的主要职责之一,就是要决定该轮到哪个任务运行了。多数实时内 核是基于优先级调度法的。 8可剥夺型内核 最高优先级的任务一旦就绪,总能得到CPU的控制权。当一个运行着的 任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权 就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的 控制权。如果是中断服务子程序使一个高优先级的任务进入就绪态,中 断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。 9、RTOS(实时操作系统)scheduler(调度) 15、OSTaskSuspend (self)可把正在运行的任务 挂起 ,参数self指 任务 本身 。 用此函数挂起的任务可通过 OSTaskResume 函数唤醒。 16、创建信号量OSSemCreat(0)函数中,参数0表示 信号量的初始值 。 17、若一个优先级为35的任务就绪,则在就绪表中,OSRdyTbl的 2 置位,变量OSRdyGrp的 4 置位。 五、论述题 1. 论述C/OS-控制下的任务状态转换图 答:C/OS-控制下的任务 状态转换图如下图所示。 在任一给定的时刻,任务的状态一定是在这五种状态之一。 (1) 睡眠态(DORMANT):指任务驻留在程序空间之中,还没有交给 C/OS- 管理。一个任务可以通过调用OSTaskDel()返回到睡眠态,或通过调用该 函数让另一个任务进入睡眠态。 (2) 就绪态(READY):当任务一旦建立,这个任务就进入就绪态准备运行。 把 任务交给C/OS-是通过调用下述两个函数之一:OSTaskCreate()或 OSTaskCreateExt()。 (3) 运行态(RUN): 调用OSStart()可以启动多任务。OSStart()函数运行进入 就 绪态的优先级最高的任务。 (4) 等待状态(WAITING): 正在运行的任务可以通过调用两个函数之一将自 身延迟一段时间,这两个函数是OSTimeDly()或OSTimeDlyHMSM()。这个 任务于是进入等待状态,等待这段时间过去,下一个优先级最高的、并 进入了就绪态的任务立刻被赋予了CPU的控制权。正在运行的任务期待 某一事件的发生时也要等待,手段是调用以下3个函数之一: OSSemPend(),OSMboxPend(),或OSQPend()。调用后任务进入了等待状 态(WAITING)。 (5) 中断状态(ISR): 正在运行的任务是可以被中断的,除非该任务将中断 关 了,或者C/OS-将中断关了。被中断了的任务就进入了中断服务态 (ISR)。 1、试分析实时操作系统的工作特点及相互之间的转换 运行:获得CPU的控制权 就绪:进入任务等待队列,通过调度中转为运行状态 挂起:由于系统函数调用而被设置成挂起状态,任务发生阻塞,等 待系统实时事件的发生而被唤醒,从而转为就绪或运行。 休眠:任务完成或者错误被清除的任务,该任务此时不具有任务控 制块。 4. 什么是优先级反转?(6分) 5. 嵌入式实时操作系统采用了那些机制提高系统的实时性与确定性?并 简要说明。(9分) 6. 么是优先级反转?有哪些方法可以避免优先级反转?请简要对它们进行 说明。(6分) 7. 举例说明COS-II可移植型数据类型的定义方式 答:因为不同的微处理器有不同的字长,C/OS-II的移植文件包括很多 类型定义以确保可移植性。COS-II不使用C语言中的short,int,long等数据 类型的定义,因为它们与处理器类型有关,隐含着不可移植性。C/OS- II代之以移植性强的整数数据类型,这样,既直观又可移植(该数据类型 不依赖于编译),举例如下: typedef unsigned char BOOLEAN; typedef unsigned char INT8U; typedef signed char INT8S; typedef unsigned int INT16U; typedef signed int INT16S; typedef unsigned long INT32U; typedef signed long INT32S; 8. COS-II如何定义全局变量? 答:众所周知,全局变量应该是得到内存 分配且可以被其他模块通过C语言中extern关键字调用的变量。因此,必 须在 .C 和 .H 文件中定义。这种重复的定义很容易导致错误。COS-II采 用的方法只需用在头文件中定义一次。 uC/OS_II.H 头文件中包括以下定 义全局宏定义: #ifdef OS_GLOBALS #define OS_EXT #else #define OS_EXT extern #endif OS_EXT INT32U OSIdleCtr; 同时,uCOS_II.H有中以下定义: #define OS_GLOBALS #include “includes.h” 当编译器处理uCOS_II.C时,它使得头文件变成如下所示,因为OS_EXT被 设置为空。 INT32U OSIdleCtr; 这样编译器就会将这些全局变量分配在内存中。当编译器处理其他.C文 件时,头文件变成了如下的样子,因为OS_GLOBAL没有定义,所以 OS_EXT被定义为extern。 extern INT32U OSIdleCtr; 在这种情况下,不产生内存分配,而任何 .C文件都可以使用这些变量。 这样的就只需在 .H 文件中定义一次就可以了。 1.C/OS-II系统任务按照执行方式分类可分为几种,请列举并简单说明其 特点。2.简述互斥信号量及其用途。 单次执行类 周期执行类 事件触发类 在日常生活中,出租车是一种常用的共享资源,当出租车载客时,从外 面可以看到标识为载客;当空闲时,标识为空车。这样等车的人就可以 根据标识知道出租车的当前状态,判断是否能够座上这辆车。这个标识 牌就是一个二值信号量。由于这种二值信号量可以实现对共享资源的独 占式处理,所以叫做互斥信号量。 互斥信号量也称为mutex,专用于资源同步。互斥信号量具有一些特 性:占用一个空闲优 先级,以便解决优先级反转问题 六、程序分析题 1 (7分)在ucOS的优先级位图算法中,处于就绪状态任务的优先级,通过 优先级就绪组OSRdyGrp和优先级就绪表OSRdyTbl进行管理: (1)基于C语言,给出OSRdyGrp和OSRdyTbl的变量定义; (2)从进入就绪态、退出就绪态和获取当前处于就绪态的最高优先级 等三个方面,描述优先级位图算法管理就绪任务的基本方法; (3)对于优先级分别为7、20和18的三个任务,分别描述三个任务依 次进入就绪态时的OSRdyGrp及OSRdyTbl的值(假设初始 OSRdyGrp=0b00000001,OSRdyTbl0=0b00010000,OSRdyTbl1-7= 0b00000000); (4)当这三个任务都处于就绪状态时,判断出当前处于就绪态的最高 优先级。 23、有两个任务代码如下,其中Task_A、Task_B的优先级分别为:28、 37。分析LCD 上的显示结果。 Void Task_A() ClearScreen(); LCD_Printf(“task1 is running!n”); OSTimeDly(400); Void Task_B() ClearScreen(); LCD_Printf(“hello task2! n”); OSTimeDly(160); 在LCD上的显示结果为: 第一次:_ task1 is running!_ 第二次:_ hello task2!_ 第三次:_ hello task2!_ 第四次:_ task1 is running!_ 第五次:_ hello task2! _ 第六次:_ hello task2! _ 25、下面程序是多任务中信号量的典型应用,阅读程序,分别画出各个 任务的程序流 程图,并说明程序要实现的功能什么。 OS_EVENT *math_Sem; int source,dest; math_Sem=OSSemCreate(0); void task1() source = 8; OSSemPost(math_Sem); void task2() U8 err; OSSemPend(math_Sem,0, dest = source; source =0; Task1: 给source赋值 对于math_Sem调用OSSemPost函数: C 检查是否有任务在等待该信号量,如果没有,将信号量的计数值加1 并返回; C 如果有,将优先级最高的任务从等待任务列表中删除,并使 它进入就绪状态; C 调用OSSched(),判断是否需要进行任务切换。 Task2: 申请信号量资源,调用OSSemPend函数: C 如果信号量的计数值大于0,将它减1并返回; C 如果信号量的值等于0,则调用本函数的任务将被阻塞起来,等待另 一个任务把它唤醒; C 调用OSSched()函数,调度下一个最高优先级的任务运行。 将source的 值传给dest,source清零 该程序是一个操作系统中PV操作的演示程序,其中Task1为V操作,添加 信号量的值,Task2为P操作,等待一个信号量,将信号量减1。程序的 运行结果为dest=8,source值为0。 26、下面程序是消息循环在多任务中的应用实例,仔细阅读程序,画出 程序流程图,并说明程序要实现的功能是什么。(假设回车键的键值为 14) void task1() POSMSG pMsg=0; for(;) pMsg=WaitMessage(0); switch(pMsg-Message) case OSM_KEY: onKey(pMsg-WParam,pMsg-LParam); break; DeleteMessage(pMsg); onKey(int nkey, int fnkey) switch(nkey) case 14:/OK LCD_printf(“my name is XXX !n“); break; case 7:/Cancel LCD_Cls(); break; Task1: 1.等待消息 2.如果消息类型为OSM_KEY 3.对于消息调用OnKey函数 4.跳出循环 5.删除消息 6.跳到1 流程图略 该程序是一个键盘消息处理函数,Task1等待来自键盘的消息,一旦有 键盘消息就调用Onkey函数,由OnKey函数进行具体的键盘事件处理, 如果键值为14(enter键)就输出文本,如果是键值为7就清屏。 22在使用OSTaskCreate创建任务时,若需要TaskData作伪参数传递给 任务Task,并从任务Task中获得传入的字符参数值,请在下面( )填上 合适的代码。 char TaskData=A; OSTaskCreate(Task, ((void *) void Task (void *pdata) char value = ( *(char *)pdata ); for (;) OSSemPend(RandomSem, 0, y = (int) (*(char *)pdata - A); OSSemPost(RandomSem); PC_DispChar(10, 25, value, DISP_FGND_WHITE + DISP_BGND_BLUE); OSTimeDly(1); 23. 在C/OS-II在任务Task1中使用邮箱函数OSMboxPost()发送字符; 而在Task2中接收OSMboxPost()字符, 请在下面( )填上合适的代 码。 void Task1 (void *data) char txmsg; INT8U err; txmsg = A; for (;) OSMboxPost(TxMbox, ( (void *) /* Send message to Task2*/ OSMboxPend(AckMbox, 0, txmsg+; if (txmsg = Z) txmsg = A; void Task5 (void *data) char *rxmsg; INT8U er

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论