首页 > 嵌入式软件 > vxworks

1 嵌入式系统中对内存分配的要求

本文引用地址: http://embed.21ic.com/software/vxworks/201710/48902.html

①快速性。

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

②可靠性。

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

③高效性。

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

2 静态分配与动态分配

究竟应用使用静态分配还是动态分配,一直是嵌入式系统设计中一个争论不休的总是。当然,最合适的答案是对于不同的系统采用不同的方案。如果是系统对于实时性和可靠性的要求极高(硬实时系统),不能容忍一点延时或者一次分配失败,当然需要采用静态分配方案,也就是在程序编译时所需要的内存都已经分配好了。例如,火星探测器上面的嵌入式系统就必须采用静态分配的方案。

另外,WindRiver公司的一款专门用于汽车电子和工业自动化领域的实时操作系统 OSEKWorks中就不支持内存的动态分配。在这样的应用场合,成本不支持内存的动态分配。在这样的应用场合,成本不是优先考虑的对象,实时性和可靠性才是必须保证的。当然,采用静态分配一个不可避免的总是就是系统失去了灵活性,必须在设计阶段就预先知道所需要的内存并对之作出分配;必须在设计阶段就预先考虑到所有可能的情况,因为一旦出现没有考虑到的情况,系统就无法处理。

这样的分配方案必须导致很大的浪费,因为内存分配必须按照最坏情况进行最大的配置,而实际上在运行中可能使用的只是其中的一小部分;而且在硬件平台不变的情况下,不可能灵活地为系统添加功能,从而使得系统的升级变得困难。 大多数的系统是硬实时系统和软实时系统的综合。也就是说,系统中的一部分任务有严格的时限要求,而另一部分只是要求完成得越快越好。

按照RMS(Rate Monotoin Scheduling)理论,这样的系统必须采用抢先式任务调度;而在这样的系统中,就可以采用动态内存分配来满足那一部分可靠性和实时性要求不那么高的任务。采用动态内存分配的好处就是给设计者很大的灵活性,可以方便地将原来运行于非嵌入式操作系统的程序移植到嵌入式系统中,比如,许多嵌入式系统中使用的网络协议栈。如果必须采用静态内存分配,移植这样的协议栈就会困难得多。另外,采用动态内存分配可以使设计者在不改变基本的硬件平台的情况下,比较灵活地调整系统的功能,在系统中各个功能之间作出权衡。例如,可以在支持的VLAN数和支持的路由条目数之间作出调整,或者不同的版本支持不同的协议。

说到底,动态内存分配给了嵌入式系统的程序设计者在比较少的限制和较大的自由。因此,大多数实时操作系统提供了动态内存分配接口,例如malloc和free 函数。

3 RTOS提供的内存分配接口

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

下面详细介绍一下我们常用的RTOS——美国风河公司(WindRiver)的VxWorks中采用的内存分配策略。

VxWorks的前身就是VRTX,据说VxWorks的名称来自make vrtx work。 VxWorks的内存管理函数存在于2个库中;memPartLib(紧凑的内存分区管理器)和memLib(完整的内存分区管理器)。前者(memPartLib)提供的工具用于从内存分区中分配内存块。该库包含两类程序,一类是通用工具创建和管理内存分区并从这些分区中分配和管理内存块;另一类是标准的malloc/free程序提供与内存分区的接口。系统内存分区(其ID为memSysPartId是一个全局变量)在内核初始化时由 usrRoot调用memInit创建。其开始地址为RAM中紧接着VxWorks的BSS段之后,大小为所有空闲内存,如图1所示。

 

1.jpg

当创建其它分区时,一般需要先调用malloc从系统内存分区中分配一段内存才能创建。内存分区的结构定义为mem_part,包含1个对象标记,1个双向链表管理空闲块,1个信号量保护该分区及一些统计信息,如总尺寸、最大块尺寸、调试选项、已分配的块数、已分配的尺寸等。其语句如下: typedef struct mem_part { OBJ_CORE objCore; /*对象标志*/ DL-LIST freeList; /*空闲链表*/ SEMAPHORE sem; /*保护分区的信号量*/ Unsigned totalWords; /*分区中字(WORD)数*/ Unsigned minBlockWords; /*以字为单位的最小块尺寸*/ Unsigned options; /*选项,用于调试或统计*/ /*分配统计*/ unsigned curBlocksAllocated; /*当前分配的块数*/ unsigned curWorkdAllocated; /*当前分配的字数*/ unsigned cumBlockAllocated; /*累积分配的块数*/ unsigned cumWordsAllocated; /*累积分配的字数*/ }PARTITION; 一般系统中只有1个内存分区,即系统分区,所有任务所需要的内存直接调用malloc从其中分配。

分配采用First-Fit算法(注意这种算法容易导致大量碎片),通过free释放的内存将被聚合以形成更大的空闲块。这就是VxWorks的内存分配机理。分配时可以要求一定的对齐格式。注意,不同的 CPU架构有不同的对齐要求。为了优化性能,malloc返回的指针是经过对齐的,为此的开销随构不同而不同。例如,68K为4字节对齐,开销8字节;SPARC为8字节对齐,开销12字节;MIPS为16字节对齐,开销12字节;I960为16字节对齐,开销16字节。

换一批

延伸阅读

[真心话] 争夺5G空窗期“蛋糕” 运营商较劲4.5G时代

争夺5G空窗期“蛋糕” 运营商较劲4.5G时代

孟庆建市场普遍预计5G商用要等到2020年,但运营商已表现的迫不及待,欲提前摘取5G关键技术在空窗期商用。近日,华为、中兴双双与软银等运营商伙伴发布了“后4G”时代技术解决方案。7月13日,中兴通讯与日本软银正式签订5G战略合作协议,双方将......

关键字:中国移动 中兴通讯 解决方案 合作协议 华为中兴

[疯狂史] 电子研发低成本方案导致的灾难性后果

电子研发低成本方案导致的灾难性后果

作为电子研发的老兵,面对各种纷繁复杂的问题,加班加点是家常便饭,绞尽脑汁甚至抓狂是常态。经常发现当项目进展到你想砸掉设备的时候,再坚持一步你就成功了。但是有一个项目却因为坚持,到现在每每想起我都心痛郁闷不已。......

关键字:电子研发 低成本方案 后果

[趣科技] 智能饮水瓶,给你提供最佳补水方案

智能饮水瓶,给你提供最佳补水方案

剑桥咨询(Cambridge Consultants)的研究发展中心研制开发了一种健康概念产品——“i-dration”,为热爱运动的人们提供最佳补水方案。上图中这个外形像拉长了的水滴状的瓶子......

关键字:方案

[新鲜事] 美国WiFi也不怎么样嘛,Google推Chromecast转换器

美国WiFi也不怎么样嘛,Google推Chromecast转换器

两年前,Google推出Chromecast电视棒,由于可以插入电视机的HDMI接口让用户在电视上播放网络传输的视频内容,这款售价低廉(35美元)的产品迅速在亚马逊上卖到脱销。但在一片叫好声中,也有人称Chromecast存在一些问题,比如......

关键字:亚马逊 解决方案 Google 网络连接 转换器

[新鲜事] 中国银联与 UC 优视浏览器合作,推出移动支付方案

中国银联与 UC 优视浏览器合作,推出移动支付方案

现在很对国内的智能手机用户支付的时候都选择支付宝,不过现在又有了一个新选择,那就是中国银联与UC优视浏览器合作推出来的移动支付解决方案。这次方案覆盖的平台包括Symbian,iOS,Android和WindowsPhone,Java平台......

关键字:UC 浏览器 移动支付 方案

[新鲜事] 浅析固网移动融合解决方案

浅析固网移动融合解决方案

 一、 固网移动融合已成为行业主流趋势  FMC,直观的理解是固定与移动融合,但运营商在实施过程中,怎么进行融合,融合到什么程度则有不同的方式和路线。  固定和移动融合的方式体现在业务、技术、网络、体制、......

关键字:固网 方案 移动

[真心话] 蓝牙才是最适合物联网智能家居的解决方案?

蓝牙才是最适合物联网智能家居的解决方案?

下班路上,打开手机点几下,家里的灯自动开了、空调开始制冷、热水器自动烧水;这些早已不是科幻电影中的场景,近两年越来越热的智能家居正将这些逐步变为现实。但需要明确的是,是逐步,不是已经,智能家居看似迎来了春天,步伐却还停留在冬天。据一组中关村......

关键字:中关村 解决方案 调查报告 科幻电影 热水器

[新鲜事] 高通芯片卖不出去了,拿给微软做低端Win10手机

高通芯片卖不出去了,拿给微软做低端Win10手机

7月17日消息,高通已与微软达成合作,并计划于今年第四季度推出80美元甚至是更低价格的智能手机。据悉,高通此举是为了消化库存,与微软合作的这些Windows Phone手机,将采用高通MSM8909入门级解决方案,由于Window......

关键字:高通芯片 联发科 解决方案 智能手机 微软

[新鲜事] 4.5G来了,2G电影下载仅需27秒

4.5G来了,2G电影下载仅需27秒

消息,7月14日,华为携手中国移动、日本软银等众多产业合作伙伴共同发布了TDD+解决方案。据悉,TDD+是TDD技术的长期演进,是4.5G的核心组成部分。相信大家都会疑惑,为什么会有4.5G?华为无线网络产品线总裁汪涛表示,现有的网络技术无......

关键字:中国移动 电影下载 解决方案 网络技术 无线网络

[新鲜事] 股东大会高票通过合并方案,优酷土豆集团正式成立

股东大会高票通过合并方案,优酷土豆集团正式成立

早在 3 月的时候我们就听到了优酷、土豆将合二为一的消息,但直到今天两者才在香港召开了双方股东大会。会上对合并方案进行了投票,结果是高票通过,等待了 5 个月的优酷土豆集团公司终于正式成立了。合并通过 100%......

关键字:合并 方案

[真心话] 云医疗时代提速 大数据深度整合

云医疗时代提速 大数据深度整合

6年前,云计算创业“无人喝彩”,6年后的今天,阿里云已成长为全球领先的云计算服务平台。昨日,首届阿里云分享日暨云栖大会北京峰会召开,其中的医疗论坛引发国内互联网医疗创业企业和V C的关注。自去年启动“云合计划”后,阿里云上已汇聚5......

关键字:云计算 解决方案 阿里云 互联网 北京
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi®和蓝牙®combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14