[发明专利]嵌入式系统静态内存池的分配方法有效
申请号: | 201510332442.0 | 申请日: | 2015-06-16 |
公开(公告)号: | CN104965795B | 公开(公告)日: | 2018-02-27 |
发明(设计)人: | 吴广富;王俊伟;李云;曹傧 | 申请(专利权)人: | 重庆邮电大学 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 重庆市恒信知识产权代理有限公司50102 | 代理人: | 刘小红 |
地址: | 400065 *** | 国省代码: | 重庆;85 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 嵌入式 系统 静态 内存 分配 方法 | ||
技术领域
本发明涉及一种静态内存分配方法,尤其是一种应用于移动终端系统静态内存池的分配方法。
背景技术
当前嵌入式系统的应用非常广泛,嵌入式系统受体积、功耗等限制,所集成的内存往往较小,因此在嵌入式系统设计中如何提高内存使用效率成为人们非常关心问题。嵌入式系统一般使用在实时性比较高的场合,一般情况下会集成一个实时操作系统,下面以应用于移动终端(手机终端或卫星终端)的操作系统Nucleus Plus为例进行说明。
Nucleus Plus操作系统是对物理内存进行管理,内存分配分为动态内存分配和静态内存分配。动态内存分配是从一块足够大的内存中动态地分配或回收请求大小内存块;而静态内存分配是从已分配好的内存池的单块内存(各单块内存大小相等)中的申请一块内存。在系统初始化过程中,需要根据系统申请静态内存的情况来确定初始内存池个数M、内存池的单块内存大小Y以及单块内存个数L。初始内存池个数越多,内存碎片越少,内存管理也越复杂。在实际嵌入式操作系统中,通常为了静态内存管理方便,而严格控制初始内存池个数,从而造成大量静态内存碎片,因此需要采用静态内存池分配算法将系统总内存碎片控制在一定范围内。
静态内存池分配方法评估准则为:在内存池个数一定情况下,总内存碎片是否最小。当前静态内存池分配方法为枚举法和矢量量化法。枚举法是:对申请的静态内存块X按照从小到大顺序排序;根据内存块X的最小、最大值确定内存池单块内存大小所有可能值Y,共N个;计算在N个值中取M个内存池的所有组合数;每个组合数可以确定1组内存池,将申请的静态内存块X根据在该组内存池按照其单块内存池大小进行分组,计算各内存池的总内存碎片;当总内存碎片最小时,其对应组合数所确定的M个内存池为最优内存池分配。其计算复杂度为其中N!表示N的阶乘。
矢量量化法是首先在申请的静态内存块X的最小、最大值之间,随机选取M个值G,将申请内存块X按照与G之间距离最小,分为M个内存池;计算每个内存池内所有内存块与其均值的均方误差并求和;用各内存池的内存块均值更新G并再次进行上述计算;当最近两次迭代得到的内存块均方误差和之间的误差足够小时,则由G确定的M个内存池作为最终分配的内存池。其计算复杂度与迭代次数有关。
使用枚举法进行静态内存池分配可以得到最小的内存碎片值,然而当静态内存块X的最大值较大(大于105字节),内存池个数M较大(大于20)时,其计算复杂度为几乎不可计算值。使用矢量量化法进行静态内存分配很难得到较小的总内存碎片值,该方法精度与初始M个内存池分布有关,并且该方法收敛性不好,因此算法精度很难提高。
发明内容
鉴于以上问题,本发明的目的在于提供一种适应于移动终端系统的嵌入式系统静态内存池分配方法。本方法采用内存池裂变思想进行内存池分配,即通过内存池的逐次裂变,根据内存池的不同裂变方式下总内存碎片最小,选择最佳的内存池裂变方式,由此将原内存池中的一个内存池裂变为两个内存池。依次按照上述方式进行内存池裂变,内存池的每次裂变引入一个新内存池,当引入的内存池个数满足嵌入式系统即终止内存池裂变。本发明算法精度显著高于矢量量化法,而其算法复杂度仅为O(NM)。
本发明提供的静态内存池的分配方法为递推过程,包含以下主要过程:
A.利用嵌入式操作系统统计,当前系统中静态内存块个数I及每个静态内存块大小X(i),同时初始化内存池个数M;
B.计算内存池的所有可能边界值;
C.计算第1个内存池的边界值;
D.将所述第1个内存池裂变为两个,并确定第2个内存池的边界值;
E.将D中得到的所述两个内存池裂变为三个,并确定第3个内存池的边界值;
F.逐次进行上述内存池裂变过程,当总内存池个数为M时,则静态内存池分配过程结束。
进一步的,所述计算内存池的所有可能边界值,具体为:假定内存池分配的最小单位值为S(其取值范围为字或字的整数倍);则内存池的最小边界值为其中表示向下取整,其最大边界值为其中表示向上取整;在内存池的最小和最大边界值之间,以步长S为间隔的所有内存值为内存池的所有可能边界值,见公式(1)。内存池则由其单块内存的最大边界值唯一决定。X(1)表示静态内存块大小。
进一步的,所述计算第一个内存池的边界值,具体为:最大边界值为第一个内存池的最大边界值,即所有申请的静态内存块都小于或等于该最大边界值。按照公式(2)计算此时总内存碎片值,即所有申请的静态内存块与最大边界值之差的绝对值并累加。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆邮电大学,未经重庆邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510332442.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种终端
- 下一篇:智能设备的测试方法和装置