当前位置:首页 > 芯闻号 > 充电吧
[导读]1、vxworks内存管理基本概念(1)内存和外部存储器的概念:一般RAM属于内存而Flash、ROM、NVRAM是嵌入式操作系统的外部存储器;(2)操作系统的内存分配一般都在系统启动或者复位的情况下

1、vxworks内存管理基本概念

(1)内存和外部存储器的概念:一般RAM属于内存而Flash、ROM、NVRAM是嵌入式操作系统的外部存储器;

(2)操作系统的内存分配一般都在系统启动或者复位的情况下进行,在运行时尽量避免内存动态申请和释放,因为这样会带来系统的不稳定性;

(3)vxworks为用户提供了2中内存区域:一种是Region内存域,是可变长的内存区域;另一种是partition内存分区,是定长的;vxworks内核和应用程序对内存的操作都是基于内存分区进行的;

2、vxworks中的内存布局

(1)vxworks 中主要涉及到的内存单元的概念有:内存分区、内存池、内存块;

①内存池是一块连续的内存区域,包含一块或者多块内存块;这些区域由memPartAlloc和memPartFree来申请和释放;

②内存分区:包含自身的描述信息和一个或者多个内存池,描述信息保存在内存分区中而内存池就是该内存分区拥有的实际内存空间;内存分区在刚创建的时候

只有一个内存池,用户程序可以往该内存分区中增加别的内存池,操作系统和通常大部分用户对内存的操作,都发生在系统的内存池中;

(2)vxworks启动的是BootRom+vxworks方式,那么系统中先后存在2种内存布局;

①BootRom运行时的内存布局:

reboot启动系统时,内存RESERVED和USE_REVERSE_MEM不会清楚UIqing这俩快内存区域,系统冷启动时会清楚所有的内存区域;因此可以利用热启动不进行清清除这俩块内存区域来记录一些非常关键的信息写入USE_REVERSE_MEM中来 解决问题,

②vxworks运行时内存布局


3、内存分配的算法 (1)内存的管理方法分为2种,可用表和自由链;

①可用表:即一张二维表格,每个表项记录了一个空闲内存块,主要参数包括块号、长度、起始地址;管理比较简单,但是表的大小无法确定,自身需要占用内存;

②自由链:自由链利用每个空闲块开始的几个内存单元存放本空闲块的大小以及下个空闲块的起始地址;缺点是查询量较大,但是自由链指针利用了自身的空闲单元,因此不需要额外占用内存块;链表大小没有限制,容易添加或者删除节点,vxworks中利用自由链来管理内存空闲块;

(2)内存分配算法:可以分为三种,最先适应法、最佳适应法和最坏适应法;

①最先适应法:可用表和自由链按起始地址递增的次序排列,特点:一旦找到大于或者等于所要求的内存长度的内存块,则结束搜索;该算法将从找到的内存划分出用户需要的内存分配给用户,如果相邻的有空闲块则将剩余部分与空闲块合并;

②最佳适应法:要求空闲内存块按照从小到大的次序组成可用表或自由链。当系统申请一个内存时,内存管理程序从表头开始查找直到找到大雨裹着等于需要的空闲内存块为止,当内存块大于申请的内存块时,按照最先适应法去处理;

③最坏适应法:与最佳适应法正好相反,要求空闲块按照从大到小的次序组成可用表或者西游链,当系统申请内存时首先检查第一个空闲块的大小是否等于或大于所要求的内存块大小,如果大于则分配给用户,然后调整空闲块的可用表或者自由链;

三种方法最佳适应法具有最佳性能,由于最先适应法和最坏适应法都需要对空闲内存块进行排序,而最佳适应法只是调整空闲块的大小,位置并未发生改变;最先适应法得到的内存空间最接近用户所需求内存的大小,往往剩下的空闲内存块会很小,不便于得到利用,容易产生碎片;相反最坏适应法剩下的空闲块可能会大,容易被使用,相对减少内存碎片的产生;vxworks基于以上原因和嵌入式系统的实时性采用了最先适应法;vxworks没有清楚碎片的功能,因此在实时系统设计中应该尽量避免内存碎片的产生;

4、内存管理API函数

1、创建内存分区memPartCreate,该函数创建了一个内存分区,包含一个内存值,返回值为分区ID,以便之后进行操作,有了内存分区就方便管理多个内存池;

PART_ID memPartCrete

{

/*内存分区的起始地址*/

char *pPool;

/*内存分区的大小*/

unsigned poolSize;

}

2、memPartAddToPool在内存分区中增加一个额外单独的内存池,每调用一次memPartAddToPool分区中的内存池数量就加1;一个分区中相邻的内存池地址不一定连续创建成功返回OK,失败返回ERROR;

STATUS memPartAddToPool

{

/*内存分区的ID*/

FAST PART_ID partId;

/*内存池的起始地址*/

FAST char *pPool;

/*内存池的大小*/

FAST unsigned poolSize;

}

3、memPartAlignedAlloc在指定内存分区的内存池中分配一个内存块时2的整数次幂的内存块;

void *memPartAlignedAlloc

{

FAST PART_ID partId;

unsigned nBytes;

unsigend aligment;

}

在没有内存共享的情况下memPartAlignedAlloc和memPartAlloc作用相同;

4、memPartFree/malloc/free/calloc/cfree登;


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭