
嵌入式linux实时性分析与验证--林大版.doc
21页东 北 林 业 大 学嵌入式Linux实时性分析与验证总页数:21正文:20附录:0目 录1 嵌入式实时性操作系统简介 11.1 什么是实时性 11.2 什么是实时性嵌入式操作系统 11.3 评价嵌入式实时操作系统的指标 11.4 嵌入式实时操作系统业界水平 21.4.1 VxWorks嵌入式操作系统 21.4.2 μC/OS-II嵌入式操作系统 31.4.3 μClinux嵌入式操作系统 31.4.4 eCos嵌入式操作系统 31.4.5 RTXC嵌入式操作系统 31.5 RTOS硬件和软件方面的要求 41.5.1 可预测性 41.5.2 可靠性 42 Linux作为嵌入式实时操作系统的分析 42.1 需要改进的地方 42.1.1 待改善的内核结构 42.1.2 实时性方面的不足 52.2 测试通用Linux实时性的方法 62.2.1 中断响应时间测试 62.2.2 调度延迟时间测试 83 目前业界改进Linux的典型案例 103.1 Kurt-Linux 103.2 Red-Linux 103.3 MontaVista-Linux 113.4 RT-Linux及RTAI 114 改进Linux实时性的基本策略 124.1 兼容内核方法 124.2 双内核方法 134.3 核心内核方法 144.4 资源内核方法 145 通过patch提高通用Linux实时性提升的方法 145.1 Ingo Molnar 的实时补丁 141 嵌入式实时性操作系统简介1.1 什么是实时性所谓实时,就是系统的正确性不仅仅依赖于计算的逻辑结果的正确性,执行时间还必须是确定的,可预测的,并且在任何情况下都能保证任务的时限。
——及时、准时1.2 什么是实时性嵌入式操作系统嵌入式操作系统的一般的定义为:以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统实时嵌入式操作系统是符合上述要求并具有实时性的操作系统实时性系统一般分为两类:(1) 硬实时系统:要求可确定性强,具有明确的实时约束,在某个限定的时刻之前不能完成任务将造成灾难性的后果2) 软实时系统:也对时间敏感,但偶尔发生不能满足严格实时要求的情况也是允许的1.3 评价嵌入式实时操作系统的指标嵌入式系统实时性一般来说通过三个指标来衡量,即响应时间、生存时间和吞吐量但借鉴与Linux其它功能方面的表现已经非常出色,改造Linux过曾中采用如以下6个具体延迟时间指标1) 中断分配时间IDT(interruptdispatchtime):当一个中断产生时,在调用中断处理程序占用CPU以前,操作系统用来保存所有的寄存器中的内容和系统中其他的关于这一任务状态的时间2) 中断服务时间:IST(interruptservicetime):中断服务程序用来从硬件设备读取信息或从操作系统收集信息所用的时间3) 内核抢占时间KPT(kernelpreemptiontime):在操作系统意欲抢占当前进程与抢占实际上发生之间的时间间隔。
4) 调度延迟SD(scheduledelay):调度程序用来调度另一个线程投入运行的时间5) 进程切换时间CST(contestswitchingtime):当前线程用来保存寄存器和系统状态的时间与将要运行的线程恢复寄存器中的内容和系统状态的时间总和6) 系统调用返回时间RST(returnfromsystemcall):处于内核态的线程在它返回用户态之前检查一些状态所用的时间其中SD,CST,RST总是固定不变的,如果内核设计得当IDT,IST和KPT可以有效得减少下图 1-1为Linux2.4进程切换的过程图,可作为参考图 1-1 Linux2.4内核任务响应模型1.4 嵌入式实时操作系统业界水平1.4.1 VxWorks嵌入式操作系统 VxWorks是美国WindRiver公司的产品,是目前嵌入式系统领域中应用很广泛,市场占有率比较高的嵌入式操作系统 VxWorks实时操作系统由400多个相对独立、短小精悍的目标模块组成,用户可根据需要选择适当的模块来裁剪和配置系统;提供基于优先级的任务调度、任务间同步与通信、中断处理、定时器和内存管理等功能,内建符合POSIX(可移植操作系统接口)规范的内存管理,以及多处理器控制程序;并且具有简明易懂的用户接口,在核心方面甚至町以微缩到8 KB。
1.4.2 μC/OS-II嵌入式操作系统 μC/OS-II是在μC-OS的基础上发展起来的,是美国嵌入式系统专家Jean J.Labrosse用C语言编写的一个结构小巧、抢占式的多任务实时内核μC/OS-II能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点 1.4.3 μClinux嵌入式操作系统 μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧 1.4.4 eCos嵌入式操作系统 eCos(embedded Configurable operating system),即嵌入式可配置操作系统它是一个源代码开放的可配置、可移植、面向深度嵌入式应用的实时操作系统。
最大特点是配置灵活,采用模块化设计,核心部分由小同的组件构成,包括内核、C语言库和底层运行包等每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用eCos提供的配置工具可以很方便地配置,并通过不同的配置使得eCos能够满足不同的嵌入式应用要求 1.4.5 RTXC嵌入式操作系统 RTXC是C语言的实时执行体(Real-Time eXecutive in C)的缩写它是一种灵活的、经过工业应用考验的多任务实时内核,可以广泛用于各种采用8/16位单片机、16/32位微处理器、DSP处理器的嵌入式应用场合中国单片机公共实验室“经过几年的考察,认为比较适合中国的国情后,引入中国市场的”嵌入式实时多任务操作系统两者之一1.5 RTOS硬件和软件方面的要求1.5.1 可预测性实时系统的要求能够对实时任务的执行时间进行判断,确定是否能够满足任务的时限要求由于实时系统对时间约束要求的严格性,使硬件延迟的可预测性成为实时系统的一项重要性能要求此外,还要求操作系统,包括应用程序的响应时间是可预测的1.5.2 可靠性 在一些重要的实时应用中,任何不可靠因素和计算机的一个微小故障,或某些特定强实时任务超过时限,都可能引起难以预测的严重后果。
为此硬件和其软件的可靠性成为衡量实时系统性能不可缺少的重要保障2 Linux作为嵌入式实时操作系统的分析2.1 需要改进的地方2.1.1 待改善的内核结构Linux内核采用的是单内核结构(Monolithic),整个内核是一个单独的、非常大的程序,这样虽然能够使系统的各个部分直接沟通,有效地缩短任务之间的切换时间,但与嵌入式系统存储容量小、资源有限的特点不相符合嵌入式系统经常采用的是另一种称为微内核(Microkernel)的体系结构,即内核本身只提供一些最基本的操作系统功能,而类似于文件系统和网络协议等附加功能则运行在用户空间中见下图2-1、图2-2:微内核的执行效率虽然比不上单内核,但却大大减小了内核的体积,便于维护和移植,更能满足嵌入式系统的要求可以考虑将Linux内核部分改造成微内核2.1.2 实时性方面的不足 Linux虽然符合POSIX1003.1b关于实时扩展部分的标准,但仍然存在如下缺陷:(1) 定时器问题:Linux的周期模式定时器频率仅为1O0Hz,远不能满足实时应用的要求2) 调度问题:Linux虽然给实时进程提供了较高的优先级,但是并没有加入时间限制另外,当多个实时进程互斥请求共享资源时,易发生优先级翻转。
3) 中断关闭问题:Linux的内核进程经常关闭中断以尽快完成自己的任务,如果低优先级的进程关闭了中断,那么即使有高优先级进程的中断发生,系统也无法响应4) 中断优先级问题:在一个有非常繁重的网络负载和I/O负载系统中,很有可能出现一直处在中断处理状态而没有机会运行任何实时任务5) 抢占问题:虽然Linux2.6开始引入了可抢占内核,但它是不完全抢占的,在这种不可抢占区域还需要给予更多的抢占点才能满足实时性的要求6) 虚拟内存管理问题:对于分时系统来讲这是一个好的解决办法,而对于实时系统却带来不可忍受的不可预测性2.2 测试通用Linux实时性的方法根据上述的实时操作系统指标将对通用的Linux内核进行实时性测试,测试的方法是用TSC对中断响应时间和调度延迟进行精确计时2.2.1 中断响应时间测试2.2.1.1 测试原理2.2.1.2 测试环境测试平台: VM下的CentOS5.5 Kernel: 2.6.18 CPU : Itel(R) Celeron(R) CPU 2.8GHz 内存 :1.5GB2.2.1.3 测试代码#include