内存管理方法及系统技术方案

技术编号:18496789 阅读:78 留言:0更新日期:2018-07-21 20:02
本发明专利技术涉及一种内存管理方法和系统。所述内存管理方法包括:将所述系统内存均分为多个容量相等的大内存块;创建用于管理由所述系统内存划分成的所有大内存块的大内存块表;从所述大内存块表中获取一个大内存块并将所获取的大内存块划分多个小内存块及一间隔区,每一小内存块包括一控制内存与一数据内存,所述控制内存包括一管理头内存与一监控头内存;及创建用于管理所述小内存块的数据池与控制池,每一数据池用于管理同一容量的小内存块的数据内存,每一控制池用于管理同一容量的控制内存。利用本发明专利技术通过对内存进行合理的划分,不仅实现了内存的有效管理,还减少了内存的浪费。

Memory management methods and systems

The invention relates to a memory management method and system. The memory management method includes: dividing the system memory into a large memory block with equal capacity; creating a large memory block table for managing all large memory blocks divided by the system's memory; obtaining a large memory block from the large memory block table and dividing the obtained large memory blocks into a plurality of small memory blocks and the large memory blocks obtained from the large memory block table. At an interval, each small memory block consists of a control memory and a data memory. The control memory includes a management head memory and a monitor head memory, and a data pool and a control pool for managing the small memory block. Each data pool is used to manage the data memory of the small memory blocks of the same capacity. Each control pool is used. Control memory in the management of the same capacity. By reasonably dividing the memory by using the invention, the effective management of memory is realized, and the waste of memory is reduced.

【技术实现步骤摘要】
内存管理方法及系统
本专利技术涉及系统内存管理领域,尤其涉及一种嵌入式存储系统的内存管理方法及系统。
技术介绍
内存是计算机设备中的一种重要资源,如何合理利用和高效的管理内存对于提升计算机的系统性能有着重要的作用。为提高系统的性能,目前业界对于内存的管理方式主要有以下两:一种是连续内存管理方式,即内存的管理头和内存数据使用同一块连续的内存,其中,该内存的总长度等于内存的头部长度(管理头的长度)加实际长度(内存数据的长度)。另一种是分离内存管理方式,即将内存的管理头和内存的数据内存分离的方式,头部使用单独的内存区域。分离内存管理方式又包括内核管理页面内存的页表(以下简称页表分离式内存管理)及单独使用管理头(以下简称单独管理头分离式内存管理)。其中,页表分离式内存管理是根据系统物理内存大小使用一个很大的页表数组来管理,每一块固定大小如4k的内存都有一个页表结构,这种方式只能使用于固定大小的内存管理;单独管理头分离式内存管理中的这些单独的管理头相当于是更小块的内存管理,对于已使用的管理头需要hash链表来管理。然而,上述两种内存管理方式均存在一些弊端:1、对于连续式的内存管理方式,因每个内存块都包括有一个管理头,这个管理头需要占用一定的内存,这会造成内存的浪费。且随着系统使用内存块数量的增多,浪费也是线性增加。2、对于页表分离式内存管理更多的是适用于内存大小是固定。对于大小不一的内存无法使用这种方式进行统一管理。3、对于单独管理头分离式内存管理因管理头很小,基本上不考虑回收,因此一般需要预留一定数量的内存留给管理头用。且,管理头都是使用同一个结构,大小相同;但是,如果使用了监控头,监控头是另一个结构,一般需要再另外管理。此外,这种内存如果要访问管理头或者监控头,必须先查找hash表,随着池中内存数量的增加,性能会越来越差,查找消耗性能都是O(n)。上述内存管理方法或存在大量浪费,或对内存的划分不合理,并由此影响了内存数据读取的性能。
技术实现思路
有鉴于此,本专利技术要解决的技术问题是如何对内存进行合理的划分与管理以达到有效管理内存、节省内存浪费的目的及提高系统内存读取的性能。为解决上述技术问题,本专利技术提供以下技术方案:一方面,本专利技术提供一种内存管理方法,该内存管理方法包括:将所述系统内存均分为多个容量相等的大内存块;创建用于管理由所述系统内存划分成的所有大内存块的大内存块表;从所述大内存块表中获取一个大内存块并将所获取的大内存块划分多个小内存块及一间隔区,每一小内存块包括一控制内存与一数据内存,所述控制内存包括一管理头内存与一监控头内存;及创建用于管理所述小内存块的数据池与控制池,每一数据池用于管理同一容量的小内存块的数据内存,每一控制池用于管理同一容量的控制内存。优选地,所述小内存块的类型为普通内存块及零拷贝使用的内存块;当所述小内存块为普通内存块时,所述控制池为第一容量;当所述小内存块为零拷贝使用的内存块时,所述控制池为第二容量;所述第一容量小于所述第二容量。优选地,所有小内存块的管理头内存与监控头内存形成所述大内存块的控制区,所有小内存块的数据内存形成所述大内存块的数据区,所述管理头区位于所述大内存块的前头,所述数据内存区位于所述大内存块的后头,所述间隔区设置在所述管理头区域所述大内存块之间。优选地,所述管理头内存记录有小内存块的名称、大小及物理位置信息;所述监控头内存记录有小内存块的申请与释放信息。优选地,该内存管理方法还包括:判断所述数据池中是否有空闲的小内存块;当所述数据池中没有空闲的小内存块时,从所述大内存块表中读取一个大内存块;根据所述数据池中的小内存块的容量划分所获取的大内存块;将由所述大内存块划分得到的小内存块逐个添加到所对应的数据池中以扩容所述数据池,并将所述小内存块的控制内存添加到对应的控制池中。优选地,所述内存管理方法还包括:当由所述大内存块划分成的小内存块都添加到对应的数据池中时,在所述大内存块表中增加表征所述大内存块的节点记录数据池的名称及该数据池中的第一个数据地址。优选地,步骤“根据所述数据池中的小内存块的容量划分所述空闲大内存块”具体为:从所述大内存块预留一内存空间给所述间隔区;计算每一小内存块所需占用的内存空间,其中,每一小内存块所需占用的内存空间包括所述小内存块的数据内存及控制内存占用的内存空间;根据所述小内存块所需占用的内存空间将所述大内存块划分为若干个小内存块。优选地,该内存管理方法还包括:判断所述数据池中是否有空闲的小内存块;当所述数据池中有多个空闲的小内存块时,从所述数据池中收回所述空闲的小内存块的数据内存,并从所述控制池中收回与所述小内存块的控制内存。优选地,该内存管理方法还包括:判断是否属于同一大内存块的小内存块都被收回;当属于同一大内存块的小内存块都被收回时,在所述空闲大内存块链表中增加表征所述大内存块的节点。相较于现有技术,本专利技术所述的内存管理方法通过对内存进行合理的划分,并根据内存的不同用途使用不同的监控等级,不仅实现了内存的有效管理,还减少了内存的浪费。此外,通过固定次数的计算能将内存地址转换到其对应的管理结构,便于内存查找的性能。另一方面,本专利技术提供一种内存管理系统,所述内存管理系统包括:第一划分模块,用于将所述系统内存均分为多个容量相等的大内存块;创建模块,用于创建用于管理由所述系统内存划分成的所有大内存块的大内存块表;第二划分模块,用于从所述大内存块表中获取一个大内存块并将所获取的大内存块划分多个小内存块及一间隔区,每一小内存块包括一控制内存与一数据内存,所述控制内存包括一管理头内存与一监控头内存;及所述创建模块用于创建用于管理所述小内存块的数据池与控制池,每一数据池用于管理同一容量的小内存块的数据内存,每一控制池用于管理同一容量的控制内存。优选地,所述小内存块的类型为普通内存块及零拷贝使用的内存块;当所述小内存块为普通内存块时,所述控制池为第一容量;当所述小内存块为零拷贝使用的内存块时,所述控制池为第二容量;所述第一容量小于所述第二容量。优选地,所有小内存块的管理头内存与监控头内存形成所述大内存块的控制区,所有小内存块的数据内存形成所述大内存块的数据区,所述管理头区位于所述大内存块的前头,所述数据内存区位于所述大内存块的后头,所述间隔区设置在所述管理头区域所述大内存块之间。优选地,所述管理头内存记录有小内存块的名称、大小及物理位置信息;所述监控头内存记录有小内存块的申请与释放信息。优选地,该内存管理系统还包括:判断模块,用于判断所述数据池中是否有空闲的小内存块;当所述数据池中没有空闲的小内存块时,所述第二划分模块从所述大内存块表中读取一个大内存块,并根据所述数据池中的小内存块的容量划分所获取的大内存块;添加模块,用于将由所述大内存块划分得到的小内存块逐个添加到所对应的数据池中以扩容所述数据池,并将所述小内存块的控制内存添加到对应的控制池中。优选地,所述内存管理方法还包括:当由所述大内存块划分成的小内存块都添加到对应的数据池中时,所述添加模块在所述大内存块表中增加表征所述大内存块的节点记录数据池的名称及该数据池中的第一个数据地址。优选地,“所述第二划分模块根据所述数据池中的小内存块的容量划分所述空闲大内存块”具体为:从所述大内存本文档来自技高网
...

【技术保护点】
1.一种内存管理方法,其特征在于,该内存管理方法包括:将所述系统内存均分为多个容量相等的大内存块;创建用于管理由所述系统内存划分成的所有大内存块的大内存块表;从所述大内存块表中获取一个大内存块并将所获取的大内存块划分多个小内存块及一间隔区,每一小内存块包括一控制内存与一数据内存,所述控制内存包括一管理头内存与一监控头内存;及创建用于管理所述小内存块的数据池与控制池,每一数据池用于管理同一容量的小内存块的数据内存,每一控制池用于管理同一容量的控制内存。

【技术特征摘要】
1.一种内存管理方法,其特征在于,该内存管理方法包括:将所述系统内存均分为多个容量相等的大内存块;创建用于管理由所述系统内存划分成的所有大内存块的大内存块表;从所述大内存块表中获取一个大内存块并将所获取的大内存块划分多个小内存块及一间隔区,每一小内存块包括一控制内存与一数据内存,所述控制内存包括一管理头内存与一监控头内存;及创建用于管理所述小内存块的数据池与控制池,每一数据池用于管理同一容量的小内存块的数据内存,每一控制池用于管理同一容量的控制内存。2.如权利要求1所述的内存管理方法,其特征在于,所述小内存块的类型为普通内存块及零拷贝使用的内存块;当所述小内存块为普通内存块时,所述控制池为第一容量;当所述小内存块为零拷贝使用的内存块时,所述控制池为第二容量;所述第一容量小于所述第二容量。3.如权利要求1所述的内存管理方法,其特征在于,所有小内存块的管理头内存与监控头内存形成所述大内存块的控制区,所有小内存块的数据内存形成所述大内存块的数据区,所述管理头区位于所述大内存块的前头,所述数据内存区位于所述大内存块的后头,所述间隔区设置在所述管理头区域所述大内存块之间。4.如权利要求1所述的内存管理方法,其特征在于,所述管理头内存记录有小内存块的名称、大小及物理位置信息;所述监控头内存记录有小内存块的申请与释放信息。5.如权利要求4所述的内存管理方法,其特征在于,该内存管理方法还包括:判断所述数据池中是否有空闲的小内存块;当所述数据池中没有空闲的小内存块时,从所述大内存块表中读取一个大内存块;根据所述数据池中的小内存块的容量划分所获取的大内存块;将由所述大内存块划分得到的小内存块逐个添加到所对应的数据池中以扩容所述数据池,并将所述小内存块的控制内存添加到对应的控制池中。6.如权利要求5所述的内存管理方法,其特征在于,所述内存管理方法还包括:当由所述大内存块划分成的小内存块都添加到对应的数据池中时,在所述大内存块表中增加表征所述大内存块的节点记录数据池的名称及该数据池中的第一个数据地址。7.如权利要求5所述的内存管理方法,其特征在于,步骤“根据所述数据池中的小内存块的容量划分所述空闲大内存块”具体为:从所述大内存块预留一内存空间给所述间隔区;计算每一小内存块所需占用的内存空间,其中,每一小内存块所需占用的内存空间包括所述小内存块的数据内存及控制内存占用的内存空间;根据所述小内存块所需占用的内存空间将所述大内存块划分为若干个小内存块。8.如权利要求4所述的内存管理方法,其特征在于,该内存管理方法还包括:判断所述数据池中是否有空闲的小内存块;当所述数据池中有多个空闲的小内存块时,从所述数据池中收回所述空闲的小内存块的数据内存,并从所述控制池中收回与所述小内存块的控制内存。9.如权利要求8所述的内存管理方法,其特征在于,该内存管理方法还包括:判断是否属于同一大内存块的小内存块都被收回;当属于同一大内存块的小内存块都被收回时,在所述空闲大内存块链表中增加表征所述大内存块的节点。10.一种内存管理系统,用于管理系统内存,其特征在于,该内存管理系统包括:第一划分模块,用于将所述系统内存均分为多个容量...

【专利技术属性】
技术研发人员:焦琳琳
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东,44

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

1