《嵌入式系统原理与接口技术考试题库.doc》由会员分享,可在线阅读,更多相关《嵌入式系统原理与接口技术考试题库.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、优质文本1.什么是操作系统?它应具备什么功能?管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石.1.操作系统是计算机硬件的封装和扩充2.操作系统是计算机资源的管理者,包括处理器管理、存储器存储空间管理、外部输入输出()设备管理、文件管理、网络和通信管理、提供用户接口。2嵌入式操作系统与普通操作系统区别嵌入式操作系统具有通用操作系统的根本特点,但嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点3什么是实时系统?对实时系统有什么要求?如果一个系统能及时响应外部事件的请求,并能在规定的时间内完成对事件的处理,这种系统称为实时系统. 1.
2、实时系统的计算必须产生正确的结果,称为逻辑或功能正确.2.实时系统的计算必须在预定的时间内完成.称为时间正确.4可剥夺内核:当一个进程正在被处理器所运行时,其他就绪进程可以按照事先规定的规定的规那么,强行剥夺正在运行进程的处理器使用权,而使自己获得处理器使用权并得以运行6一个应用程序为什么一定要使用空闲任务在多任务系统运行时,系统经常会在某个时间内无用户任务运行而处于空闲状态,为了使在此时有事可作,提供空闲任务。空闲任务是不能被软件删除的7统计任务是必须使用的吗?简述它的功能用户应用程序可根据实际需要来选择是否使用统计任务。每秒计算一次在单位时间内被使用的时间,并把计算结果以百分比的形式存放在
3、变量中,以便应用程序通过访问它来了解的利用率.8什么是任务的优先权?是用什么来描述任务的优先权的。处于就绪态的任务优先获取其他任务使用权的能力。 是按可剥夺型内核来设计的,为此,每一个任务都必须具有唯一的优先级别,用来表示该任务在抢夺处理器时所具有的优先权力,共有64个优先级别,用数字“0“63表示,数字“0所表示的优先级最高9在中任务有哪5种状态?分别简述 5个状态的特征:睡眠状态:任务只是以代码的形式驻留在内存,还没有交给操作系统管理.就绪状态:任务配备了任务控制块且在任务就绪表中登记,具备了任务运行的充分条件.运行状态:处于就绪状态的任务获得了的使用权,任何时候只有一个任务处于运行.等待
4、状态:正在运行的任务,把的使用权让给其他任务.中断效劳状态:正在运行的任务一旦响应中断申请,就会中止运行而去执行中断效劳程序.10任务控制块记录了任务的那些信息包括任务堆栈的各种指针及数目,任务优先级,任务的状态标志参数等。11什么是空任务控制块链表?什么是任务控制块链表?空任务块链表,其中所有任务控制块还没有分配给任务;任务控制块链表,其中所有任务块已经分配给任务16的中断响应过程: 系统接收到中断请求后,如果这是处于中断允许状态,系统会中止正在运行的当前任务,而按照中断向量的指向转而去运行中断效劳子程序;当中断效劳子程序的运行结束后,系统会根据情况返回到被中止的任务,或转向更高优先级的任1
5、7全局变量的作用: 记录中断嵌套的层数。18操作系统的时钟:操作系统中特定的周期性中断为系统提供时间依据。19在中,时钟节拍效劳做了什么工作?时钟节拍效劳做了:可以使人物延时假设干个整数的时钟节拍以及当任务等待事件发生时提供等待超时依据。20说明延时函数()与()的区别: ():时钟节拍数;():按照时 分 秒的设置延时21使用信号量可在应用程序中完成哪些工作?任务间通信 完成共享资源的访问 任务的同步执行22什么叫优先级反转?这种现象什么情况下发生?有什么危害?在可剥夺型内核中,当任务以独占方式使用共享资源时,会出现低优先级任务先于高优先级任务而被运行的情况。称优先级反转。 一个低优先级任务
6、在获得信号量使用共享资源期间,被高优先级任务所打断而不能释放信号量,从而使正在等待该信号量的高优先级任务因得不到信号量而被迫处于等待状态。在等待期间,就让占据该信号量的低优先级任务先运行 如果这种情况发生较多,那么会极大地恶化优先级任务地运行环境。23互斥型信号量是如何防止优先级反转的?在低优先级的任务要使用共享资源前 将其优先级提升到高于可能使用该共享资源的任务优先级,使用完共享资源后在讲其优先级恢复到原值。25 1为什么要定义信号量集?在实际运用中,任务常常需要与多个事件同步,即要根据多个信号量组合作用得结果来决定任务得运行方式。信号量集就是实现这种功能的数据结构。26信号量集所管理的是什
7、么信号?信号量集所管理的信号量都是二值信号。它实质上是一种可以对多个输入的逻辑信号进行根本逻辑运算“与运算),“或运算()的组合逻辑。27使用信号量集可以在程序中完成哪些工作?信号量集 用一个双向链表来组织等待任务,每一个等待任务都是该链表中的一个节点28什么叫内存分区?什么叫内存块?内存分区与内存块之间有什么关系?内存分区与内存块:操作系统将大片连续的内存分区管理,每个分区内含有整数个大小相同的内存块29在同一个内存分区中内存块是按什么方式组织起来的?每个分区又分成假设干大小相等的内存块来进行管理30什么叫内存控制块?它记录了一些什么信息?内存控制块是由为每个内存分区定义的一个数据结构。系统
8、用它来记录和跟踪每一个内存分区的状态。嵌入式系统 是以应用为中心,以计算机技术为根底,且软硬件可裁减,适应应用系统对功能、可靠性、本钱、体积、功耗有严格要求的专用计算机系统。它一般由以下几局部组成: 嵌入式微处理器 外围硬件设备 嵌入式操作系统 特定的应用程序特点:应用的特定性和广泛性 技术、知识、资金的密集性 高效性 较长的生命周期 高可靠性 软硬一体,软件为主 无自举开发能力简介特点之一是:结构小巧。包含全部功能的核心局部代码只占用8.3K字节,同时由
9、于是可裁剪的,所以用户系统中实际的代码最少可达2.7K字节。特点之二:是一个真正的实时操作系统。实时操作系统一般定义为“一个能够在指定的或者确定的时间内,完成系统功能和对外部或内部、同步或异步事件做出响应的系统。特点之三是:实际上是一个实时操作系统内核,只包含了任务调度、任务管理、时间管理、内存管理和任务间的通信与同步等根本功能。12、简述的主要特点。可移植性:的源代码绝大局部是使用移植性很强的 C写的,将与微处理器硬件相关的汇编语言使用量压缩到最低的限度,以使便于移植到其它微处理器上。可剪裁:使用条件编译实现可剪裁。占先式:是占先式实时内核,总是运行就绪条件下优先级最高的任务。多任务:可以管
10、理64个任务,其中8个作为系统保存,所以实际用户可使用的为56个任务。可确定性:的函数调用与系统效劳的执行时间是可知的。任务栈:的每个任务都有自己单独的栈。中断管理:允许中断嵌套层数可达255层。 13、简述实时内核中任务调度器的原理。根据组变量、表变量得到优先级最高的任务,通用公式是:3+ 。这里为组变量,为表变量。14、说明函数()、()的主要任务。()的主要任务就是定期将时间延时项减1,直至为0。任务延时函数(),可置任务控制块的值为所需要的,一旦对某个任务调用了()函数,那么该任务将被挂起,直到被减为0。15、简述解决互斥的3种方法,它们各有何优缺点。常用的解决互斥的3种方法包括:关闭
11、中断法,进程在进入临界区后立即关中断,在离开时开中断,这样就可以简单的实现任务互斥。优点:这是实现互斥最简单的方法。缺点:把禁止中断的权利交给用户进程很危险,假设一个进程禁止中断后不再翻开中断,整个系统会因此而中止。锁变量法,对临界资源设置一个锁变量,初值为0。缺点:是忙等待的解决方案,会浪费大量的时间。信号量法,设置一个初值为1的信号量便能很好的解决互斥问题。这种方法是迄今最完全的解决方案。16、信号量是如何实现同步的?信号量能很好的解决同步问题,为此,必须进行如下设置这样的安排是保证进程同步的关键:设置一个初值为0 的信号量;在进程A的同步点X处安排关于信号量的P操作;在进程B的Y处安排关
12、于信号量的V操作。中断:任务在运行过程中,应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程叫做中断。中断效劳程序:应中断请求而运行的程序叫中断效劳子程序()。中断向量:中断效劳子程序的入口地址叫中断向量。 响应中断的条件: 至少有一个中断源向发出中断信号 系统允许中断,且对此中断信号未予屏蔽任务间的同步依赖于任务间的通信。在中,使用信号量、邮箱和消息队列这些被称作事件的中间环节来实现任务间的通信。使用信号量的目的:为共享资源设立一个表示该共享资源被占用情况的标志。在实际应用中,任务常常需要于多个事件同步,即根据多个信号量组合作用的结果来决定任务的运行方式。信号量集所能
13、管理的信号量一般都是二值信号。请求信号量集的任务得以继续运行的条件与所请求的信号量之间有两种逻辑关系:和。的任务有5种状态睡眠态: 任务以代码形式驻留在程序空间,还没有交给管理,即还没有配备任务控制块,还没有被创立。就绪态(): 系统为任务配备了任务控制块,且在任务就绪表中就行了就绪登记。运行态(): 正在使用的状态称运行态。 等待态():等待一段时间或某事件发生再运行的状态。 中断效劳态():正在运行的任务被中断时就进入了中断效劳态。 任务控制块 , 是 用来存储任务堆栈指针、当前状态、优先级及任务链表指针等属性的一个数据结构。 创立任务时,必须创立任务控制块,通过控制块初始化函数()完成,
14、其做三件事:从空任务控制块链表获取一个任务控制块;用任务的属性对任务控制块各个成员进行赋值;把这个任务控制块链入到任务控制块链表。1、任务的存储结构主要由哪三局部组成?答:任务程序代码,任务堆栈,任务控制块。 预定义了两个为应用程序效劳的系统任务:空闲任务和统计任务,其中空闲任务是每个程序必须使用的,而统计任务是应用程序可根据实际情况需要选择使用。任务删除函数: 8U (8U );时钟:任务操作系统都要提供一个周期性的信号源,以供系统提供处理诸如任务的等待,延时等与时间有关的事件,这个周期性的信号源叫时钟。最小的的时钟单位就是两次中断之间间隔的时间,这个最小时钟单位叫着时钟节拍 事件控制块:为
15、了把描述的事件的数据结构统一起来,把事件等待任务表和与事件相关的其他信息组合起来定义了一个叫着事件控制块的的数据结构。什么是任务切换?任务切换时主要完成哪些工作? 答:中止正在运行的任务,转而去运行另外的一个任务的工作。也就是暂停现行任务,去完成另一个任务。6 与共享资源打交道时,使之满足互斥条件最一般的方法包括哪些?答:包括:关中断、使用测试并置位指令、禁止做任务切换、利用信号量等。7. 描述利用 宏调用关中断和开中断处理共享数据的示意性代码程序。答: ()*在这里处理共享数据*();8. 信号量的典型应用包括哪些?答:信号量() 是一种约定机制,在多任务内核中的典型应用包括:(1) 控制共
16、享资源的使用权(满足互斥条件);(2) 标志某事件的发生(3) 使两个任务的行为同步9对信号量只能实施哪三种操作?答:一般地说,对信号量只能实施三种操作:(1) 初始化(),也可称作建立();(2) 等信号()也可称作挂起();(3) 给信号()或发信号()。(4) () 和 ()的含义及作用?答:() :关中断;():开中断。关中断和开中断是为了保护临界段代码。用户的应用代码可以使用这两个宏来开中断和关中断。很明显,关中断会影响中断延迟,所以要特别小心。用户还可以用信号量来保护临界段代码。4基于的效劳中如何测量()的执行时间?答:测量()的执行时间的代码如下:16U ; 定义时间变量();
17、时钟初始化(); 开始计时(40, 24, A, ); 执行代码 = (); 结束计时5的任务框架答: ( *)/* 该任务的初始化工作 */* 进入该任务的死循环 */(1) 事件驱动模型也涵盖了中断驱动模型,事件归根结底来自三个方面:(1)中断效劳函数发送的事件(2)系统延时时间到所引起的(3)其它任务发送的事件。填空题1是一个简洁、易用的 基于优先级的嵌入式【 抢占式 】多任务实时内核。2.任务是一个无返回的无穷循环。总是运行进入就绪状态的【 最高优先级 】的任务 。3.因为总是运行进入就绪状态的最高优先级的任务。所以,确定哪个任务优先级最高,下面该哪个任务运行,这个工作就是由【调度器】
18、来完成的。4.【 任务级 】的调度是由函数()完成的,而【 中断级 】的调度是由函数() 完成。对于(),它内部调用的是【 ()】 完成实际的调度;()内部调用的是【 () 】实现调度。5.任务切换其实很简单,由如下2步完成:1将被挂起任务的处理器存放器推入自己的【 任务堆栈 】。2然后将进入就绪状态的最高优先级的任务的存放器值从堆栈中恢复到【存放器 】中。6 任务的5种状态。【睡眠态( ) 】:任务驻留于程序空间或中,暂时没交给处理。【就绪态 】:任务一旦建立,这个任务就进入了就绪态。【运行态 】:调用可以启动多任务。函数只能调用一次,一旦调用,系统将运行进入就绪态并且优先级最高的任务。【等
19、待状态 】:正在运行的任务,通过延迟函数或挂起相关函数后,将进入等待状态。【中断状态 】:正在运行的任务是可以被中断的,除非该任务将中断关闭或者将中断关闭。7【 不可剥夺型 】内核要求每个任务自我放弃的所有权。不可剥夺型调度法也称作合作型多任务,各个任务彼此合作共享一个。8当系统响应时间很重要时,要使用【 可剥夺型 】内核。最高优先级的任务一旦就绪,总能得到的控制权。9使用可剥夺型内核时,应用程序不应直接使用不可重入型函数。调用不可重入型函数时,要满足互斥条件,这一点可以用【 互斥型信号量 】来实现。10【 可重入型 】函数可以被一个以上的任务调用,而不必担忧数据的破坏。11可重入型函数任何时
20、候都可以被中断,一段时间以后又可以运行,而相应数据不会丧失。可重入型函数或者只使用【 局部变量 】,即变量保存在存放器中或堆栈中。如果使用全局变量,那么要对全局变量予以【 保护 】。12每个任务都有其优先级。任务越重要,赋予的优先级应【 越高 】。13初始化是通过调用系统函数【()】实现的,完成所有的变量和数据结构的初始化。14多任务的启动是用户通过调用【()】实现的。然而,启动之前,用户至少要建立一个应用【任务】。15. 的参数配置文件名为【】。16 删除任务,是说任务将返回并处于【休眠状态】,并不是说任务的代码被删除了,只是任务的代码不再被调用。17要求用户提供【定时中断】来实现延时与超时
21、控制等功能。18定时中断也叫做【时钟节拍】,它应该每秒发生10至100次。19. 时钟节拍的实际频率是由用户的应用程序决定的。时钟节拍的频率越高,系统的负荷就【越重】。20中的信号量由两局部组成:一个是信号量的【计数值】,它是一个16位的无符号整数0 到65,535之间;另一个是由等待该信号量的任务组成的【等待任务表】。用户要在中将开关量常数置成【 1 】,这样才能支持信号量。21. 中表示当前已经创立的任务数全局变量名为:【 】。21. 中表示当前内核运行的标记全局变量名为:【 】。二 名词解释1代码的临界段 代码的临界段也称为临界区,指处理时不可分割的代码。2资源 任何为任务所占用的实体都
22、可称为资源。资源可以是输入输出设备;资源也可以是一个变量,一个结构或一个数组等。3共享资源 可以被一个以上任务使用的资源叫做共享资源。4任务 一个任务,也称作一个线程,是一个简单的程序,该程序可以认为完全只属该程序自己。典型地、每个任务都是一个无限的循环。5任务切换 指 ,其含义是存放器内容切换。当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态,即存放器中的全部内容。6内核 多任务系统中,内核负责管理各个任务,或者说为每个任务分配时间,并且负责任务之间的通讯。内核提供的根本效劳是任务切换。7调度 内核的主要职责之一,就是要决定该轮到哪个任务运行了。多数实时内核是基于优先级调度法的
23、。8可剥夺型内核 最高优先级的任务一旦就绪,总能得到的控制权。当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了的控制权。如果是中断效劳子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。()函数需要用户移植实现,主要内容如下:1. 把全部 存放器(包括堆栈指针存放器和 存放器)推入当前任务堆栈; 2. 调用 ()函数; 3. = ; 4. = ; 5. 设置处理器的堆栈指针存放器为 ; 6. 恢复所有处理器的存放器内容(不包括堆栈指针存放器和 存放器); 7. 恢复 存
24、放器并开始执行 指向的指令。三简答题1. 举例说明可移植型数据类型的定义方式 答:因为不同的微处理器有不同的字长,的移植文件包括很多类型定义以确保可移植性。不使用C语言中的等数据类型的定义,因为它们与处理器类型有关,隐含着不可移植性。代之以移植性强的整数数据类型,这样,既直观又可移植(该数据类型不依赖于编译),举例如下: ; 8U; 8S; 16U; 16S; 32U; 32S;2. 如何定义全局变量?答:众所周知,全局变量应该是得到内存分配且可以被其他模块通过C语言中关键字调用的变量。因此,必须在 和 文件中定义。这种重复的定义很容易导致错误。采用的方法只需用在头文件中定义一次。 头文件中包
25、括以下定义全局宏定义: 32U ;同时,有中以下定义: “当编译器处理时,它使得头文件变成如下所示,因为被设置为空。32U ;这样编译器就会将这些全局变量分配在内存中。当编译器处理其他文件时,头文件变成了如下的样子,因为没有定义,所以被定义为。 32U ;在这种情况下,不产生内存分配,而任何 文件都可以使用这些变量。这样的就只需在 文件中定义一次就可以了。10.给出中如何用信号量处理共享数据的示意代码?答:通过获得信号量处理共享数据的示意代码如下: *; ()8U ;(, 0, );/*共享数据的处理在此进行,(中断是开着的)*/();11.给出初始化和启动的示意代码。答: () (); /*
26、 初始化 */ 通过调用()或()创立至少一个任务; (); /* 开始多任务调度()永远不会返回 */12 描述建立任务()的函数原型。答:建立任务()的函数原型为:8U ( (*)( *), *, *, 8U )其中,: 任务代码的指针;: 当任务开始执行时传递给任务的参数的指针;: 分配给任务的堆栈的栈顶指针;: 分配给任务的优先级。13任务可以是一个无限的循环,也可以是在一次执行完毕后被删除掉。请给出示意代码结构。答:描述的任务示意代码必须是以下两种结构之一: ( *) (;) /* 用户代码 */ 调用的效劳例程之一: (); (); (); (); (); (); (); /* 用
27、户代码 */ 或 ( *) /* 用户代码 */ ();14任务管理提供哪些效劳?答:任务管理提供的效劳包括:1建立任务:()或();2删除任务:();3请求删除任务:();4改变任务的优先级:();5挂起任务:();6恢复任务:();7获得有关任务的信息:()。15时间任务管理提供哪些效劳?答:时间任务管理提供的效劳包括:(1) 任务延时函数:()(2) 按时分秒延时函数:()(3) 让处在延时期的任务结束延时:()(4) 设置系统时间:()(5) 获得系统时间:()16. 提供的数据共享和任务通讯的方法包括哪些?答:提供的数据共享和任务通讯的方法包括五种方法:(1) 利用宏()和()来关闭
28、中断和翻开中断。(2) 利用函数()和()对中的任务调度函数上锁和开锁。(3) 信号量。(4) 邮箱。(5) 消息队列。17对于事件控制块进行的一些通用包括哪些操作?答:对于事件控制块进行的一些通用操作包括:1 初始化一个事件控制块: ();2 使一个任务进入就绪态:();3 使一个任务进入等待该事件的状态:();4 因为等待超时而使一个任务进入就绪态:()。18信号量提供哪些效劳?答:信号量提供的效劳包括:1 建立一个信号量:();2 等待一个信号量:();3发送一个信号量:();4无等待地请求一个信号量:();5查询一个信号量的当前状态:()。19邮箱提供哪些效劳?答:邮箱提供的效劳包括:
29、1建立一个邮箱:();2等待一个邮箱中的消息:();3发送一个消息到邮箱中:();4无等待地从邮箱中得到一个消息:();5查询一个邮箱的状态:()20消息队列提供哪些效劳?答:消息队列提供的效劳包括:1建立一个消息队列:();2等待一个消息队列中的消息:();3向消息队列发送一个消息:();4向消息队列发送一个消息:();5无等待地从一个消息队列中取得消息:();6清空一个消息队列:();7查询一个消息队列的状态:()。21内存管理提供哪些效劳?答:内存管理提供的效劳包括:(1) 建立一个内存分区:();(2) 分配一个内存块:();(3) 释放一个内存块:();(4) 查询一个内存分区的状态
30、:()。22移植时,要使正常运行,处理器必须满足哪些根本要求?答:要使正常运行,处理器必须满足以下要求:处理器的C编译器能产生可重入代码。(1) 用C语言就可以翻开和关闭中断。(2) 处理器支持中断,并且能产生定时中断(通常在10至100之间)。(3) 处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈。(4) 处理器有将堆栈指针和其它存放器读出和存储到堆栈或内存中的指令。22在使用创立任务时,假设需要作伪参数传递给任务,并从任务中获得传入的字符参数值,请在下面【 】填上适宜的代码。 A; (, 【( *)& 】, 0 - 1, 1); ( *) = 【 *( *) 】; (;) (,
31、0, ); y = () (*( *) - A); (); (10, 25, , + ); (1); 23. 在在任务1中使用邮箱函数发送字符;而在2中接收字符, 请在下面【 】填上适宜的代码。 1 ( *) ;8U ; = A; (;) (, 【 ( *)】); /* 2*/ (, 0, ); ; ( Z) = A; 5 ( *) *; 8U ; = ; (;) = 【( *)】(, 0, ); (70, 18, *, + ); (, ( *)1); 24. 在1中使用消息队列函数接收消息“ !,而在2中使用消息队列函数发送消息“ !, 请在下面【 】填上适宜的代码. 1 ( *) *; 8
32、U ; = ; (;) = 【( *)】(, 0, ); (70, 13, , + ); (0, 0, 0, 100); 2 ( *) 20; = ; (0, !); (;) (, 【( *)】0); (0, 0, 0, 500); 创立信号量集 *;8U; ().();. = ( () 0, 所有信号的初值为0 );.请求信号量集 ( *, 所请求的信号量集指针 , 滤波器 8U , 逻辑运算类型 16U , 等待时限 8U * 错误信息);向信号量集发信号 ( *, 信号量集指针 , 选择所要发送的信号8U , 信号有效的选项8U * 错误信息 );查询信号量集的状态 ( *, 待查询的信号量集的指针 8U * 错误信息 );删除信号量集 *( *, 待删除的信号量集的指针 8U * 错误信息 );两个创立任务的函数:()和()。8U ( (*)( *), 指向任务的指针 *, 传递给任务的参数 *,指向任务堆栈栈顶的指针8U )任务切换 三、(): : ()函数被各种任务间通信函数如 ()和 ()调用,()函数调用更底层的函 数 ()来实现任务切换,()函数的源代码如下: () 3 ; 8U y;(); ( 0) ; ( 0) y = ; = (8U)(y 3) + y); ( ) = ; ; (); ();