几种嵌入式实时操做系统的分析与比较

 VxWorks、μClinux、μC/OS-II和eCos是4种性能优良并被普遍应用的实时操做系统。本文经过对这4种操做系统的主要性能进行分析与比较,概括出它们的选型依据和适用领域。linux


1 4种操做系统的介绍
(1)VxWorks

    VxWorks是美国WindRiver公司的产品,是目前嵌入式系统领域中应用很普遍,市场占有率比较高的嵌入式操做系统。VxWorks实时操做系统由400多个相对独立、短小精悍的目标模块组成,用户可根据须要选择适当的模块来裁剪和配置系统;提供基于优先级的任务调度、任务间同步与通讯、中断处理、定时器和内存管理等功能,内建符合POSIX(可移植操做系统接口)规范的内存管理,以及多处理器控制程序;而且具备简明易懂的用户接口,在核心方面甚至町以微缩到8 KB。
(2) μC/OS-II
    μC/OS-II是在μC-OS的基础上发展起来的,是美国嵌入式系统专家Jean J.Labrosse用C语言编写的一个结构小巧、抢占式的多任务实时内核。μC/OS-II能管理64个任务,并提供任务调度与管理、内存管理、任务间同步与通讯、时间管理和中断服务等功能,具备执行效率高、占用空间小、实时性能优良和可扩展性强等特色。
(3)μClinux
    μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核很是小,可是它仍然继承了Linux操做系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。由于没有MMU内存管理单元,因此其多任务的实现须要必定技巧。
(4)eCos
    eCos(embedded Configurable operating system),即嵌入式可配置操做系统。它是一个源代码开放的可配置、可移植、面向深度嵌入式应用的实时操做系统。最大特色是配置灵活,采用模块化设计,核心部分由小同的组件构成,包括内核、C语言库和底层运行包等。每一个组件可提供大量的配置选项(实时内核也可做为可选配置),使用eCos提供的配置工具能够很方便地配置,并经过不一样的配置使得eCos可以知足不一样的嵌入式应用要求。web

2 性能分析与比较
    
任务管理、任务及中断间的同步与通讯机制、内存管理、中断管理、文件系统、对硬件的支持和系统移植这几方面是实时操做系统的主要性能。下面就从这几个方面着手对上述4种操做系统进行分析与比较。
2.1 任务管理
    
任务管理是嵌入式实时操做系统的核心和灵魂,决定了操做系统的实时性能。它一般包含优先级设置、多任务调度机制和时间肯定性等部分。
2.1.1 优先级设置
    
嵌入式操做系统支持多任务,每一个任务都具备优先级,任务越重要,赋予的优先级应越高。优先级的设置分为静态优先级和动态优先级两种。静态优先级指的是每一个任务在运行前都被赋予一个优先级,并且这个优先级在系统运行期间是不能改变的;动态优先级则是指每一个任务的优先级(特别是应用程序的优先级)在系统运行时能够动态地改变。
2.1.2 多任务调度机制
    
任务调度主要是协调任务对计算机系统资源的争夺使用。对系统资源很是匮乏的嵌入式系统来讲,任务调度尤其重要,它直接影响到系统的实时性能。一般,多任务调度机制分为基于优先级抢占式调度和时间片轮转调度。
    基于优先级抢占式调度:系统中每一个任务都有一个优先级,内核老是将CPU分配给处于就绪态的优先级最高的任务运行。若是系统发现就绪队列中有比当前运行任务更高的优先级任务,就把当前运行任务置于就绪队列中,调入高优先级任务运行。系统采用优先级抢占方式进行调度,能够保证重要的突发事件及时获得处理。
    时间片轮转调度:让优先级相同的处于就绪状态的任务按时间片使用CPU,以防止同优先级的某一任务长时间独占CPU。
    在通常状况下,嵌入式实时操做系统采用基于优先级抢占式调度与时间片轮转调度相结合的调度机制。
2.1.3 时间的可肯定性
    
嵌入式实时操做系统甬数调用与服务的执行时间应具备可肯定性。系统服务的执行时间不依赖于应用程序任务的多少。基于此特征,系统完成某个肯定任务的时间是可预测的。表1具体列出了4种操做系统的调度机制。
    4种嵌入式实时操做系统都支持多任务,只是在支持任务数量上和任务调度机制上有所不一样。VxWorks具备高效的任务管理功能,它支持多任务,可分配256个优先级,支持优先级抢占式调试和时间片轮转调度,实时性最好。μC/OS-II内核是针对实时系统的要求设计实现的,只支持基于固定优先级抢占式调度;调度方法简单,能够知足较高的实时性要求。μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度;仅针对中低档嵌入式CPU特色进行改良,且不支持内核抢占。eCos调度方法丰富,提供了两种基于优先级的调度器(即位图调度器和多级队列调度器),容许用户在进行配置时选择其中一个凋度器,适应性好。
2.2 任务及中断间的同步与通讯机制
    
实时操做系统的功能通常要经过若干任务和中断服务程序共同完成。任务与任务之间、任务与中断间任务及中断服务程序之间必须协调动做,互相配合,这就涉及任务间的同步与通讯问题。嵌入式实时操做系统一般是经过信号量、互斥信号量、事件标志和异步信号来实现同步,经过消息邮箱、消息队列、管道和共享内存来提供通讯服务。因为互斥信号量的使用,带来了实时操做系统中常见的优先级反转问题。优先级反转是一种不肯定的延迟形式,当高优先级任务企图访问已被低优先级占有的共享资源时,必须等待低优先级任务释放共享资源;若是这时低优先级任务被一个或多个中优先级任务抢占,那么高优先级任务被延迟的时间将更进一步延长,实时性难以保证。所以,应采起相关措施以尽鼍避免出现优先级反转问题。实时系统一般采用优先级继承和优先级置顶机制。
    优先级继承足指拥有互斥量的任务被提高到与下一个在等待该互斥最的最高优先级任务相同的优先级;优先级置顶是指得到互斥量的任务将其优先级提高到一个事先规定好的值。表2为4种操做系统的同步与通讯机制的比较。算法

 4种系统都具备灵话的任务间同步与通讯机制,均可以经过信号量、消息队列来实现同步与通讯,可是VxWorks与μClinux都不支持邮箱和事件标志,并且除了μClinux和eCos中的位图调度器,其余操做系统都采起了措施抑制优先级反转。
2.3 内存管理
    
内存管理主要包括:内存分配原则,存储保护和内存分配方式。
2.3.1 内存分配原则
    内存分配原则包括快速性、可靠性和高效性。其中,快速性要求内存分配过程要尽量快,因此通常采用简单、快速的分配算法;可靠性指的是内存分配的请求必须获得知足;系统强调高效性的要求,不只仅是对系统成本的要求,并且因为系统自己可配置的内存容量也是颇有限的,因此要尽量地避免浪费。
2.3.2 存储保护
    
一般在操做系统的内存中既有系统程序也有用户程序,为了使二者都能正常运行,避免程序间相互干扰,须要对内存中的程序和数据进行保护。存储保护一般须要硬件支持,在不少系统中都采用MMU,并结合软件实现;但因为嵌入式系统的成本限制内核和用户程序一般都在相同的内存空间中。
2.3.3 内存分配方式
    
内存分配方式可分为静态分配和动态分配。静态分配是在程序运行前一次性分配给相应内存,而且在程序运行期间中不容许再申请或在内存中移动;动态分配则容许在程序运行整个过程当中进行内存分配。静态分配使系统失去了灵活性,但对于实时性要求比较高的系统是必需的;而动态分配赋予了系统设计者更多自主性,能够灵活地调整系统的功能。
    VxWorks对内存的使用采用的是Flat Mode,可被静态或动态连接。VxWorks为用户提供了两种内存区域Region和Partition。Region是变长的内存区,用户能够从建立的Region中分配Segment,其特色是容易产生碎片,但灵活而且不浪费;Partition是定长的内存区,用户能够从刨建的Partition中分配Buffer,其特色是不会产生碎片,技率高可是易浪费。VxWorks采用最早算法分配内存。μC/OS-II把连续的大块内存按分区来管理,每一个分区中都包含整数个大小相同的内存块,但不一样分区之间内存的过小能够不一样。用户动态分配内存时,只须选择一个适当的分区,按块来分配内存,释放时将该块放回到之前所属的分区,这样就消除了因屡次动态分配和释放内存所引发的碎片问题。μClinux是针对没有MMU的处理器设计的,不能使用处理器的虚拟内存管理技术,只能采用实存储器管理策略。系统使用分页内存分配方式,在启动时对实际存储器进行分页。系统对内存的访问是直接的操做系统对内存空间没有保护,多个进程可共享一个运行空间,因此,即便是一个无特权进程调用一个无效指针也会触发一个地址错误,并有可能引发程序崩溃甚至系统崩溃。eCos对内存分配既不分段也不分页,而是采用一种基于内存池的动态内存分配机制。经过两种内存池类来实现两种内存管理方法:一种是变长的内存池;另外一种是定长的内存池,相似于VxWorb的管理方案。表3为4种操做系统内存管理的比较。
2.4 中断管理
    
中断管理是实时系统中一个很重要的部分,系统常常经过中断与外部事件交互。主要考虑是否支持中断嵌套、中断处理机制、中断延时等。
(1)VxWorks的中断管理
    VxWorks操做系统中断管理采用中断处理与普通任务分别在不一样栈中处理的中断处理机制,使得中断只会引起一些关键寄存器的存储,而不会致使任务的上下文切换,从而极大地缩短了中断延时。同时,VxWorks的中断处理程序只能在最短期内通告中断的发生,而将其余的非实时处理尽可能放入被引起的中断服务程序中来完成,这也缩短了中断延时。可是凼为中断服务程序不在一个固定的仟务上下文中执行,而目没有任务控制块,因此全部中断服务程序使用相同的中断堆栈。为了能处理最坏状况下的中断嵌套,必须分配足够大的中断堆栈空间。
(2)μC/OS-II的中断管理
    μC/OS-II中断处理比较简单。一个中断向量上只能挂一个中断服务子程序ISR,并且用户代码必须都在ISR中完成。ISR须要作的事情越多,中断延时也就越长。内核所能支持的最大嵌套深度为255。
(3) μClinux的中断管理
    μClinux操做系统将中断处理分为两部分:顶半处理和底半处理。在顶半处理中,必须关中断运行,且仅进行必要的、很是少、速度快的处理,其余处理交给底半处理;底半处理执行那些复杂、耗时的处理,并且接受中断。由于系统中存在有许多中断的底半处理,因此会引发系统中断处理的延时。
(4)eCos的中断管理
    eCos使用了分层式中断处理机制,把中断处理分为传统的ISR和滞后中断服务程序DSR。相似于μClinux的处理机制,这种机制能够在中断容许时运行DSR,所以在处理较低优先级中断时容许高优先级的中断和处理。为了极大地缩短中断延时,ISR应当能够快速运行。若是中断引发的服务量少,则ISR能够单独处理中断;若是中断服务复杂,则ISR只屏蔽中断源,而后交由DSR处理。
2.5 文件系统
    
所谓“文件系统”是指负责存取和管理文件信息的机构,也能够说是负贵文件的创建、撤销、组织、读写、修改、复制,以及对文件管理所需的其余资源实施管理的软件部分。VxWorks操做系统在文件系统与设备驱动程序之间使用一种标准的I/O口操做接口,且支持MS-DOS、RT-十一、RFS、CD-ROM、RAW等文件系统。这样,在单个VxWorks操做系统中能够运行多个相同或不一样种类的文件系统。μC/OS-II是面向中小型嵌入式系统的,即便包含所有功能,编译后内核也不到10 KB,因此系统自己并无提供对文件系统的支持。可是μC/OS-II具备良好的扩展性能,若是须要也可自行加入文件系统的内容。μClinux继承了Linux完善的文件系统性能,它支持ROMFS、NFS、ext二、MS-DOS、JFFS等文件系统。但通常采用ROMFS文件系统,这种文件系统相对于通常的文件系统(如ext2)占用更少的空间。可是ROMFS文件系统不支持动态擦写保存,对于系统须要动态保存的数据须采用虚拟RAM盘/JFFS的方法进行处理。eCos操做系统的可配置性很是强大,用户能够本身加入所需的文件系统。
2.6 对硬件的支持
    
VxWorks、μC/OS-II、μClinux和eCos这4种操做系统都支持当前流行的大部分嵌入式CPU。μC/OS-II支持从8位到32位的CPU,VxWorks、μClinux和eCos能够在16位、32位和64位等不一样体系结构之间移植。因为μClinux继承了Linux的大部分性能,因此至少须要512KB的RAM空间,lMB的ROM/Flash空间;而μC/OSII和eCos因为自己内核就很小,通过裁剪后的代码最小能够分别为2 KB和10 KB,所需的最小数据RAM空间分别为4 KB和10 KB。总的来讲,4种系统对硬件的要求比较低,比较经济。具体比较如表4所列。安全

 

2.7 系统移植
    
嵌入式操做系统移植的目的是使嵌入式操做系统能在某个微处理器或微控制器上运行。4种系统中VxWorks是商用操做系统的有不少API函数及相关技术支持,因此移植和二次开发比较容易,可是移植成本较高。其余3种系统的结构化设计便于把与处理器相关的部分分离出来,因此被移植到新的处理器上也是可能的。μC/OS-II的移植相对比较简单,只须要修改与处理器相关的代码就能够了。μClinux是Linux针对嵌入式系统的一种改良,其结构比较复杂。移植μClinux,目标处理器除了应知足μC/OS-II移植所需的条件外,还须要足够容量的外部ROM和RAM。eCos系统的可移植性明显比μC/OS-II和μClinux好。在eCos系统中,每一个硬件平台都有一个单独的目录,用于存放引对这一硬件平台的硬件抽象层的代码和配置信息;而μClinux的硬件抽象层的代码则分布在好几个目录中,经过命令来选择不一样硬件平台的代码。因此,修改eCos代码相对简单,移植也相对容易。网络

 

结论
    
这4种嵌入式实时操做系统在嵌入式系统的应用很是普遍,可是又具备各自的特色。根据上述比较,概括出各自的适用领域。
    ①VxWorks是一套娄似于Unix的实时操做系统,它内建了符合POSIX规范的内存管理,以及多处理器控制程序,而且具备简明易懂的用户接口,在核心方面甚至能够微缩到8 KB。它由400多个相对独立的、短小精悍的目标模块组成,用户可根据须要选择适当模块来裁剪和配置系统,有效地保证了系统的安全性和可靠性。它被普遍地应用在通讯、军事、航空、航天等高尖技术及实时性要求极高的领域,尤为是在许多关键应用方面,VxWorks仍是一枝独秀。例如,美国波音公司就在其最新的787客机中采用了此操做系统;而在外层空间探索领域,VxWorks则一直是美国太空总署NASA的最爱。
    ②μC/OS-II是一个结构简单、功能完备和实时性很强的嵌入式操做系统内核,适合于广大的嵌入式系统开发人员和爱好者入门学习,以及高校教学和科研。μC/OSII很适合开发那些对系统要求不是很苛刻,且RAM和ROM有限的各类小型嵌入式系统设备。
    ③μClinux最大特色在于针对无MMU处理器设计,能够利用功能强大的Linux资源,所以适合开发对事件要求不高的小容量、低成本的各种产品,特别适用于开发与网络应用密切相关的嵌入式设备或者PDA设备。例如,CISCO公司的2500/3000/4000路由器就是基于μClinux操做系统开发的。
    ④eCos最大特色是配置灵活,而月是面向深度嵌入 式应用的,很适合用于一些商业级或工业级对成本敏感的异步

 

    嵌入式系统,例如消费电子类领域中的一些应用。模块化

相关文章
相关标签/搜索