[发明专利]一种内存分配方法及装置有效
申请号: | 201310292099.2 | 申请日: | 2013-07-12 |
公开(公告)号: | CN103559137A | 公开(公告)日: | 2014-02-05 |
发明(设计)人: | 朱宗卫;陈浩;童碧峰 | 申请(专利权)人: | 三星电子株式会社;三星电子(中国)研发中心;中国科学技术大学苏州研究院 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 阎敏;宋志强 |
地址: | 京*** | 国省代码: | 韩国;KR |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 分配 方法 装置 | ||
技术领域
本发明涉及计算机内存管理技术领域,尤其涉及一种内存分配方法及装置。
背景技术
伙伴(BUDDY)系统算法,由于其优秀的分配效率和反碎片特性,成为当前linux内存管理系统的经典算法。它把内存单元划分成了多个块组(Page Block),即free_area[0…max_oder],各个块组的大小以页面(Page)为单位分别为2的0次幂到2的max_order次幂。例如:假使max_order=10,则各个块组的大小分别为:1,2,4,8,…,1024。
每个大小相同的块组,用链表链接起来进行管理。当需要分配内存的时候,系统会从最接近且不小于所要分配内存的那个块组中进行分配,并将能够剩余的部分拆分成更小的块组进行管理。如图1为现有技术中伙伴系统算法的结构示意图。
例如:若需分配的内存大小为6个页面,则伙伴系统算法则会从大小为2的3次幂(大小为8)的块组中获取相应内存。
当系统中的邻近的块组中没有空闲的页面可供进行分配的时候,就会从更大一级的块组中查找,把余下的内存划分成更小的块组进行管理。
例如:当需分配的内存大小为6个页面,如果与其最接近的2的3次幂(大小为8)的块组中没有相应的页面可供分配,而若2的4次幂(大小为16)的块组中有适合分配的页面,则将优先从该块组进行分配,并将剩余的页面(大小为10)划分为:8和2两个块组,分别插入2的3次幂,2的1次幂的块组链表中进行管理。
在内存系统中经常包括多个内存模组(RANK),系统中的内存块组分别属于不同的RANK。现有的伙伴系统算法并不考虑这一特点,在分配内存块组时没有加以区分,使得各个RANK中内存块组在统计学上被分配到的概率相等,这种内存分配方式不便于内存系统的功耗控制。
发明内容
本发明提供了一种内存分配方法,能够在分配内存块组时,使被分配的内存块组尽可能地集中于较少的RANK,从而便于内存系统的功耗控制。
本发明还提供了一种内存分配装置,能够在分配内存块组时,使被分配的内存块组尽可能地集中于较少的RANK,从而便于内存系统的功耗控制。
本发明的技术方案是这样实现的:
一种内存分配方法,包括:
记录每个内存块组所属的RANK;
按照最小空闲率优先(Min Free)方式或近期最少使用(LRU)方式排列系统中的RANK;
确定需要分配的内存大小,针对排列后的每个RANK依次执行步骤A:
A、采用BUDDY算法在属于所述RANK的内存块组中查找可以分配的内存块组,如果存在可以分配的内存块组,则进行分配,并记录分配之后产生的新的内存块组所属的RANK,结束当前流程;如果不存在可以分配的内存块组,则针对下一RANK重复执行步骤A,直至内存块组分配成功。
上述方法可以进一步包括:
检测各个RANK所包含的内存块组的分配情况,如果RANK所包括的所有内存块组均为空闲,则将所述RANK的状态设置为节能模式;否则,将该RANK的状态设置为正常工作模式。
上述方法中,BUDDY算法为:查找与需要分配的内存大小最接近并且不小于需要分配的内存大小的内存块组,如果查找到,则采用该内存块组进行分配,并将分配后剩余的部分划分为新的内存块组。
上述方法中,按照Min free方式排列系统中的RANK可以为:按照利用率由大到小的顺序排列RANK。
上述方法中,按照LRU方式排列系统中的RANK可以为:按照访问时间由近到远的顺序排列RANK。
一种内存分配装置,包括:
内存分配模块,用于记录每个内存块组所属的RANK;按照Min Free方式或LRU方式排列系统中的RANK;确定需要分配的内存大小,针对排列后的每个RANK依次执行步骤A:A、采用伙伴系统BUDDY算法在属于所述RANK的内存块组中查找可以分配的内存块组,如果存在可以分配的内存块组,则进行分配,并记录分配之后产生的新的内存块组所属的RANK,结束当前流程;如果不存在可以分配的内存块组,则针对下一RANK重复执行步骤A,直至内存块组分配成功。
上述装置可以进一步包括:
内存使用检测模块,用于检测各个RANK所包含的内存块组的分配情况,并将检测结果通知内存功耗调节模块;
内存功耗调节模块,用于根据所述检测结果,判断RANK所包括的内存块组是否均为空闲,如果是,则将所述RANK的状态设置为节能模式;否则,将该RANK的状态设置为正常工作模式。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于三星电子株式会社;三星电子(中国)研发中心;中国科学技术大学苏州研究院,未经三星电子株式会社;三星电子(中国)研发中心;中国科学技术大学苏州研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310292099.2/2.html,转载请声明来源钻瓜专利网。