您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

嵌入式系统内存管理方案研究

时间:2007-1-20栏目:电子通信论文

摘要:嵌入式系统的内存管理机制必须满足实时性和可靠性的要求。本文以开源的的操作系统RTEMS为例,介绍嵌入式系统中内存管理的要求、存在的问题以及解决的策略。

    关键词:嵌入式系统 内存管理 静态分配 动态分配

引言

内存管理机制是嵌入式系统研究中的一个重点和难点的问题,它必须满足以下几个特性:

①实时性。从实时性的角度出发,要求内存分配过程要尽可能地快。因此,在嵌入式系统中,不可能采用通用操作系统的一些复杂而完善的内存分配策略,一般没有段页式的虚存管理机制;而是采用简单、快速的内存分配方案,其分配方案也因程序对实时性的要求而异。例如,VxWorks系统采用简单的“首次适应,立即聚合”方法;VRTX中采用多个固定尺寸存储块的binning方案。

②可靠性。嵌入式系统应用的环境千变万化,在有些特定情况下,对系统的可靠性要求极高,内存分配的请求必须得到满足,如果分配失败则可能会带来灾难性的后果。比如,飞机的燃油检测系统。在飞机飞行过程中,如果燃料发生泄漏,系统应该立即检测到,并发出相应的警报等待飞行员及时处理。如果因为内存分配失败而不能相应地操作,就可能发生机毁人亡的事故。

③高效性。内存分配要尽可能地减少浪费。(范文先生网www.fwsir.com收集整理)不可能为了保证满足所有的内存分配请求而将内存配置得很大。一方面,嵌入式系统对成本的要求使得内存在其中只是一种很有限的资源;另一方面,即使不考虑成本的因素,系统硬件环境有限的空间和有限的板面积决定了可配置的内存容量是很有限的。

针对以上三个约束条件,市场上主流的嵌入式操作系统,如VxWorks、嵌入式Linux等均提出了一套有效的解决方案;但是,这些系统只提供了应用开发的接口,其底层的实现方案不可见。本文以开源的嵌入式操作系统RTEMS为例,分析了嵌入式系统内存管理所面临的问题,研究了其底层实现的解决方案。一般的嵌入式系统中最基本的内存管理方案有两种——静态分配和动态分配。

1 静态分配与动态分配

静态分配是指在编译或链接时将程序所需的内存空间分配好。采用这种分配方案的程序段,其大小一般在编译时就能够确定;而动态分配是指系统运行时根据需要动态地分配内存。这两种策略的选取一直是嵌入式系统设计中一个令人头痛的问题。

一般的嵌入式系统都支持静态分配,因为像中断向量表、操作系统映像这类的程序段,其程序大小在编译和链接时是可以确定的。而是否支持动态分配主要基于两个方面的考虑:首先是实时性和可靠性的要求,其次是成本的要求。对于实时性和可靠性要求极高的系统(硬实时系统),不允许延时或者分配失效,必须采用静态内存分配,如航天器上的嵌入式系统多采用静态内存分配。除了基于成本的考虑外,用于汽车电子和工业自动化领域的一些系统也没有动态内存分配,比如WindRiver著名的OSEKWorks系统。然而,仅仅采用静态分配,使系统失去了灵活性。必须在设计阶段就预先知道所需要的内存并对之作出分配;必须在设计阶段就预先考虑到所有可能的情况,因为一旦出现没有考虑到的情况,正在运行的系统就无法处理。这样的分配方案必然导致很大的浪费。因为内存分配必须按照最坏情况进行最大的配置,而实际运行时很可能只使用其中的一小部分;而且在硬件平台不变的情况下,不可能灵活地为系统添加功能,从而使得系统的升级变得困难。

虽然动态内存分配会导致响应和执行时间不确定、内存碎片等问题,但是它的实现机制灵活,给程序实现带来极大的方便,有的应用环境中动态内存分配甚至最必不可少的。比如,嵌入式系统中使用的网络协议栈,在特定的平台下,为了比较灵活地调整系统的功能,在系统中各个功能之间作出权衡,必须支持动态内存分配。例如,为了使系统能够及时地在支持的VLAN数和支持的路由条目数之间作出调整,或者为了使不同的版本支持不同的协议,类似于malloc和free这类的函数是必不可少的。

大多数的系统是硬实时和软实时综合。系统中的一部分任务有严格的时限要求,而另一部分只是要求完成得越快越好。按照RMS(Rate Monotonous Scheduling)理论,这样的系统必须采用抢先式任务调度;而在这样的系统中,就可以采用动态内存分配来满足部分对可靠性和实时性要求不高的任务。采用动态内存分配的最大好处就是给设计得很大的灵活性,可以方便地将原来运行于非嵌入式操作系统的程序移植到嵌入式系统中。

[1] [2] [3] 下一页

下页更精彩:1 2 3 4 下一页