[发明专利]集群细粒度内存管理方法有效

专利信息
申请号: 201410141276.1 申请日: 2014-04-09
公开(公告)号: CN103914265B 公开(公告)日: 2016-11-23
发明(设计)人: 安丰春;台宪青;王艳军;赵旦谱;图博 申请(专利权)人: 江苏物联网研究发展中心
主分类号: G06F3/06 分类号: G06F3/06;G06F9/50
代理公司: 无锡市大为专利商标事务所(普通合伙) 32104 代理人: 殷红梅
地址: 214135 江苏省无锡市新*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明提供一种集群细粒度内存管理方法,包括下述步骤:步骤一.将内存分成两大类区域:第一类是全局共享区,负责尺寸大于等于尺寸阈值的大对象的分配和回收,第二类是每个线程独自的线程本地缓存,用于尺寸小于尺寸阈值的小对象的分配;线程本地缓存由多个块组组成,每个块组是一个内存对象的空闲链表,且一个块组内的块尺寸全部相等;不同块组之间,块组内的块尺寸关系采用阶梯式的等差关系;全局共享区包括小对象分配区和全局页缓存;步骤二.针对应用程序申请的内存进行内存分配,区分大小对象后分别进行对应的分配方式;步骤三.内存的释放;本方法兼顾大对象与小对象的分配与释放,特别适合多线程下的应用,内存利用率高。
搜索关键词: 集群 细粒度 内存 管理 方法
【主权项】:
 一种集群细粒度内存管理方法,其特征在于,包括下述步骤:步骤一.将内存分成两大类区域:第一类是全局共享区,负责尺寸大于等于尺寸阈值的大对象的分配和回收;第二类是每个线程独自的线程本地缓存,用于尺寸小于尺寸阈值的小对象的分配;线程本地缓存由多个块组组成,每个块组是一个内存对象的空闲链表,且一个块组内的块尺寸全部相等;不同块组之间,块组内的块尺寸关系采用阶梯式的等差关系;全局共享区包括小对象分配区和全局页缓存;小对象分配区的结构与线程本地缓存相同,且有锁保护;全局页缓存用于处理大对象,且有锁保护;全局页缓存由多个空闲链表组成,全局页缓存的空闲链表称作页面组;每个空闲链表包含多个元素,全局页缓存的空闲链表的元素是相同尺寸的连续的内存页;第1个页面组的元素的尺寸是1个内存页,第2个页面组的元素的尺寸是2个内存页,以此类推,第255个页面组的元素的尺寸是255个内存页,但第256个页面组的元素的尺寸是大于等于256个内存页;步骤一之后,还包括下述步骤:步骤二.针对应用程序申请的内存进行内存分配,包括:首先判断所申请的内存大小是否大于等于尺寸阈值;若大于等于尺寸阈值,则进行步骤a;否则,进行步骤b;a.大对象的分配:a‑1.将所需分配的尺寸,按4K的粒度向上圆整,设圆整后的大对象尺寸size=m*4K;m为正整数;a‑2.对全局共享区的全局页缓存加锁;a‑3.记p=max{2*m,256},判断页面组m的空闲链表是否为空;    若不空,则直接删除该链表的第一个元素并将其返回;    若为空,判断页面组p的空闲链表是否为空;若不空,则删除该链表的第一个元素得到连续的p个内存页,将该连续的p个内存页拆分成连续的m个页面和(p‑m)个页面,分别插入到页面组m和页面组(p‑m)中,重复步骤a‑3;若为空,则直接向操作系统申请连续的m个内存页,将该连续的m个内存页添加到页面组m后,重复步骤a‑3;a‑4.释放全局共享区的全局页缓存的锁;b.小对象的分配,对应线程本地缓存;b‑1.将所需分配的尺寸向上圆整到最接近的块组内块的尺寸,设尺寸为size′,且相对应的块组为块组k;b‑2.判断块组k的空闲链表是否为空; 若不空,则删除该空闲链表的第一个元素并将其返回; 若为空,则需要对全局共享区进行操作;  对全局共享区的小对象分配区申请加锁;  判断全局共享区中小对象分配区的块组k是否为空;若不空,则从该块组中转移若干元素到线程本地缓存的块组k中,释放全局共享区的小对象分配区的锁,重复步骤b‑2;若为空,则向全局页缓存申请new_size=max{size′*2,尺寸阈值}大小的大对象;申请成功后将该大对象拆分成若干个大小为size′的小对象,添加到全局共享区的小对象分配区的块组k中,释放全局共享区的小对象分配区的锁,重复步骤b‑2;步骤二之后,还包括下述步骤:步骤三.内存的释放;首先判断释放的内存是否大于等于尺寸阈值;若大于等于尺寸阈值,则进行步骤a′;否则,进行步骤b′;a′.大对象的释放;a′‑1.申请对全局共享区中的全局页缓存加锁;a′‑2.判断全局页缓存的总空间是否超过设定空间阈值,若超过,直接将大对象释放给操作系统;否则,将待释放的内存添加回相对应的全局页缓存的页面组;a′‑3.对全局页缓存解锁;b′.小对象的释放;b′‑1.判断线程本地缓存的空间占用是否超过设定的空间阈值;b′‑2.若未超过,则直接将小对象添加回相对应的块组中,结束释放流程;否则,继续下一步;b′‑3.超过阈值时,需要将小对象释放到全局共享区,具体如下所述:申请对全局共享区的小对象分配区加锁;将小对象添加到全局共享区中小对象分配区的对应块组中;判断小对象分配区的总大小是否超过设定的阈值,若未超过,则直接释放锁,并结束释放流程;超过阈值时,扫描小对象分配区的所有小对象并排序;将所有能合并成一个大对象的小对象,从小对象分配区中删除,并合并成一个大对象;将该大对象释放到全局页缓存当中;释放小对象分配区的锁,结束释放流程。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江苏物联网研究发展中心,未经江苏物联网研究发展中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201410141276.1/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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