[发明专利]一种内存管理方法及系统无效

专利信息
申请号: 200710176137.2 申请日: 2007-10-19
公开(公告)号: CN101414281A 公开(公告)日: 2009-04-22
发明(设计)人: 高攀 申请(专利权)人: 大唐移动通信设备有限公司;上海大唐移动通信设备有限公司
主分类号: G06F12/02 分类号: G06F12/02
代理公司: 北京信远达知识产权代理事务所(普通合伙) 代理人: 王学强
地址: 100083*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 内存 管理 方法 系统
【说明书】:

技术领域

发明涉及数据通信技术领域,尤其涉及一种内存管理方法及系统。

背景技术

内存管理是目前数据通信中一项重要的工作。由于内存的使用频率很高,因此,内存的管理使用是否有效直接影响到系统的性能是否高校。

目前,现有技术中内存的管理主要有三种方法:字节内存池(Byte Pool)内存管理、块内存池(Block Pool)内存管理和片内存池(Slab Pool)内存管理。

Byte Pool内存管理是把给定的内存区视作一个连续的、均匀的空间,根据某种方式(最优匹配、最差匹配、首次匹配等)从中划分一段空间给请求者;但是,Pool内存管理缺点也很明显,即易于产生内存碎片:

如图1所示,比如一个18单位的内存系统中,假设使用者只申请3单位或者2单位的内存,其中阴影部分表示已分配的内存;一开始内存使用情况图中A所示;首先使用者申请6个3单位内存,内存使用情况如图中B所示;随后使用者释放最后一块3单位的内存,再申请2单位内存,则内存使用情况如图中C所示;重复前一步骤多次,系统的内存使用情况如图中D所示;至此,系统中虽然总计有6单位的空闲内存,但是不能满足使用者进一步的内存申请。在实际情况中,甚至曾遇到过这样的情况:总计有1M空闲内存的Byte Pool内存池中也无法分配几十K的空间;

由于Byte Pool内存管理方法过于简单,几乎不对内存做任何统筹管理,从而在系统长时间运行后,就必然导致内存碎片,且几乎不能恢复;最终,将导致当内存总的空闲空间远远大于请求的空间时,系统也无法正常运行,从而系统崩溃或者功能性异常。

为了改善Byte Pool的内存碎片问题,实践中也提出了一种简单的BlockPool内存管理方法,其实现如下:

一个Block Pool由若干个等大小的内存Block构成;对小于等于单位内存Block的内存申请,则分配以一个完整的Block,多个不同单元大小的BlockPool配合则可以可靠的避免内存碎片,比如1个8M内存空间中,规划出512K作为小于等于128字节的Block Pool,规划出1M作为小于等于1K的BlockPool,规划出2M的空间作为小于等于4K的Block Pool等;但这一方法对于内存的浪费严重,且很不灵活,性价比很低,不能满足低成本或者高复杂度的系统的需求。

为了解决内存碎片问题,现有技术中还存在一种Slab内存管理方法。经过实践证明,Slab内存管理方法相对上述两种方法能够比较有效的解决内存碎片问题,但是,Slab的确定也很明显:

1.实现较为复杂

Slab内存管理机制较为复杂,其代码量对于系统来说偏多,实现和维护都较为困难;此外,Slab通常配合伙伴系统实现,而伙伴系统决定了Slab管理器中不能分配目前一半以上的物理内存;举例来说,总计4M的内存中,除去必要的一部分内存外,最多只能分配2M空间,不能分配2.5M或者3M或者3.5M的空间;

2.内存浪费较为严重

Slab对内存的浪费源于两方面:

首先,源于Slab的通用高速缓存的浪费:slab的通用高速缓存大小从32bytes开始,以2n的方式递增到8K,当某个申请者申请1K+4bytes时,Slab会实际分配以2K空间,这样就会导致浪费1K-4bytes的内存空间。

其次,源于内存申请释放的随机性:假定某个时刻,在某个32bytes的高速缓冲中分配了数十个页面;一开始,这数十个页面的内存也许都被分配殆尽,但是一段时间后,有可能每个page中只有一个缓存项在被使用;而同时,系统中出现了大量的64bytes、128bytes的请求,但是Slab不能在几乎全空的32bytes的高速缓冲中分配这些请求的空间,这样,32bytes高速缓存所占用的page就被极大的浪费了;

因此,上述现有技术中的几种方法要么极易产生内存碎片、要么内存空间浪费严重,其都没有从根本上解决内存碎片的问题。

发明内容

有鉴于此,本发明解决的问题是提供一种内存管理方法及系统,可以有效的解决大量内存碎片给系统带来的性能影响,并且简单易行。

为解决上述问题,本发明提供的技术方案如下:

一种内存管理方法,该方法包括:

根据内存分配申请比较申请分配的内存与预设的阈值的大小;

当所述申请分配的内存小于所述阈值时,在内存一端的内存池内为用户分配所述申请分配的内存;否则,

在内存的另一端直接为用户分配所述申请分配的内存。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大唐移动通信设备有限公司;上海大唐移动通信设备有限公司,未经大唐移动通信设备有限公司;上海大唐移动通信设备有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200710176137.2/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top