CN102063378B - 一种在内核中高速分配连续内存的方法 - Google Patents
一种在内核中高速分配连续内存的方法 Download PDFInfo
- Publication number
- CN102063378B CN102063378B CN 201010598005 CN201010598005A CN102063378B CN 102063378 B CN102063378 B CN 102063378B CN 201010598005 CN201010598005 CN 201010598005 CN 201010598005 A CN201010598005 A CN 201010598005A CN 102063378 B CN102063378 B CN 102063378B
- Authority
- CN
- China
- Prior art keywords
- bitmap
- memory
- kernel
- high speed
- contiguous memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Memory System (AREA)
Abstract
本发明提供了一种在内核中高速分配连续内存的方法,在32位***上作地址划分,使一次申请的最小单元为4MB;每一个单元使用一个位图表示是否已经被申请;***分配时计算所申请的内存需要的最小单元个数;查找内存模块位图,若出现满足个数的连续个最小单元位图为1,则分配;若不成功,返回继续申请。本发明利用最少的存储资源在内核态实现了对连续内存的申请管理,提高了效率,同时本发明实现结构简单清晰,有较好的可扩展性。
Description
技术领域
本发明涉及数据存储领域,具体涉及一种在内核中告诉分配连续内存的方法。
背景技术
在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里面的位用x来表示(x等于0或1)。利用下面的6步操作,再加上一个判断就可以判断是否在a中的某位置1,就可以和b中的位构成连续的符合要求的内存。
下面是具体的操作步骤:
(1)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
继续申请,返回第一步。
Claims (2)
1.一种在内核中高速分配连续内存的方法,其特征在于:步骤如下:
步骤1:在32位***上作地址划分,使一次申请的最小单元为4MB,所述地址划分方法为选取32位地址的高5位用作32个整型块的寻址,用次高5位用作整型变量内部所对应位的寻址,用其他22位作为4M空间的首地址;
步骤2:每一个单元使用一个位图表示是否已经被申请;
步骤3:***分配时计算所申请的内存需要的最小单元个数;
步骤4:查找内存模块位图,若出现该个数的连续个最小单元位图为1,则分配;若不成功,返回继续申请。
2.如权利要求1所述一种在内核中高速分配连续内存的方法,其特征在于:所述位图为1表示未被占用,若为0表示已经占用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010598005 CN102063378B (zh) | 2010-12-17 | 2010-12-17 | 一种在内核中高速分配连续内存的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010598005 CN102063378B (zh) | 2010-12-17 | 2010-12-17 | 一种在内核中高速分配连续内存的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102063378A CN102063378A (zh) | 2011-05-18 |
CN102063378B true CN102063378B (zh) | 2013-02-13 |
Family
ID=43998663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010598005 Active CN102063378B (zh) | 2010-12-17 | 2010-12-17 | 一种在内核中高速分配连续内存的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102063378B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541758A (zh) * | 2011-12-22 | 2012-07-04 | 深圳市融创天下科技股份有限公司 | 一种内存分配与释放的方法、***和终端设备 |
CN103440203B (zh) * | 2013-08-26 | 2017-07-25 | 上海斐讯数据通信技术有限公司 | 一种共享内存分配方法 |
CN106227593A (zh) * | 2016-07-06 | 2016-12-14 | 杭州迪普科技有限公司 | 一种申请超大块连续内存的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963788A (zh) * | 2005-11-08 | 2007-05-16 | 中兴通讯股份有限公司 | 一种内存管理方法 |
CN101093455A (zh) * | 2006-06-21 | 2007-12-26 | 中兴通讯股份有限公司 | 一种嵌入式操作***的内存池分配方法 |
CN101344861A (zh) * | 2007-07-10 | 2009-01-14 | 凤凰微电子(中国)有限公司 | 一种智能卡内存管理方法 |
CN101676906A (zh) * | 2008-09-18 | 2010-03-24 | 中兴通讯股份有限公司 | 一种利用位图对内存数据库空间进行管理的方法 |
CN101753935A (zh) * | 2008-12-09 | 2010-06-23 | 深圳市锐明视讯技术有限公司 | 一种数据存储设备长时间预录的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7096238B2 (en) * | 1999-08-19 | 2006-08-22 | Sun Microsystems, Inc. | Dynamic feedback for determining collection-set size |
JP2007026094A (ja) * | 2005-07-15 | 2007-02-01 | Matsushita Electric Ind Co Ltd | 実行装置およびアプリケーションプログラム |
-
2010
- 2010-12-17 CN CN 201010598005 patent/CN102063378B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963788A (zh) * | 2005-11-08 | 2007-05-16 | 中兴通讯股份有限公司 | 一种内存管理方法 |
CN101093455A (zh) * | 2006-06-21 | 2007-12-26 | 中兴通讯股份有限公司 | 一种嵌入式操作***的内存池分配方法 |
CN101344861A (zh) * | 2007-07-10 | 2009-01-14 | 凤凰微电子(中国)有限公司 | 一种智能卡内存管理方法 |
CN101676906A (zh) * | 2008-09-18 | 2010-03-24 | 中兴通讯股份有限公司 | 一种利用位图对内存数据库空间进行管理的方法 |
CN101753935A (zh) * | 2008-12-09 | 2010-06-23 | 深圳市锐明视讯技术有限公司 | 一种数据存储设备长时间预录的方法 |
Non-Patent Citations (1)
Title |
---|
JP特开2007-26094A 2007.02.01 |
Also Published As
Publication number | Publication date |
---|---|
CN102063378A (zh) | 2011-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dai et al. | ForeGraph: Exploring large-scale graph processing on multi-FPGA architecture | |
CN100382048C (zh) | 一种内存管理方法 | |
CN104077233A (zh) | 单通道卷积层及多通道卷积层处理方法和装置 | |
CN102063378B (zh) | 一种在内核中高速分配连续内存的方法 | |
CN103106222B (zh) | 定时器的处理方法及装置 | |
CN102891896B (zh) | 用于物联网海量存储的云计算基础架构*** | |
WO2004012080A3 (en) | Method for dynamically allocating and managing resources in a computerized system having multiple consumers | |
CN103064795B (zh) | 一种存储设备的控制方法及相关装置 | |
CN109154917A (zh) | 存储***和固态硬盘 | |
CN104598316B (zh) | 一种存储资源分配方法及装置 | |
CN105659208A (zh) | 处理多个线程的数据处理装置及方法 | |
CN102541851A (zh) | 页面模块化生成方法及*** | |
CN103246941A (zh) | 一种出口集装箱码头堆存空间调度方法 | |
CN103425746A (zh) | 基于fpga的实时金融指数行情并行计算方法 | |
CN107392358B (zh) | 一种车辆分配方法及装置 | |
CN105516325A (zh) | 一种根据应用负载进行弹性扩容和流量分发扩展的云负载平衡手段 | |
CN102053916B (zh) | 一种分配内核大片连续内存的方法 | |
CN1679005A (zh) | 动态存储器管理 | |
CN105117285A (zh) | 一种基于移动虚拟化***的非易失性存储器调度优化方法 | |
CN111083189B (zh) | 用于在运行时处理数据倾斜的***和方法 | |
CN106325995A (zh) | 一种gpu资源的分配方法及*** | |
CN117093509B (zh) | 一种基于贪婪算法的片上内存地址分配方法和*** | |
CN111415003A (zh) | 面向神经网络加速芯片的三维堆叠存储优化方法及装置 | |
CN113034088A (zh) | 仓库物流任务调度方法、装置、电子设备及存储介质 | |
CN112732202A (zh) | 一种数据存储*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180425 Address after: 215399 Room 405, North Tower, 1699 complex building, South Yushan Road, Yushan Town, Kunshan, Jiangsu Patentee after: Zhongke controlled Information Industry Co., Ltd. Address before: 300384 Xiqing District, Tianjin Huayuan Industrial Zone (outside the ring) 15 1-3, hahihuayu street. Patentee before: Sugon Information Industry Co., Ltd. |
|
TR01 | Transfer of patent right |