嵌入式系统的内存管理方法和装置制造方法及图纸

技术编号:17970360 阅读:31 留言:0更新日期:2018-05-16 11:17
本发明专利技术提供一种嵌入式系统的内存管理方法和装置,该方法,包括:以页为最小申请单位,接收针对用户管理内存区的内存页申请请求;根据内存页申请请求,分配预设大小的内存页;对分配的内存页进行格式化后,将每个内存页划分为大小相同的内存片;在每个内存页的开始处创建SLAB管理结构,并在SLAB管理结构后创建内存片管理表;或者,在用户管理内存区中的一个预设的缓存中申请内存块用于创建SLAB管理结构,并在SLAB管理结构后创建内存片管理表;SLAB管理结构还用于根据内存片管理表分配内存片给应用程序。本发明专利技术可以根据应用程序请求进行频繁地内存申请,内存利用率高。

【技术实现步骤摘要】
嵌入式系统的内存管理方法和装置
本专利技术涉及嵌入式系统
,尤其涉及一种嵌入式系统的内存管理方法和装置。
技术介绍
嵌入式系统是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统,嵌入式系统的应用领域非常广泛,但是,嵌入式系统的运算能力和存储能力都不能和计算机相比。因此,嵌入式系统中必须设置高效、可靠的内存管理方法,以提高嵌入式系统的内存利用率,保证受控器件的稳定运行。现有的嵌入系统的内存管理方法主要包括堆方式和内存池方式,堆方式是在系统堆空间上按照应用程序实际大小来分配一块内存,已经分配的内存用链表串接管理,但是随着系统运行时间的变长,会产生大量的内存碎片。内存池方式是按照一定粒度从小到大划分不同等级大小的内存,每个等级大小的小内存配置一定的数量,但是由于不易统计各个等级大小的小内存数量,运行时只能尽量配置,从而造成内存空间的浪费。现有的嵌入式系统内存管理方法,很难满足需要频繁申请、释放内存的受控器件的运行要求,使得受控器件的可靠性降低,维护成本变高。
技术实现思路
本专利技术提供一种嵌入式系统的内存管理方法和装置,以满足需要进行频繁内存申请、释放的受控器件对内存管理的要求,提高受控器件的内存利用率和可靠性。第一方面,本专利技术提供一种嵌入式系统的内存管理方法,应用在嵌入式系统的物理内存中,所述嵌入式系统的物理内存包括:系统管理内存区和用户管理内存区,所述系统管理内存区由嵌入式系统的操作系统进行管理,所述用户管理内存区是指可根据应用程序进行预先申请分配的内存区;所述方法包括:以页为最小申请单位,接收针对所述用户管理内存区的内存页申请请求;根据所述内存页申请请求,分配预设大小的内存页;对分配的内存页进行格式化后,将每个内存页划分为大小相同的内存片;在每个内存页的开始处创建SLAB管理结构,并在SLAB管理结构后创建内存片管理表;或者,在所述用户管理内存区中的一个预设的缓存中申请内存块用于创建SLAB管理结构,并在SLAB管理结构后创建内存片管理表;其中,所述SLAB管理结构用于管理对应内存页划分的所有内存片;所述内存片管理表中包含对应SLAB管理结构所管理的所有内存片的地址信息,所述SLAB管理结构还用于根据内存片管理表分配内存片给应用程序。可选地,还包括:接收应用程序的内存申请请求;根据应用程序请求的内存大小,向所述应用程序分配所述内存片。可选地,在以页为最小申请单位,接收针对所述用户管理内存区的内存页申请请求之前,还包括:接收用户输入的对用户管理内存区进行初始化的请求;将所述用户管理内存区划分为若干个大小不同的内存页面分区块,每一内存页面分区块包含不同数目的对应大小的页,所述页的大小包括:4K、8K、16K、32K、64K、128K;所述页由位于固定位置的页面控制表进行维护,其中,大小为4K的页的数量可进行动态调整。可选地,在以页为最小申请单位,接收针对所述用户管理内存区的内存页申请请求之前,还包括:确定所述SLAB管理结构所管理的所有内存片已经全部被占用。可选地,在将申请的每个内存页划分为大小相同的内存片之后,还包括:根据内存片的大小对所述内存片进行分类,大小相同的内存片分为一类;按照预设内存片的数量和大小的要求,将内存片划分成多组片区,每组片区通过缓存检索链表与不同类型的缓存进行关联。可选地,所述根据应用程序请求的内存大小,向所述应用程序分配所述内存片,包括:根据应用程序请求的内存大小,从所述缓存检索链表中找到相应类型的缓存,并通过所述缓存对应的SLAB链表获取内存片后,分配给所述应用程序;其中,所述缓存检索链表用于指示不同类型缓存的大小,以及指示不同类型缓存的控制结构。可选地,在SLAB管理结构所管理的所有内存片均处于空闲状态时,还包括:删除对应SLAB链表中所述SLAB管理结构的信息,并清除所述SLAB管理结构管理的所有内存片对应内存页的控制项信息;其中,所述SLAB链表用于指示同一类缓存中创建的所有SLAB管理结构的信息,所述控制信息项包括:CACHE指针,和SLAB指针;将所述内存页放到空闲页的头部。第二方面,本专利技术提供一种嵌入式系统的内存管理装置,应用在嵌入式系统的物理内存中,所述嵌入式系统的物理内存包括:系统管理内存区和用户管理内存区,所述系统管理内存区由嵌入式系统的操作系统进行管理,所述用户管理内存区是指可根据应用程序进行预先申请分配的内存区;所述装置包括:第一接收模块,用于以页为最小申请单位,接收针对所述用户管理内存区的内存页申请请求;第一分配模块,用于根据所述内存页申请请求,分配预设大小的内存页;分片模块,用于对分配的内存页进行格式化后,将每个内存页划分为大小相同的内存片;管理模块,用于在每个内存页的开始处创建SLAB管理结构,并在SLAB管理结构后创建内存片管理表;或者,在所述用户管理内存区中的一个预设的缓存中申请内存块用于创建SLAB管理结构,并在SLAB管理结构后创建内存片管理表;其中,所述SLAB管理结构用于管理对应内存页划分的所有内存片;所述内存片管理表中包含对应SLAB管理结构所管理的所有内存片的地址信息,所述SLAB管理结构还用于根据内存片管理表分配内存片给应用程序。可选地,还包括:第二接收模块,用于接收应用程序的内存申请请求;第二分配模块,用于根据应用程序请求的内存大小,向所述应用程序分配所述内存片。可选地,还包括:分页模块,用于在以页为最小申请单位,接收针对所述用户管理内存区的内存页申请请求之前,接收用户输入的对用户管理内存区进行初始化的请求;用户管理内存分区初始化时,将所述用户管理内存区划分为若干个大小不同的内存页面分区块,每一内存页面分区块包含不同数目的对应大小的页,所述页的大小包括:4K、8K、16K、32K、64K、128K;所述页由位于固定位置的页面控制表进行维护,其中,大小为4K的页的数量可进行动态调整。可选地,第一接收模块,还用于在以页为最小申请单位,接收针对所述用户管理内存区的内存页申请请求之前,确定所述SLAB管理结构所管理的所有内存片已经全部被占用。可选地,管理模块,还用于在将申请的每个内存页划分为大小相同的内存片之后,根据内存片的大小对所述内存片进行分类,大小相同的内存片分为一类;按照预设内存片的数量和大小的要求,将内存片划分成多组片区,每组片区通过缓存检索链表与不同类型的缓存进行关联。可选地,第二分配模块,具体用于:根据应用程序请求的内存大小,从所述缓存检索链表中找到相应类型的缓存,并通过所述缓存对应的SLAB链表获取内存片后,分配给所述应用程序;其中,所述缓存检索链表用于指示不同类型缓存的大小,以及指示不同类型缓存的控制结构。可选地,管理模块,还用于在SLAB管理结构所管理的所有内存片均处于空闲状态时,删除对应SLAB链表中所述SLAB管理结构的信息,并清除所述SLAB管理结构管理的所有内存片对应内存页的控制项信息;其中,所述SLAB链表用于指示同一类缓存中创建的所有SLAB管理结构的信息,所述控制信息项包括:CACHE指针,和SLAB指针;将所述内存页放到空闲页的头部。第三方面,本专利技术提供一种嵌入式系统的内存管理设备,包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用本文档来自技高网...
嵌入式系统的内存管理方法和装置

【技术保护点】
一种嵌入式系统的内存管理方法,其特征在于,应用在嵌入式系统的物理内存中,所述嵌入式系统的物理内存包括:系统管理内存区和用户管理内存区,所述系统管理内存区由嵌入式系统的操作系统进行管理,所述用户管理内存区是指可根据应用程序进行预先申请分配的内存区;所述方法包括:以页为最小申请单位,接收针对所述用户管理内存区的内存页申请请求;根据所述内存页申请请求,分配预设大小的内存页;对分配的内存页进行格式化后,将每个内存页划分为大小相同的内存片;在每个内存页的开始处创建SLAB管理结构,并在SLAB管理结构后创建内存片管理表;或者,在所述用户管理内存区中的一个预设的缓存中申请内存块用于创建SLAB管理结构,并在SLAB管理结构后创建内存片管理表;其中,所述SLAB管理结构用于管理对应内存页划分的所有内存片;所述内存片管理表中包含对应SLAB管理结构所管理的所有内存片的地址信息,所述SLAB管理结构还用于根据内存片管理表分配内存片给应用程序。

【技术特征摘要】
1.一种嵌入式系统的内存管理方法,其特征在于,应用在嵌入式系统的物理内存中,所述嵌入式系统的物理内存包括:系统管理内存区和用户管理内存区,所述系统管理内存区由嵌入式系统的操作系统进行管理,所述用户管理内存区是指可根据应用程序进行预先申请分配的内存区;所述方法包括:以页为最小申请单位,接收针对所述用户管理内存区的内存页申请请求;根据所述内存页申请请求,分配预设大小的内存页;对分配的内存页进行格式化后,将每个内存页划分为大小相同的内存片;在每个内存页的开始处创建SLAB管理结构,并在SLAB管理结构后创建内存片管理表;或者,在所述用户管理内存区中的一个预设的缓存中申请内存块用于创建SLAB管理结构,并在SLAB管理结构后创建内存片管理表;其中,所述SLAB管理结构用于管理对应内存页划分的所有内存片;所述内存片管理表中包含对应SLAB管理结构所管理的所有内存片的地址信息,所述SLAB管理结构还用于根据内存片管理表分配内存片给应用程序。2.根据权利要求1所述的方法,其特征在于,还包括:接收应用程序的内存申请请求;根据应用程序请求的内存大小,向所述应用程序分配所述内存片。3.根据权利要求1所述的方法,其特征在于,在以页为最小申请单位,接收针对所述用户管理内存区的内存页申请请求之前,还包括:接收用户输入的对用户管理内存区进行初始化的请求;将所述用户管理内存区划分为若干个大小不同的内存页面分区块,每一内存页面分区块包含不同数目的对应大小的页,所述页的大小包括:4K、8K、16K、32K、64K、128K;所述页由位于固定位置的页面控制表进行维护,其中,大小为4K的页的数量可进行动态调整。4.根据权利要求1所述的方法,其特征在于,在以页为最小申请单位,接收针对所述用户管理内存区的内存页申请请求之前,还包括:确定所述SLAB管理结构所管理的所有内存片已经全部被占用。5.根据权利要求2所述的方法,其特征在于,在将申请的每个内存页划分为大小相同的内存片之后,还包括:根据内存片的大小对所述内存片进行分类,大小相同的内存片分为一类;按照预设内存片的数量和大小的要求,将内存片划分成多组片区,每组片区通过缓存检索链表与不同类型的缓存进行关联。6.根据权利要求5所述的方法,其特征在于,所述根据应用程序请求的内存大小,向所述应用程序分配所述内存片,包括:根据应用程序请求的内存大小,从所述缓存检索链表中找到相应类型的缓存,并通过所述缓存对应的...

【专利技术属性】
技术研发人员:贾利民隋平礼
申请(专利权)人:北京锦鸿希电信息技术股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1