嵌入式系统的动态内存管理方法、系统、终端及存储介质与流程

文档序号:37359435发布日期:2024-03-22 10:13阅读:11来源:国知局
嵌入式系统的动态内存管理方法、系统、终端及存储介质与流程

本技术涉及动态内存管理,尤其是涉及嵌入式系统的动态内存管理方法、系统、终端及存储介质。


背景技术:

1、在嵌入式系统开发过程中,有宿主机和目标机的角色之分:宿主机是执行编译、链接嵌入式软件的计算机;目标机是运行嵌入式软件的硬件平台,例如,pc机就是常用的宿主机,而开发板则是目标机。由于目标机小容量的特性,其不能支持大容量介质,如内嵌可擦除可编程只读存储器(erasable programmable read-only memory,e-prom)和带电可擦可编程只读存储器(electrically erasable programmableread only memory,eeprom),因此目标机不能实现大容量的存储功能。

2、现有技术中,为了保障目标机正常运行嵌入式软件,保障嵌入式系统稳定运行。常用的内存管理方法主要包括堆方式和内存池方式,堆方式是在系统堆空间上按照嵌入式软件实际大小来分配一页内存,已经分配的内存页用链表串接管理,但是随着系统运行时间的变长,会产生大量的未被占用的内存碎片。内存池方式是按照一定粒度从小到大划分不同等级大小的内存,每个等级大小的内存配置一定的数量,但是由于不易统计各个等级大小的小内存数量,运行时只能尽量配置,从而造成内存空间的浪费。

3、因此,现有的嵌入式系统中的内存管理方法,很难满足目标机需要频繁申请内存的要求,使得嵌入式系统的可靠性降低,维护成本变高。


技术实现思路

1、本技术提供一种嵌入式系统的动态内存管理方法、系统、终端及存储介质,具有节约嵌入式系统的内存空间资源的特点。

2、本技术目的一是提供一种嵌入式系统的动态内存管理方法。

3、本技术的上述申请目的一是通过以下技术方案得以实现的:

4、在本技术的第一方面,提供了一种嵌入式系统的动态内存管理方法。该方法包括:

5、获取请求内存指令,所述请求内存指令包括软件类型和占用内存量;

6、根据所述软件类型确定目标内存区域,目标内存区域为长期内存区域、大内存区域以及小内存区域中的其中一种;

7、在所述目标内存区域中,判断是否存在内存块大于所述占用内存量的内存页,所述内存页至少由一个内存块组成;

8、若是,则将所述内存块大于且最接近于所述占用内存量的内存页标记为目标内存页,并将所述目标内存页中的其中一个空闲内存块分配给嵌入式软件,所述空闲内存块为未被占用的内存块;

9、若否,则将所述目标内存区域中的其中一个空闲内存页分配给嵌入式软件,所述空闲内存页为未被占用的内存页。

10、通过采用上述技术方案,根据接收到的申请内存指令确定为嵌入式软件提供内存空间的目标内存区域,在目标内存区域内,判断是否存在内存块大于占用内存量的内存页。若存在,将目标内存页中的其中一个空闲内存块分配给嵌入式软件,以便于嵌入式软件占用。否则,调取空闲内存页分配给嵌入式软件占用。也就是说,针对部分内存块被占用的内存页,在嵌入式软件有相同的内存量需求时,优先从该部分的内存页中寻找可利用的内存块;当无法利用部分内存块被占用的内存页时,再继续分配新的空闲内存页,从而减少嵌入式软件占用的内存页个数。因此,本技术能够支持嵌入式软件频繁地向嵌入式系统申请内存量,还能够充分地利用嵌入式软件已经申请的内存空间,从而实现节约嵌入式软件的内存空间资源的目的。

11、在一种可能的实现方式中:所述将所述目标内存页中的其中一个空闲内存块分配给嵌入式软件,包括:

12、调取所述目标内存页的第二管理表,所述第二管理表用于管理所述目标内存页;

13、所述第二管理表从所述目标内存页的空闲内存块中选择排序第一的空闲内存块分配给所述嵌入式软件。

14、通过采用上述技术方案,由第二管理表有序的将空闲内存块分配给嵌入式软件占用,从而为减少嵌入式软件占用的内存页个数提供技术支持,也能够便于对目标内存页进行管理,从而节约内存空间资源。

15、在一种可能的实现方式中:所述方法还包括:所述第二管理表中存储有串表信息,所述串表信息用于指向与其相邻的第二管理表,任意两个相邻的第二管理表所管理的内存页的内存块大小相同。

16、通过采用上述技术方案,管理的内存页的内存块大小相同的多个第二管理表互相关联,从而在定位到其中一个第二管理表且该第二管理表无法为嵌入式软件提供空闲的内存块时,能够由互相关联的第二管理表为嵌入式软件提供空闲的内存块,从而提高本技术的分配内存资源的效率,保障嵌入式软件的及时性。

17、在一种可能的实现方式中:所述软件类型为仅申请内存而不释放内存的类型和在运行时申请内存而在结束运行时释放内存的类型中的其中一种;

18、所述根据所述软件类型确定目标内存区域,包括:

19、当所述软件类型为仅申请内存而不释放内存的类型时,将所述长期内存区域标记为目标内存区域;

20、当所述软件类型为在运行时申请内存而在结束运行时释放内存的类型时,判断所述小内存区域是否满足:

21、,

22、若是,则将所述大内存区域标记为目标内存区域;

23、若否,则将所述小内存区域标记为目标内存区域。

24、通过采用上述技术方案,本技术优先在小内存区域中为嵌入式软件分配其所需的内存,以此来避免占用内存量较小的嵌入式软件独占大内存区域中的较大的内存块,即能够节约大内存区域中的内存资源。

25、在一种可能的实现方式中:所述目标内存区域包括内存页和第一管理表,所述第一管理表用于管理目标内存区域中的所有内存页;

26、所述第一管理表中配置有定位指针,所述定位指针用于串接所述目标内存区域中的所有空闲内存页。

27、通过采用上述技术方案,由第一管理表管理内存页,从而为减少嵌入式软件占用的内存页个数提供技术支持。

28、在一种可能的实现方式中:所述方法还包括:所述定位指针按照“未被占用过且排序在前>被释放在前”的优先级顺序指向所有空闲内存页。

29、通过采用上述技术方案,使得第一管理表能够动态的管理所有空闲内存页,以保障第一管理表的稳定性。

30、在一种可能的实现方式中:当所述大内存区域作为所述目标内存区域时,所述方法还包括:

31、当所述内存块小于所述占用内存量或者不存在空闲内存块时,根据所述占用内存量和预设的内存块配置表将新的内存页划分为多个内存块,并将所述新的内存页的第二行的内存块的地址返回给所述嵌入式软件。

32、通过采用上述技术方案,当确实不存在空闲的内存块或者内存块小于占用内存量时,则依据占用内存量和预设的内存块配置表将新的内存页划分为多个内存块。由于被划分的新的内存页中,除了第一行被占用外,第二行至最后一行的内存块并未被占用,所以将第二行的内存块的地址返回给嵌入式软件,由嵌入式软件占用第二行的空闲内存块,从而减少嵌入式软件占用的内存页个数。

33、在本技术的第二方面,提供了一种嵌入式系统的动态内存管理系统。该系统包括:

34、数据获取模块,用于获取请求内存指令,所述请求内存指令包括软件类型和占用内存量;

35、数据判断模块,用于根据所述软件类型确定目标内存区域,目标内存区域为长期内存区域、大内存区域以及小内存区域中的其中一种;

36、第一处理模块,用于在所述目标内存区域中,判断是否存在内存块大于所述占用内存量的内存页,所述内存页至少由一个内存块组成;

37、第二处理模块,用于在目标内存区域中,存在内存块大于所述占用内存量的内存页时,则将所述内存块大于且最接近于所述占用内存量的内存页标记为目标内存页,并将所述目标内存页中的其中一个空闲内存块分配给嵌入式软件,所述空闲内存块为未被占用的内存块;还用于在目标内存区域中,不存在内存块大于所述占用内存量的内存页时,将所述目标内存区域中的其中一个空闲内存页分配给嵌入式软件,所述空闲内存页为未被占用的内存页。

38、在本技术的第三方面,提供了一种嵌入式系统的动态内存管理终端。该终端包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现上述任一种嵌入式系统的动态内存管理方法。

39、在本技术的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一种嵌入式系统的动态内存管理方法。

40、综上所述,本技术包括以下至少一种有益技术效果:

41、本技术首先是将嵌入式软件的内存空间划分为三个内存区域,当接收到嵌入式软件发送的请求内存指令时,首先根据请求内存指令为其匹配合适的内存区域。在匹配所得的内存区域中,针对部分内存块被占用的内存页,在嵌入式软件有相同的内存量需求时,优先从该部分的内存页中寻找可利用的内存块;当无法利用部分内存块被占用的内存页时,再继续分配新的内存页,从而减少嵌入式软件占用的内存页个数。因此,本技术能够支持嵌入式软件频繁地向嵌入式系统申请内存量,还能够充分地利用嵌入式软件已经申请的内存空间,减少嵌入式系统内存碎片,从而实现节约嵌入式软件的内存空间资源的目的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1