《几种嵌入式实时操作系统的分析与比较》由会员分享,可在线阅读,更多相关《几种嵌入式实时操作系统的分析与比较(14页珍藏版)》请在金锄头文库上搜索。
1、几种嵌入式实时操作系统的分析与比较2008-07-04 20:54VxWorks、卩Clinux、卩C/OS-II和eCos是4种性能优良并被广泛应用的实 时操作系统。本文通过对这4种操作系统的主要性能进行分析与比较,归纳出它 们的选型依据和适用领域。1.4种操作系统的介绍VxWorksVxWorks是美国WindRiver公司的产品,是目前嵌入式系统领域中应用很 广泛,市场占有率比较高的嵌入式操作系统。VxWorks实 时操作系统由400多个相对独立、短小精悍的目标模块组成,用户可根据需要选择适当的模块来裁 剪和配置系统;提供基于优先级的任务调度、任务间同步与通信、中断处理、定 时器和内存管
2、理等功能,内建符合 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
3、-control Linux从字面意思看是指微控制Linux。同标准的Linux相比,卩Clinux的内核非常小, 但是它仍然继承了 Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多 任务的实现需要一定技巧。(4) eCoseCos(embedded Con figurable operat ing system),即嵌入式可配置操作系统。它是一个源代码开放的可配置、 可移植、面向深度嵌入式应用的实时操 作系统。最大特点是配置灵活,采用模块化设 计,核心部分由小同的组件
4、构成, 包括内核、C语言库和底层运行包等。每个组件可提供大量的配置选项 (实时内 核也可作为可选配置),使用eCos提供的配置工具可以很方便地配置,并通过 不同的配置使得eCos能够满足不同的嵌入式应用要求。2性能分析与比较任务管理、任务及中断间的同步与通信机制、内存管理、中断管理、文件系统、对硬件的支持和系统移植这几方面是实时操作系统的主要性能。下面就从这几个方面着手对上述4种操作系统进行分析与比较。2.1任务管理任务管理是嵌入式实时操作系统的核心和灵魂,决定了操作系统的实时性能。它通常包含优先级设置、多任务调度机制和时间确定性等部分。优先级设置嵌入式操作系统支持多任务,每个任务都具有优先级
5、,任务越重要,赋予的 优先级应越高。优先级的设置分为静态优先级和动态优先级两种。 静态优先级 指 的是每个任务在运行前都被赋予一个优先级, 而且这个优先级在系统运行期间是 不能改变的;动态优先级则是指每个任务的优先级(特别是应用程序的优先级)在 系统运行时可以动态地改变。多任务调度机制任务调度主要是协调任务对计算机系统资源的争夺使用。对系统资源非常匮 乏的嵌入式系统来说,任务调度尤为重要,它直接影响到系统的实时性能。通常, 多任务调度机制分为基于优先级抢占式调度和时间片轮转调度。基于优先级抢占式调度:系统中每个任务都有一个优先级,内核总是将CPU 分配给处于就绪态的优先级最高的任务运行。如果系
6、统发现就绪队列中有比当前运行任务更高的优先级任务,就把当前运行任务置于就绪队列中,调入高优先 级任务运行。系统采用优先级抢占方式进行调度,可以保证重要的突发事件及时 得到处理。时间片轮转调度:让优先级相同的处于就绪状态的任务按时间片使用CPU,以防止同优先级的某一任务长时间独占 CPU。在一般情况下,嵌入式实时操作系统采用基于优先级抢占式调度与时间片轮 转调度相结合的调度机制。时间的可确定性嵌入式实时操作系统甬数调用与服务的执行时间应具有可确定性。 系统服务 的执行时间不依赖于应用程序任务的多少。基于此特征,系统完成某个确定任务 的时间是可预测的。表1具体列出了 4种操作系统的调度机制。4种嵌
7、入式实时操作系统都支持多任务,只是在支持任务数量上和任务调度 机制上有所不同。VxWorks具有高效的任务管理功能,它支持多任务, 可分配 256个优先级,支持优先级抢占式调试和时间片轮转调度,实时性最好。卩C/OS-II内核是针对实时系统的要求设计实现的,只支持基于固定优先级抢占式调度;调度方法简单,可以满足较高的实时性要求。卩Clinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度;仅针对中低档嵌入式 CPU特点进行改良,且不支持内核 抢占。eCos调度方法丰富,提供了两种基于优先级的调度器(即位图调度器和 多级队列调度器),允许
8、用户在进行配置时选择其中一个凋度器,适应性好。2.2任务及中断间的同步与通信机制实时操作系统的功能一般要通过若干任务和中断服务程序共同完成。任务与任务之间、任务与中断间任务及中断服务程序之间必须协调动作,互相配合,这就涉及任务间的同步与通信问题。 嵌入式实时操作系统通常是通过信号量、 互斥 信号量、事件标志和异步信号来实现同步,通过消息邮箱、消息队列、管道和共 享内存来提供通信服务。由于互斥信号量的使用,带来了实时操作系统中常见 的优先级反转问题。优先级反转是一种不确定的延迟形式, 当高优先级任务企图 访问已被 低优先级占有的共享资源时,必须等待低优先级任务释放共享资源; 如果这时低优先级任务
9、被一个或多个中优先级任务抢占,那么高优先级任务被延迟的时间将更进 一步延长,实时性难以保证。因此,应采取相关措施以尽鼍避 免出现优先级反转问题。实时系统通常采用优先级继承和优先级置顶机制。优先级继承足指拥有互斥量的任务被提升到与下一个在等待该互斥最的最 高优先级任务相同的优先级;优先级置顶是指获得互斥量的任务将其优先级提升 到一个事先规定好的值。表2为4种操作系统的同步与通信机制的比较。ft 14种戋柞玉统诵幢桩制的比桂VswtfrkmV OS -11S就駅列调廈器內模柩占M否it堤2S&】003232动蕊愕度方范占式魄m时阿 片轮悴厳匮宾时逋料龙束 吃 書 t fV 1S體干爲定优 竟嫌世舟
10、式皓比也堀址 再武冏度丨时何 片憶转谓廈无W任务敕就T瓦限圖购印翁迅性杲1娃24种拼件解统同步与遇棺机制的比较V x Wrrk?ifiC OS-tJpthnuKr4 os同步阳弓常、互岸信佶号ah斥体.佶号厅乍体.倩昂 ia.車件赫丄内疗帯ii邮希411也从列骨値JU庆 臥共卒内存茶件匪仏阿龟ft兀置优先 尤煤厦4种系统都具有灵话的任务间同步与通信机制,都可以通过信号量、消息队 列来实现同步与通信,但是 VxWorks与卩Clinux都不支持邮箱和事件标志, 而且除了卩Clinux和eCos中的位图调度器,其他操作系统都采取了措施抑制 优先级反转。2.3内存管理内存管理主要包括:内存分配原则,
11、存储保护和内存分配方式。内存分配原则内存分配原则包括快速性、可靠性和高效性。其中,快速性要求内存分配过程要尽可能快,所以一般采用简单、快速的分配算法;可靠性指的是内存分配 的 请求必须得到满足;系统强调高效性的要求,不仅仅是对系统成本的要求,而且 由于系统本身可配置的内存容量也是很有限的,所以要尽可能地避免浪费。存储保护通常在操作系统的内存中既有系统程序也有用户程序,为了使两者都能正常运行,避免程序间相互干扰,需要对内存中的程序和数据进行保护。存储保护 通 常需要硬件支持,在很多系统中都采用 MMU,并结合软件实现;但由于嵌入式 系统的成本限制内核和用户程序通常都在相同的内存空间中。233内存
12、分配方式内存分配方式可分为静态分配和动态分配。 静态分配是在程序运行前一次性 分配给相应内存,并且在程序运行期间中不允许再申请或在内存中移动;动态 分配则允许在程序运行整个过程中进行内存分配。静态分配使系统失去了灵活性, 但对于实时性要求比较高的系统是必需的;而动态分配赋予了系统设计者更多自主性,可以灵活地调整系统的功能。VxWorks对内存的使用采用的是Flat Mode,可被静态或动态链接。VxWorks为用户提供了两种内存区域 Region和Partition 。 Region是变长的 内存区,用户可以从创建 的Region中分配Segment,其特点是容易产生碎片, 但灵活并且不浪费;
13、Partition是定长的内存区,用户可以从刨建的Partition 中 分配Buffer,其特点是不会产生碎片,技率高但是易浪费。 VxWorks采用最先 算法分配内存。卩C/OS-II把连续的大块内存按分区来管理,每个分区中都包 含整数个大小相同的内存块,但不同分区之间内存的太小可以不同。 用户动态分 配内存时,只须选择一个适当的分区,按块来分配内存,释放时将该块 放回到 以前所属的分区,这样就消除了因多次动态分配和释放内存所引起的碎片问题。卩Clinux是针对没有MMU的处理器设计的,不能使用处理器的虚拟内存管理 技术,只能采用实存储器管理策略。系统使用分页内存分配方式,在启动时对实 际
14、存储器进行分页。系统对内存的访问是直接的操作系统对内存空间没有保护,多个进程可共享一个运行空间,所以,即使是一个无特权进程调用一个无效指针 也会触发一个地址错误,并有可能引起程序崩溃甚至系统崩溃。eCos对内存分 配既不分段也不分页,而是采用一种基于内存池的动态内存分配机制。 通过两种 内存池类来实现两种内存管理方法: 一种是变长的内存池;另一种是定长的内存 池,类似于VxWorb的管理方案。表3为4种操作系统内存管理的比较。*34种撮作系统内存管理的比较慄作系统VxWorkspC OS-H/iClinux支持MMC_一丄_一支持不支持不支持1不支持管理方式虑拟存储器实存储器实存舗器存储保护有
15、无无无存储机制分区分区分页不分段也不分区分配方式诈态或功态 连绒分配协态或动态连续分覽静虑戒动态 邈分配非连续基于内#池的动 态内存分配机制2.4中断管理中断管理是实时系统中一个很重要的部分,系统经常通过中断与外部事件交互。主要考虑是否支持中断嵌套、中断处理机制、中断延时等。(1) VxWorks的中断管理VxWorks操作系统中断管理采用中断处理与普通任务分别在不同栈中处理的中 断处理机制,使得中断只会引发一些关键寄存器的存储,而不会导致任务的上下文切换,从而极大地缩短了中断延时。同时, VxWorks的中断处理程序只能 在最短时间内通告中断的发生,而将其他的非实时处理尽量放入被引发的中断 服务程序中来完成,这也缩短了中断延时。但是凼为中断服务程序不在一个固定 的仟务上下文中执行,而目没有任务控制块,所以所有中断服务程序使用相同的 中断 堆栈。为了能处理最