嵌入式论文讲解

  • 格式:doc
  • 大小:62.51 KB
  • 文档页数:10

嵌入式Linux内核实时性研究姓名:专业:学号:嵌入式Linux内核实时性研究摘要在嵌入式技术迅速普及的今天,Linux 操作系统,由于其开放源代码、高稳定性和低成本等特性,非常适合于嵌入式系统的开发,成为了嵌入式领域里发展最快的操作系统。

改进通用 Linux 操作系统的实时性能,使其更加适应嵌入式的应具有很大的实际意义,目前己经成为国内外计算机界的研究热点之一。

嵌入式 Linux 实时性研究,介绍了对 Linux 实时性的研究工作,对实时系统、实时操作系统及衡量实时操作系统重要指标以及对Linux内核的分析阐述。

关键词:嵌入式Linux,实时性目录摘要 (1)1实时系统概述 (3)1.1实时系统 (3)1.2实时操作系统(RTOS) (4)1.3有关 RTOS 的重要概念 (5)1.4衡量 RTOS 实时性能的重要指标 (6)1.5Linux内核 (8)1实时系统概述1.1实时系统实时系统在工业、商业和军事等领域都有非常广泛的用途,并且己经有很多实际的应用。

一般来说,实时系统通常是比较复杂的,因为它必须处理很多并发事件的输入数据流,这些事件的到来次序和几率通常是不可预测的,而且还要求系统必须在事先设定好的时限内做出相应的响应。

那么,是不是响应时间在多少毫秒或多少微秒以内的系统就是实时系统,而超出这个时限的就不算呢?事实上,实时系统并非是指“快速”的系统,实时系统有限定的响应时间,从而使系统具有可预测性[1]。

实时系统与其他普通的系统之间最大的不同之处就是要满足处理与时间的关系。

在实时计算中,系统的正确性不仅仅依赖于计算的逻辑结果,而且依赖于结果产生的时间。

对于实时系统来说最重要的要求,就是实时操作系统必须有满足在一个事先定义好的时间限制中对外部或内部的事件进行响应和处理的能力。

因此,实时系统可以定义为“一个能够在事先指定或确定的时间内完成系统功能和对外部或内部,同步或异步时间作出响应的系统”。

实时系统又可以分为“硬实时系统”和“软实时系统”[2]。

硬实时和软实时的区别就在于对外界的事件做出反应的时间。

硬实时系统必须是对及时的事件做出反应,绝对不能错过事件处理的deadline情况。

在硬实时系统中如果出现了这样的情况就意味着巨大的损失和灾难。

比如说核电站中的堆芯温度控制系统,如果没有对堆芯过热做出及时的处理,后果不堪想象。

软实时系统是指,如果在系统负荷较重的时候,允许发生错过deadline 的情况而且不会造成太大的危害。

比如说程控电话系统允许在105个电话中有一个接不通。

实时系统具有以下一些特性,从而区分于其他系统:嵌入性:实时系统通常是嵌入式的系统,也就是由封装好的软件系统控制与其相关的硬件。

交互性:实时系统通常需要与外部环境进行交互,例如,可以控制机器及生产过程,或者监控化学反应并随时汇报危急情况,这种情况通常需要从外部接收数据并提供输出和控制外部环境。

“反应”性:很多实时系统都是“反应”的系统,也就是说,由事件驱动并且必须对外界事件进行响应。

并发性:绝大多数实时系统的一个重要特点是并发处理,通常,事件发生的顺序是不.IJ 预测的。

1.2实时操作系统(RTOS)实时操作系统是指具有实时性,能支持实时控制系统工作的操作系统。

实时操作系统的首要任务是调动一切可利用的资源完成实时控制任务,其次才着眼于提高计算机系统的工作效率,其重要特点是通过任务调度来满足对于重要事件在规定时间内作出正确的响应。

实时操作系统(RTOS)是嵌入式应用软件的基础和开发平台。

RTOS是一段嵌入在目标代码中的软件,用户的其他应用程序都建立在RTOS之上。

不但如此,RTOS 还是一个可靠性和可信性很高的实时内核,将CPU时间、中断、I/0、定时时器等资源都包装起来,留给用户一个标准的 API,并根据各个任务的优先级,合理地在不同任务之间分配 CPU 时间。

实时操作系统(RTOS)的研究是从六十年代开始的。

从系统结构上看,实时操作系统到现在己经历了如下三个阶段[3]:(1)早期的实时操作系统早期的实时操作系统,还不能称为真正的实时操作系统,它只是小而简单的、带有一定专用性的软件,功能较弱,可以认为是一种实时监控程序。

这个时期,应用程序、实时监控程序和硬件运行平台往往是紧密联系在一起的。

(2)专用实时操作系统随着应用的发展,早期的实时操作系统己越来越显示出明显的不足。

有些实时系统的开发者为了满足实时应用的需要,自己研制与特定硬件相匹配的实时操作系统。

它一般只应用于特定的硬件环境,且缺乏严格的评测。

移植性也不太好。

(3)通用实时操作系统在各种专用实时操作系统中,一些多任务的机制如基于优先级的调度、实时时钟管理、任务间的通信、同步互斥机构等基本上是相同的,不同的是面向各自的硬件环境与应用目标。

实际上,相同的多任务机制是能够共享的,因而可以把这部分很好地组织起来,形成一个通用的实时操作系统内核。

这类操作系统大多采用软模块结构,以一个个软件“标准模块”构成通用的实时操作系统。

一方面,在实时操作系统内核的最底层将不同的硬件特性屏蔽掉:另一方面,对不同的应用环境提供了标准的、可剪裁的系统服务软模块。

这使得用户可以根据不同的实时应用要求及硬件环境选择不同的软模块,也使得实时操作系统开发商在开发过程中减少了重复。

它们一般都提供了实时性较好的内核、多种任务通信机制、基于TCP/IP 的网络模块、文件管理及 1/O 服务,提供了集编辑、编译、调试、仿真为一体的集成开发环境,支持用户使用C、C++进行应用程序的开发。

总的来说,一个成熟的RTOS 必须具备以下几个功能:任务管理、任务间同步通信、内存管理、实时时钟服务以及中断管理服务。

以上五点是任何一个RTOS 都必不可少的重要功能,对于任何一个RTOS 来说虽然具有这五个基本功能还算不上是一个优秀的实时操作系统,但一旦缺少其中任何一个它都算不上是一个完整的实时操作系统。

1.3有关 RTOS 的重要概念1、多任务多任务运行的实现实际上是靠CPU(中央处理单元)在许多任务之间转换、调度。

CPU 只有一个,轮番服务于一系列任务中的某一个。

多任务运行很像前后台系统,但后台任务有多个。

多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化。

在实时应用中,多任务化的最大特点是,开发人员可以将很复杂的应用程序层次化。

使用多任务,应用程序将更容易设计与维护。

一个任务,也称作一个进程,是一个简单的程序,该进程可以认为CPU完全只属于该进程自己。

实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整个应用的某一部分,每个任务被赋予一定的优先级,有它自己的一套 CPU 寄存器和自己的栈空间。

典型地,每个任务都是一个无限的循环。

每个任务都处在以下5种状态之一的状态下,这5种状态是休眠态、就绪态、运行态、挂起态(等待某一事件发生)和被中断态。

休眠态相当于该任务驻留在内存中,但并不被多任务内核所调度。

就绪意味着该任务己经准备好,可以运行了,但由于该任务的优先级比正在运行的任务的优先级低,还暂时不能运行。

运行态的任务是指该任务掌握了CPU的控制权,正在运行中。

挂起状态也可以叫做等待事件态 WAITING,指该任务在等待,等待某一事件的发生,(例如等待某外设的 I/O 操作,等待某共享资源,由暂时不能使用变成能使用状态,等待定时脉冲的到来或等待超时信号的到来以结束口前的等待)。

最后,发生中断时,CPU 提供相应的中断服务,原来正在运行的任务暂不能运行,就进入了被中断状态。

2、上下文切换(Context Switch or Task Switch)Context Switch 实际含义是任务切换,或 CPU 寄存器内容切换。

当多任务内核决定运行另外的任务时,它保存正在运行任务的当前状态(Context)即 CPU 寄存器中的全部内容。

这些内容保存在任务的当前状况保存区(Task's Context Storage area),也就是任务自己的栈区之中[4]。

入栈工作完成以后,就是把下一个将要运行的任务的当前状况从该任务的栈中重新装入 CPU 的寄存器,并开始下一个任务的运行。

这个过程叫做任务切换。

任务切换过程增加了应用程序的额外负荷。

CPU的内部寄存器越多,额外负荷就越重。

作任务切换所需要的时间取决于 CPU 有多少寄存器要入栈。

实时内核的性能不应该以每秒钟能做多少次任务切换来评价。

3、内核(Kernel)多任务系统中,内核负责管理各个任务,或者说为每个任务分配 CPU 时间,并且负责任务之间的通讯。

内核提供的基本服务是任务切换。

之所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。

内核本身也增加了应用程序的额外负荷,代码空间增加 ROM 的用量,内核本身的数据结构增加了 RAM 的用量。

但更主要的是,每个任务要有自己的栈空间,这一块对于内存的占用量相当大。

内核本身对 CPU 的占用时间一般在2到5个百分点之间。

4、调度(Scheduler)调度(Scheduler)这是内核的主要职责之一,就是要决定该轮到哪个任务运行了。

多数实时内核是基于优先级调度法的。

每个任务根据其重要程度的不同被赋予一定的优先级。

基于优先级的调度法指:CPU 总是让处在就绪态的优先级最高的任务先运行。

然而,究竟何时让高优先级任务掌握 CPU 的使用权,有两种不同的情况:是不可剥夺型的还是可剥夺型内核。

RTOS 的进程调度策略是影响实时性能的重要因素。

尽管调度算法多种多样,但大多由单调速率算法(RM)和最早期限优先算法(EDF)变化而来。

前者主要用于静态周期任务的调度,后者主要用于动态调度。

在不同的环境状态下,两类算法各有优劣。

在商业产品中采用的实际策略常常是各种因素的折中。

1.4衡量 RTOS 实时性能的重要指标通常,判断一个操作系统是否是一个 RTOS,主要有以下几个指标衡量:1、确定性(Deterministic)实时操作系统中,在一定的条件下,系统调用的运行时间可以预测。

这并不是指所有系统调用都总是执行一个固定长度的时间,而是指不论系统负载如何,系统调用的最大执行时间可以确定。

2、可抢占(Preemptive)实时操作系统应该是可抢占的。

抢占是指当系统处于核心态运行时,允许任务的重新调度。

换句话说就是指正在执行的任务可以被打断,让另一个任务运行。

抢占提高了应用对异步韦件的响应性能力。

操作系统内核可.抢占,并不是说任务调度在任何时候都可以发生。

例如当一个任务正在通过一个系统调用访问共享数据时,重新调度和中断都被禁止。

可抢占内核如图 1所示。

3、上下文切换时间(Context Switching)多任务系统中,上下文切换是指 CPU 的控制权由运行任务转移到另外一个就绪任务时所发生的韦件,当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务。