一种在内核中高速分配连续内存的方法

文档序号:6339313阅读:344来源:国知局
专利名称:一种在内核中高速分配连续内存的方法
技术领域
本发明涉及数据存储领域,具体涉及一种在内核中告诉分配连续内存的方法。
背景技术
在Linux内核态申请连续空间,根据内存管理算法,一次最多申请2的order次方 个页面的空间。如果要申请连续大内存,需要自己的管理结构。一种管理策略就是将计算 机的所有内存块全部申请下来,然后对这些内存块进行排序。找到合适的内存块,释放其他 内存块。另外一种管理结构是采用链表管理,把每次在内核态申请到的空间都串到链上,同 时管理这些空间。如果发现申请到的空间和链表上的空间连续就将合并空间,查看合并后 的空间是否满足要求,如果满足就申请下该块。上述两种策略都需要消耗大量的内存空间, 效率低下。采用位图策略,可以有效减小内存空间。例如,如果要分配4G的连续内存,在32 位机器上只需要32个整型变量就可以维护管理这个结构,大大节省了内存空间。另外,它 的操作更是简单,只需要简单的6条位操作语句,再加上一个判断就可以完成内核态连续 大内存的申请。

发明内容
本发明目的是采用位图管理实现了一个在内核空间申请连续大内存的高效的方法。一种在内核中高速分配连续内存的方法,步骤如下步骤1 在32位系统上作地址划分,使一次申请的最小单元为4MB ;步骤2 每一个单元使用一个位图表示是否已经被申请;步骤3 系统分配时计算所申请的内存需要的最小单元个数;步骤4 查找内存模块位图,若出现满足个数的连续个最小单元位图为1,则分配; 若不成功,返回继续申请。本发明的一种优选技术方案在于所述步骤1地址划分方法为选取该32位地址的 高5位用作32个整型块的寻址,用次高5位用作整型变量内部所对应位的寻址,用其他22 位作为4M空间的首地址。本发明的另一种优选技术方案在于所述位图为1表示未被占用,若为0表示已经占用。本发明利用最少的存储资源在内核态实现了对连续内存的申请管理,提高了效 率,同时本发明实现结构简单清晰,有较好的可扩展性。


图1是本发明原理示意图具体实施方案在32位系统上,在内核态一次申请4M连续内存(order = 10),返回一个32位的 地址。可以选取该32位地址的高5位(31—27位)用作32个整型块的寻址,用次高5位 (26—22位)用作整型变量内部所对应位的寻址,用其他22位(21—0)作为4M空间的首 地址。上图是一个内存的片段,每位代表一个4M的空间。如果要在内核态申请连续的N个 4M的空间,只需要在内存块中出现连续的N个1即可。例如,某一时刻申请一个4M的空间,返回地址为0x12345678,解析高5位00010, 次高5位01000,可以确定在整个地址空间偏移为00010的32位中的01000位置1,如上图 中b所示。现在需要做的就是判断新置的位是否可以和该位的前面或后面相连构成满足需 要的连续的内存块数的要求,如上图所示是32个整型变量里面的3个,某时刻申请了一个 地址,经计算填到了 a里面的第8位,b和c里面的位用χ来表示(χ等于0或1)。利用下 面的6步操作,再加上一个判断就可以判断是否在a中的某位置1,就可以和b中的位构成 连续的符合要求的内存。下面是具体的操作步骤(l)tmpb= b;(2) tmp = tmpb & (tmpb—1);(3) tmp = tmp "tmpb ;(4) tmp- = -1 ;(5) tmpa = a >> (32_shift_bit);(6) tmpc = tmp | tmpa ;(7) if (tmpc >= (1 << shift_bit) _1)成功找到;else继续申请,返回第一步。
权利要求
1.一种在内核中高速分配连续内存的方法,其特征在于步骤如下 步骤1 在32位系统上作地址划分,使一次申请的最小单元为4MB ; 步骤2 每一个单元使用一个位图表示是否已经被申请;步骤3 系统分配时计算所申请的内存需要的最小单元个数; 步骤4 查找内存模块位图,若出现满足个数的连续个最小单元位图为1,则分配;若不 成功,返回继续申请。
2.如权利要求1所述一种在内核中高速分配连续内存的方法,其特征在于所述步骤1 地址划分方法为选取该32位地址的高5位用作32个整型块的寻址,用次高5位用作整型 变量内部所对应位的寻址,用其他22位作为4M空间的首地址。
3.如权利要求1所述一种在内核中高速分配连续内存的方法,其特征在于所述位图 为1表示未被占用,若为0表示已经占用。
全文摘要
本发明提供了一种在内核中高速分配连续内存的方法,在32位系统上作地址划分,使一次申请的最小单元为4MB;每一个单元使用一个位图表示是否已经被申请;系统分配时计算所申请的内存需要的最小单元个数;查找内存模块位图,若出现满足个数的连续个最小单元位图为1,则分配;若不成功,返回继续申请。本发明利用最少的存储资源在内核态实现了对连续内存的申请管理,提高了效率,同时本发明实现结构简单清晰,有较好的可扩展性。
文档编号G06F12/02GK102063378SQ20101059800
公开日2011年5月18日 申请日期2010年12月17日 优先权日2010年12月17日
发明者刘兴奎, 刘朝辉, 刘灿, 李锋伟 申请人:天津曙光计算机产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1