嵌入式实时操作系统考试复习

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章

1.什么是嵌入式操作系统?嵌入式系统有什么特点?

答:运行在嵌入式硬件平台上,对整个系统及其操作的部件、装置等资源进行统一协调、指控和控制的系统软件就叫嵌入式操作系统。特点:微型化、可剪裁性、实时性、高可靠性、易移植性

2.实时操作系统需要满足的条件:实时操作系统必须是多任务系统,任务的切换时间应与系统中的任务数无关,中断延迟的时间可预知并尽可能短。

3.什么是实时操作系统?

答:什么是实时?实时含有立即、及时之意。如果操作系统能使计算机系统及时响应外部事件的请求,并能及时控制所有实时设备与实时任务协调运行,且能在一个规定的事件内完成对事件的处理,那么这种操作系统就是一个实时操作系统。

4.内核的类型

答:不可剥夺型内核:也叫做合作型多任务内核,在这种内核中,总是优先级别高的任务最先获得CPU 的使用权。为防止某个任务霸占CPU的使用权,这种内核要求每个任务必须能主动放弃CPU的使用权。

可剥夺型内核:CPU总是运行多任务中优先级别最高的任务,即使CPU正在某个优先级低的任务,当有高优先级别的任务准备就绪时,该高级别的任务就会剥夺正在运行的CPU的使用权,而使自己获得CPU的使用权。

5.嵌入式操作系统的三项功能:内存管理、多任务管理、外围设备管理

第三章

1.任务有三个部分组成:任务程序代码、任务堆栈、任务控制块

2.具有自己的私有空间叫“进程”,无叫做“线程”。一个任务不是对应一个进程。

3.任务的状态:就绪状态:最多有9个、运行状态:只能有1个、等待状态:最多有9个

4.系统任务:为了与用户任务区别,这种系统自己所需要的任务就叫做系统任务。两个系统任务:空闲任务和统计任务,空闲任务是每个应用程序必须使用的,统计任务则是应用程序可以根据实际需要来选择

5.空闲任务:这个空闲任务几乎不做什么事情,只是对系统定义的一个空闲任务运行次数计数器进行加1操作。一个用户应用程序必须使用这个空闲任务,而且这个任务不能通过程序来删除。

6.统计任务:该任务每秒计算一次CPU在单位时间内被使用的时间,并把计算结果以百分比的形式存放在变量OSCPUsage中,以便其他应用程序来了解CPU的利用率。

7.任务的优先级别:可以创建最多64个任务,即0、1、2........63,数字越小,优先级越高

8.任务堆栈:任务堆栈是任务重要的组成部分。所谓堆栈,就是在存储器中按数据“后进先出”的原则组织的连续存储空间,为了满足任务切换和响应中断时保存CPU寄存器中的内容及任务调用其他函数时的需要,每个任务都应该配有自己的堆栈。任务堆栈中存放的是:CPU寄存器中的内容及存储任务私有数据。

9.任务控制块的作用:用来记录任务的堆栈指针、任务的当前状态、任务的优先级别等一些与任务管理有关的属性。任务控制块是一个结构类型数据,当用户创建一个用户任务时,就会对任务控制块中的所有成员赋予与该任务相关的数据,并驻留在RAM中。

10.任务控制块的初始化:当应用程序调用函数OSTaskcreate()创建一个任务时,这个函数会调用系统函数OSTCBInit()来为任务控制块进行初始化。OSTCBInit()函数的主要任务是:为被创建任务从空任务控制块链表获取一个任务控制块,用任务的属性对任务控制块各个成员进行赋值,把这个任务控制块链入到任务控制块链表。

11.任务调度的思想:近似的每时每刻让优先级最高的就绪任务处于运行状态。

12.任务调度器有两个任务:一是在任务就绪表中查找具有最高优先级别的就绪任务,二是实现任务的切换。两种任务调度器:一种是任务级的调度器,另一种是中断级的调度器。

13.任务是通过任务控制块进行管理,创建任务的工作实质上是创建一个任务控制块,并通过任务控制块把任务代码和任务堆栈关联起来形成一个完整的任务。

第四章

1.临界段:那些不希望被中断的代码段。从代码上看,处在关中断和开中断之间的代码段就是临界段。用OS_ENTER_CRITICAL( ) asm(“DI”)和OS_EXIT_CRITICAL( )asm(…EI‟)这两个宏封装了与系统硬件相关的关中断和开中断指令。

2.时钟:任何操作系统都要提供一个周期性的信号源,以供系统处理诸如延时、超时等与时间有关的事件,这个周期性信号源叫做时钟。是任务调度的基准。

3.μC/OS-II系统响应中断的过程为:系统接收到中断请求后,这时如果CPU处于中断允许状态(即中断是开放的),系统就会中止正在运行的当前任务,而按照中断向量的指向转而去运行中断服务子程序;当中断服务子程序的运行结束后,系统将会根据情况返回到被中止的任务继续运行或者转向运行另一个具有更高优先级别的就绪任务。

第五章

1.在μC/OS-II中,是使用信号量、邮箱(消息邮箱)和消息队列这些被称作事件的中间环节来实现任务之间的通信的。为了方便起见,这些中间环节都统一被称作事件。

2.信号量一般分为三种:用于解决互斥问题的互斥信号量。它比较特殊,可能会引起优先级反转问题。用于解决同步问题的二值信号量。用于解决资源计数问题的计数信号量

3.消息邮箱:在任务间传递数据的一个最简单的方法就是传递消息缓冲区的指针,用来传递消息缓冲区指针的数据结构就叫做消息邮箱。使用消息邮箱可以节省空间、使消息的传递速度大大增加、如果只传递一条消息的话,操作更为简单、消息邮箱可以适应不同数据需要。

4.为了把描述事件的数据结构统一起来,使用叫做事件控制块ECB的数据结构来描述诸如信号量、邮箱(消息邮箱)和消息队列这些事件。

5.在μC/OS-II初始化时,系统会在初始化函数OSInit( )中按应用程序使用事件的总数OS_MAX_EVENTS (在文件OS_CFG.H中定义),创建OS_MAX_EVENTS个空事件控制块并借用成员OSEventPtr作为链接指针,把这些空事件控制块链接成一个单向链表。由于链表中的所有控制块尚未与具体事件相关联,故该链表叫做空事件控制块链表。

6.在可剥夺型内核中,当任务以独占方式使用共享资源时,会出现低优先级任务先于高优先级任务而被运行的现象,这种现象叫做任务优先级反转。解决方法:优先级继承、优先级天花板(解决死锁和阻塞链)。

7.出现优先级反转的原因:一个优先级别较低的任务在获得了信号量使用共享资源期间,被具有较高优先级别的任务所打断而不能释放信号量,从而使正在等待这个信号量的更高级别的任务因得不到信号量而被迫处于等待状态,在这个等待期间,就让优先级别低于它而高于占据信号量的任务的任务先运行了。

8.解决优先级反转的方法:是使获得信号量任务的优先级别在使用共享资源期间暂时提升到所有任务最高优先级的高一个级别上,以使该任务不被其他的任务所打断,从而能尽快地使用完共享资源并释放信号量,然后在释放了信号量之后再恢复该任务原来的优先级别。

9.如果把数据缓冲区的指针赋给一个事件控制块的成员OSEventPrt,同时使事件控制块的成员OSEventType 为常数OS_EVENT_TYPE_MBOX,则该事件控制块就叫做消息邮箱,消息邮箱是在两个需要通信的任务之间通过传递数据缓冲区指针的方法来通信的。好处:使消息的传递速度大大增加、如果只传递一条消息的话,操作更为简单、消息邮箱可以适应不同数据需要。

10. μC/OS-II是基于优先级的抢占调度,特点:不用请求分页,不用虚拟存储

第七章

1.μC/OS-II对内存进行两级管理,即把一个大片连续的内存空间分成了若干个分区,每个分区又分成了若干个大小相等的内存块来进行管理。

2.内存控制块OS-MEN的结构:为了使系统能够感知和有效地管理内存分区,μc/os-ii给每个内存分区定义了一个叫做内存控制块(os_mem)的数据结构。系统就用这个内存控制块来记录和跟踪每个内存分区的状态。内存控制块的内存分区指针osmemaddr指向了内存分区,内存分区中的各个内存块又组成了一个单向链表,内存控制块的链表指针osmemfreelist就指向了这个单向链表的头。内存控制块的其他三个变量分别记录了分区中内存块的长度、总数目以及现在还未被分配的内存块数目。

3.μC/OS-II的可剪裁性:即只选用应用程序用到的功能,而不需要的功能则通过条件编译命令把它们剪裁掉(实质上就是令编译器不编译它们)

相关文档
最新文档