[发明专利]内存分配方法有效
| 申请号: | 201010550117.9 | 申请日: | 2010-11-18 |
| 公开(公告)号: | CN102012870A | 公开(公告)日: | 2011-04-13 |
| 发明(设计)人: | 胡事民;阎栋 | 申请(专利权)人: | 清华大学 |
| 主分类号: | G06F12/06 | 分类号: | G06F12/06 |
| 代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王莹 |
| 地址: | 100084 北京市海*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 内存 分配 方法 | ||
1.一种内存分配方法,其特征在于,包括以下步骤:
S1:将内存划分为固定大小的内存块,为所述内存建立一棵线段树,所述线段树的叶节点对应所述固定大小的内存块,从内存起始位开始,以每两个相邻叶节点为子节点依次创建一个内部节点,以相邻两个内部节点为子节点创建上一层内部节点,依次向上递归直到创建出一个根节点,所述每个节点记录如下信息,并在分配时初始化所述信息:
所述节点对应的内存区域的起始和终止端点:start和end;
所述节点对应的内存区域内最大连续空闲内存的长度max_blank_length和其起始位置location;
所述节点对应的内存区域内由起始端点向右的最长连续空闲内存长度left_blank_length,由终止端点向左的最长连续空闲内存长度right_blank_length;
S2:响应内核或是应用程序申请内存的请求,根据所述线段树分配申请的内存;
S3:根据所述线段树回收内核或是应用程序释放的内存。
2.如权利要求1所述的内存分配方法,其特征在于,所述步骤S1具体包括:
统计所述内存的长度;
根节点的start和end分别为所述内存的起始位置和终止位置,初始情况下默认整个内存区域全部为空闲状态,max_blank_length为内存区域的长度,location等于start,left_blank_length等于right_blank_length等于max_blank_length;
自顶向下,根据每个节点的父节点信息及本身所在左子树或右子树,采用递归方式初始化每个节点的start、end、max_blank_length、location、left_blank_length和right_blank_length,至叶子节点为止。
3.如权利要求1所述的内存分配方法,其特征在于,所述步骤S2具体包括:
查找根节点的所述信息,若申请的内存区域长度mem_length大于根节点的max_blank_length返回错误信息,否则,返回根节点中的location,记为start_location,则要申请的内存区域为[start_location,start_location+mem_length);
从根节点开始依次向下递归处理上一步得到的[start_location,start_location+mem_length),若start_location=start且start_location+mem_length=end,当前节点所对应的内存区域就是所要处理的区间,则当前节点的start和end不变,max_blank_length置零location置-1代表此节点所对应的内存区域已经全部都被分配,left_blank_length和right_blank_length也均置零;
若start_location>start或start_location+mem_length<end两个条件中有至少一个成立则将[start_location,location+mem_length)拆分为[start_location,start_location+(start+end)/2)和[start_location+(start+end)/2,start_location+mem_length)分别交由左子节点和右子节点处理,直到递归到叶子节点对应的内存为止;
由叶节点开始自底向上,更新每个节点的所述信息,由节点更新过的子节点更新节点本身的信息,最终到根节点为止,max_length取左子节点中的max_length、右子节点中的max_length及左子节点的right_blank_length加右子节点的left_blank_length之和三者中的最大值,location取三者中最大值的内存区域所对应的location,left_blank_length 更新为左子节点的left_blank_length,right_blank_length更新为右子节点的right_blank_length。
4.如权利要求1~3中任一项所述的内存分配方法,其特征在于,所述固定大小的内存块为256B~8KB。
5.如权利要求4所述的内存分配方法,其特征在于,所述固定大小的内存块为4KB。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010550117.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:计算机集群管理方法、装置和系统
- 下一篇:基于视觉感知特性的数字图像水印方法





