专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Linux » linux嵌入式系统:Linux嵌入式系统的内存管理思路方法详细介绍 »正文

linux嵌入式系统:Linux嵌入式系统的内存管理思路方法详细介绍

来源: 发布时间:星期三, 2008年12月17日 浏览:2次 评论:0
  1. 嵌入式系统中对内存分配要求

  ①快速性

  嵌入式系统中对实时性保证要求内存分配过程要尽可能地快因此在嵌入式系统中不可能采用通用操作系统中复杂而完善内存分配策略般都采用简单、快速内存分配方案当然对实性要求区别分配方案也有所区别例如VxWorks采用简单最先匹配如立即聚合思路方法;VRTX中采用多个固定尺寸binning方案

  ②可靠性

  也就是内存分配请求必须得到满足如果分配失败可能会带来灾难性后果嵌入式系统应用环境千变万化其中有些是对可靠性要求极高比如汽车自动驾驶系统中系统检测到即将撞车如果内存分配失败而不能相应操作就会发生车毁人亡事故这是不能容忍

  ③高效性

  内存分配要尽可能地少浪费不可能为了保证满足所有内存分配请求而将内存配置得无限大方面嵌入式系统对成本要求使得内存在其中只是种很有限资源;另方面即使不考虑成本原因系统有限空间和有限板面积决定了可配置内存容量是很限

  2. 静态分配和动态分配

  究竟应用使用静态分配还是动态分配直是嵌入式系统设计中个争论不休总是

  当然最合适答案是对于区别系统采用区别方案如果是系统对于实时性和可靠性要求极高(硬实时系统)不能容忍点延时或者次分配失败当然需要采用静态分配方案也就是在编译时所需要内存都已经分配好了例如火星探测器上面嵌入式系统就必须采用静态分配方案另外WindRiver公司款专门用于汽车电子和工业自动化领域实时操作系统OSEKWorks中就不支持内存动态分配在这样应用场合成本不支持内存动态分配在这样应用场合成本不是优先考虑对象实时性和可靠性才是必须保证

  当然采用静态分配个不可避免总是就是系统失去了灵活性必须在设计阶段就预先知道所需要内存并对的作出分配;必须在设计阶段就预先考虑到所有可能情况旦出现没有考虑到情况系统就无法处理这样分配方案必须导致很大浪费内存分配必须按照最坏情况进行最大配置而实际上在运行中可能使用只是其中小部分;而且在硬件平台不变情况下不可能灵活地为系统添加功能从而使得系统升级变得困难 大多数系统是硬实时系统和软实时系统综合

  也就是说系统中部分任务有严格时限要求而另部分只是要求完成得越快越好按照RMS(Rate Monotoin Scheduling)理论这样系统必须采用抢先式任务调度;而在这样系统中就可以采用动态内存分配来满足那部分可靠性和实时性要求不那么高任务采用动态内存分配好处就是给设计者很大灵活性可以方便地将原来运行于非嵌入式操作系统移植到嵌入式系统中比如许多嵌入式系统中使用网络协议栈如果必须采用静态内存分配移植这样协议栈就会困难得多另外采用动态内存分配可以使设计者在不改变基本硬件平台情况下比较灵活地调整系统功能在系统中各个功能的间作出权衡例如可以在支持VLAN数和支持路由条目数的间作出调整或者区别版本支持区别协议说到底动态内存分配给了嵌入式系统设计者在比较少限制和较大自由因此大多数实时操作系统提供了动态内存分配接口例如malloc和free

  3. RTOS提供内存分配接口

  区别RTOS由于其区别定位采用区别内存分配策略

  例如VRTX中采用类似于GNU C中由Doug Lea开发内存分配方案即Binning算法系统内存被分成了些固定尺寸内存块算法系统内存被分成了些固定尺寸内存块集合这种思路方法优点是查找速度快而且不会产生内存碎片但是缺点也很明显就是容易造成浪费内存块尺寸只有有限个分配时只能取较大内存块来满足个较小需求累积起来浪费就很大了;而且操作系统管理这样个内存分配表也是个很大负担

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: