CN101470667A - Linux***平台上指定地址范围分配物理内存的方法 - Google Patents
Linux***平台上指定地址范围分配物理内存的方法 Download PDFInfo
- Publication number
- CN101470667A CN101470667A CNA2007103061100A CN200710306110A CN101470667A CN 101470667 A CN101470667 A CN 101470667A CN A2007103061100 A CNA2007103061100 A CN A2007103061100A CN 200710306110 A CN200710306110 A CN 200710306110A CN 101470667 A CN101470667 A CN 101470667A
- Authority
- CN
- China
- Prior art keywords
- memory block
- memory
- page
- address area
- specified address
- 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.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种Linux***平台上指定地址范围分配物理内存之方法,系应用于Linux操作***下的物理内存的测试进程中,本方法可根据所要分配内存的指定地址范围及大小,对***中大量的物理内存进行指定地址范围的分配,而后将分配出来的内存块之信息传送出去,以用于对内存进行映像、检测和释放,进而为Linux操作***下的物理内存的测试提供了有效的支持。
Description
技术领域
本发明涉及一种内存分配方法,尤其涉及一种Linux***平台上指定地址范围分配物理内存的方法。
背景技术
目前,内存测试是硬件诊断方案中一项非常重要的功能,其流程主要由两部分组成:内存分配和测试算法。其中,测试算法规定了读写内存的规则,不同的测试算法会针对不同的内存错误类型进行检测,现有技术的测试算法的相关内容在一些内存测试算法的文献中都有专门的介绍,在此不再赘述。内存分配,是进行内存读写测试的重要前提,它将直接关系到测试效果能否达成,例如:能否测试到真正的物理内存或者是否会重复测试同一块内存等。然而,不同的操作***平台管理物理内存的方式有所不同,并没有统一的规则,因此内存分配是相对比较复杂的,需要针对不同的操作***平台分别加以考虑。
在Linux操作***(一种可***的多用户的计算机作业***)平台上,由于用户态没有提供分配物理内存的方法,所以现有技术的做法只能通过驱动程序,在内核(Kernel)中实现分配物理内存的功能,然后对外提供接口。然而要使分配出的物理内存可以在用户态随意读写,还需要把分配到的物理内存映像到用户态的虚拟地址空间里,在这一点上现有技术中所使用的原理和方法都是相似的,在此不再赘述。而其中,主要的不同就在于分配物理内存的方法。
目前现有技术的分配物理内存的方法有:
方法一:一种分配指定物理内存页的方法。这种方法可以指定地址范围分配物理内存,此方法对于内存分配的最小单位为页,页的大小视Linux***内核(Kernel)的配置所定。但是此方法每次只能分配一个内存页,效率太低,而且可能会占用相邻的其它内存页,造成不必要的资源浪费。因此,这种方法局限性较大,不适用于对大量物理内存的测试。
方法二:直接调用Linux***内核(Kernel)提供的分配成块的连续物理内存的接口。这种方法可以分配大量的物理内存,适用于对大量物理内存的测试,但此方法的主要缺点是无法指定地址范围进行物理内存的分配(这是由于Linux***内核中组织物理内存的数据结构的限制,使其不便于指定地址范围进行物理内存的分配),因而也就无法用于针对特定的内存单元或者指定插槽上的内存进行测试。
发明内容
本发明所要解决的技术问题在于提供一种Linux***平台上指定地址范围分配物理内存的方法,应用于Linux操作***下的物理内存的测试进程中,此方法可根据所要分配内存的指定地址范围及大小,对***中大量的物理内存进行指定地址范围的分配,进而为Linux操作***下的物理内存的测试提供了有效的支持。
位实现上述目的,本发明所提供的一种Linux***平台上指定地址范围分配物理内存的方法,包含以下步骤:
获得所要分配内存的指定地址范围及大小;针对***中每一个节点(Node),查看其包含的内存的地址范围是否与指定地址范围有交集;如果有交集,则对各节点中的每一个页区(Zone),查看其包含的内存的地址范围是否与指定地址范围有交集;如果仍有交集,则在各页区的每中央处理器页框高速缓存(Per-CPU Page Frame Cache)和伙伴***(Buddy System)中的内存块链表中,查找符合上述大小及指定地址范围要求的内存块;将查找到的内存块从内存块链表中经拆分后取出;以及在各页区中重复查找符合上述大小及指定地址范围要求的内存块并将其拆分后取出,直至分配满足了所要求的大小、或者各页区中已没有符合指定地址范围的内存块、或者各页区的空闲内存已减少至***内核安全的下限后,传送所有分配出来的内存块的信息,以用于对内存进行映像、检测和释放。
综上所述,本发明的优点在于:
本发明所提供的一种Linux***平台上指定地址范围分配物理内存的方法,可实现指定地址范围的、大量的物理内存的分配,其通过改进整体分配流程,提供了一次可分配多个内存页/块的功能接口,并利用内核中的数据结构,改进查找方法,加快查找速度,同时,通过拆分内存块的方法,避免了对多余内存页的占用。因此,不仅结合了现有技术中两种分配物理内存的方法的优点,同时也克服了它们所具有的缺陷,进而为Linux操作***下的物理内存的测试提供了有效的支持。其主要的优点包含:分配到的是实际的物理内存;可以指定地址范围进行分配;可以一次分配大量的内存;不会占用相邻的其它内存页,因而避免了现有技术中可能造成不必要的资源浪费的问题;可以用于针对特定的内存单元或者指定插槽上的内存进行测试。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为本发明的伙伴***中的内存块的结构图;
图2为本发明的一种Linux***平台上指定地址范围分配物理内存的方法的方法流程图;
图3为本发明中的内存块按照指定的地址范围的要求分为三种情况的示意图;
图4为本发明中部分内存页在指定地址范围内的内存块及其拆分进程的示意图;以及
图5为本发明的方法的一实施例的示意图,图中表示了本发明的伙伴***中的内存块在分配前和分配后的情况。
其中,附图标记:
10:内存块
20:内存页
101:小内存块
10’,10”:拆分后余下的内存块
具体实施方式
以下,将结合附图部份对本发明的较佳实施方式作详细说明。
在Linux***中,内核(Kernel)包含了内存管理机制,内存是以页的形式在***中存在的,每一个页代表了唯一的一块物理内存,***通过一个数据结构来描述这个页的信息,并以阵列的形式按照页在物理内存的位置将页结构存放在一起,并通过一个全局的页结构指针指向阵列的首地址,因此说获得了阵列首地址,就可以得到内存中的任何一个页结构。当然我们并不能任意的操作内存中的每一个页,既然Linux***有它自己的内存管理机制,我们就要在不损害***规则的基础上来实现本发明的目标。下面就进一步说明本发明是如何实现的。
在Linux***启动以后,内核(Kernel)会把物理内存分配成多个页,并将每个页标为已被占用和未被占用(空闲)两种状态,被标为已被占用的页是被***内核或是其它硬件及应用程序所占用的,用户是不允许使用的,因为对它的操作可能会导致整个***的崩溃,因此我们的分配方法也不允许分配这一部分的内存,通常这一部分仅占整个内存的一小部分,大约有几十兆,如果这一部分的内存有问题,通常***都无法启动,更不用说要对其进行分配及测试了。在Linux***中,每个节点(Node)的物理内存被划分为多个块,称为页区(Zone),它表示内存中的一段区域。页区是用zone结构体描述的,它跟踪页框使用、空闲区域和锁等信息,页区的类型主要有:直接内仔仔取贝区(DMAZone)、普通页区(NORMAL Zone)和高端页区(HIGHMEM Zone)三种,页区可以使页面分配更有目的性,有利于减少内存碎片。直接内存存取页区(DMAZone)位于低端的内存空间,用于某些旧的工业标准结构(ISA)设备。普通页区(NORMAL Zone)的内存直接映像到Linux***内核(Kernel)线性地址空间的高端部分,许多内核(Kernel)操作只能在普通页区(NORMAL Zone)中进行。
每个页区(Zone)中的未被占用(空闲)页,依照伙伴(Buddy)算法[每个页区的页分配使用一种伙伴(Buddy)算法,此伙伴算法核心的页分配器引入了页区结构,一个页区就是一大块连续的物理页面,伙伴算法将整个页区划分为以2的整数次幂为单位的各级页块的集合,相邻的同次页块称为伙伴(Buddy),一对伙伴(Buddy)可以合并到更高次的页面集合中去]链接成一组链表结构。
Linux***内核(Kernel)采用上述的节点(Node)、页区(Zone)、页(Page)等结构来分级管理物理内存,而空闲的内存页主要通过每中央处理器页框高速缓存(Per-CPU Page Frame Cache)和伙伴***(Buddy System)中的链表结构来管理。其中,伙伴***(Buddy System)中的内存页20,是以2的整数次幂为单位来组织的,即连续的2n个内存页20,组成一个内存块10,作为链表的一个元素,统一管理。根据大小,内存块10被串成不同的链表,其结构图如图1所示。
本发明通过遍历(遍历,英文名称:Traversal,是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算的基础)这些链表(或者查找相关数据结构),找到符合条件的内存块,藉以实现对指定物理内存的分配。
现在请参考图2,此图为本发明的一种Linux***平台上指定地址范围分配物理内存的方法的方法流程图。如图所示,本发明的一种Linux***平台上指定地址范围分配物理内存的方法,包含以下步骤:
获得所要分配内存的指定地址范围及大小(步骤100);
针对***中每一个节点(Node),查看其包含的内存的地址范围是否与指定地址范围有交集(步骤200);
如果有交集,则对各节点中的每一个页区(Zone),查看其包含的内存的地址范围是否与指定地址范围有交集(步骤300);
如果仍有交集,则在各页区的每中央处理器页框高速缓存(Per-CPU PageFrame Cache)和伙伴***(Buddy System)中的内存块链表中,查找符合上述大小及指定地址范围要求的内存块(步骤400);
将查找到的内存块从内存块链表中经拆分后取出(步骤500);以及
在各页区中重复查找符合上述大小及指定地址范围要求的内存块并将其拆分后取出,直至分配满足了所要求的大小、或者各页区中已没有符合指定地址范围的内存块、或者各页区的空闲内存已减少至***内核安全的下限(即能够保证***内核安全的最小值)后,传送所有分配出来的内存块的信息,以用于对内存进行映像、检测和释放(步骤600),其中,传送所有分配出来的内存块的信息,可通过接口,以阵列方式进行传送。
此外,上述本发明的一种Linux***平台上指定地址范围分配物理内存的方法中,于内存块取出之后,还可进一步包含储存分配出来的内存块的信息,并更新分配状态的步骤(附图中未示出)。
由于在伙伴***(Buddy System)中,内存页以2的整数次幂(2n)为单位组成内存块,所以,本发明把要分配的大小也分解成2的整数次幂的和,并在每个页区里,按照指数从大到小的顺序依次分配。例如:要分配1048个内存页,那么1048=210+24+23。所以,需要先分配一个210大小的内存块。如果分配成功,则还需要分配的内存页为24=24+23,下一步就要分配1个24大小的内存块;如果分配失败,则还需要分配的内存页为1048=29×2+24+23,下一步就需要分配2个29大小的内存块。依次类推。如此处理,可以尽量不拆散现有的内存块,进而保证空闲内存页的连续性,减少对***性能的影响。
以下,将详细描述本发明的一种Linux***平台上指定地址范围分配物理内存的方法,于实现查找符合要求的内存块及拆分内存块时所采用的技术手段。
(一)、查找符合要求的内存块
如图3所示,其中,R表示指定的地址范围,按照指定的地址范围的要求,内存块10可分为三种情况:(1)内存块中的全部内存页都在指定地址范围内;(2)部分内存页在指定地址范围内;(3)全部内存页都不在指定地址范围内。
上述(1)、(2)两种内存块,都是符合地址范围要求的。第(1)种,全部内存页都在指定地址范围内,可以直接从链表中取出;第(2)种,部分内存页在指定地址范围内,可以通过拆分,取出符合地址范围要求的小内存块。因此,这两种内存块都是本发明的方法所要查找的目标。
内存块除了要符合指定的地址范围的要求,还有就是要符合所要分配内存的大小的要求。本发明模仿现有技术的伙伴***(Buddy System)中内核已有的方法查找符合所要分配内存的大小要求的内存块,其顺序是:先在与所要求的大小相同的内存块链表中查找;当无法找到时,再在相比于所要求的大小更为大的内存块链表中查找(因为大的内存块总是可以拆分成小的内存块)。
在现有技术中,上述查找的具体办法有两种:1)遍历内存块链表,这也是上述现有技术中方法一所采取的方法;2)利用***内核的数据结构查找(可能会因内核版本而异,例如:在2.6.10版本及之前版本的内核中,每个链表都有一个对应的位图,用以标明各个伙伴(Buddy)的状态;而在2.6.10版本之后的内核里,每个页结构都有字段标明其是否是在伙伴***中)。上述两种现有技术的方法各有缺点:前者在链表中节点较多时,比较耗时;后者在链表中元素较少时,效率有可能不如前者。
本发明的方法系将上述两种方法结合起来使用,选择的原则如下:对于2.6.10版本及之前版本的内核,因为位图的查找速度大于链表,所以总是使用位图进行查找;对于2.6.10版本之后的内核,当链表中节点的个数大于指定地址范围内存在的内存块总数,即:链表中节点的个数大于>(结束地址—起始地址)/内存块的大小时,将通过页结构中的字段来查找,反之,则使用链表查找。
(二)、拆分内存块
在上述现有技术的方法一中,对于指定的内存页的分配,会取下内存页所在的整个内存块,进而平白地占用了与其相邻的其它内存页。本发明的方法则提出拆分内存块的方法,藉以避免这种不必要的资源浪费。拆分内存块的具体方法如下:
对于全部内存页在指定地址范围内的内存块,如果所要分配的大小比内存块要小,可以按照现有技术的***内核中已有的拆分方法进行拆分,并取得第一个所要分配大小的小内存块。
对于部分内存页在指定地址范围内的内存块,情况会比较复杂,现在请参考图4,如图所示,R表示指定的地址范围。其具体情况可分为三种:a)前半部分在指定地址范围内;b)后半部分在指定地址范围内;c)中间部分在指定地址范围内。
假定要在指定地址范围内分配一个设定大小为size的小内存块。在查找到符合要求的内存块10后,拆分处理方式如下:
(1)如果内存块10中,size大小的第一个小内存块在指定地址范围内,则可以通过拆分,取出size大小的第一个小内存块。如此,便可以处理全部和前半部分在指定地址范围内的情况。当然,如果size大小的第一个小内存块不在指定地址范围内,则无法进行拆分。
(2)如果内存块10中,size大小的最后一个小内存块在指定地址范围内,则可以通过拆分,取出size大小的最后一个小内存块101,其中,10’,10”分别为拆分后余下的内存块。如此,便处理了后半部分在指定地址范围内的情况。
(3)如果内存块10中,中间部分在指定地址范围内,即指定地址范围的起、止地址都落在了内存块10中,那么只要针对此内存块10进行拆分处理即可。处理的方式为:将此内存块10不停地拆分,直至找到符合上述(1)、(2)两种情况的内存块,然后再通过拆分,得到要分配的小内存块101,其中,10’,10”分别为拆分后余下的内存块。如此,便处理了中间部分在指定地址范围内的情况。
拆分的具体方法与现有技术的内核中已有的方法类似,但已有方法只能取出第一个小内存块。本发明可通过改进拆分进程,取出最后一个小内存块。然后,将取出第一个小内存块和取出最后一个小内存块的方法相结合,并加入条件判断,进而可以取出中间部分的任意小内存块。
下面,请参考图5,将通过一个实施例对本发明的技术方案的具体实施进一步加以描述:
假设我们要在32M~63M的地址范围内,分配10M的内存。
在本发明的方法中,我们先将指定的地址范围转换成内存页号范围8192~16127(假设以4K为一页)。
假设在此Linux***平台上,Linux内核把所有内存看成一个节点(Node),而节点中分成三个页区:直接内存存取页区(DMA Zone)、普通页区(NORMALZone)及高端页区(HIGHMEM Zone),这三个页区所对应的页号范围分别为:0~4095,4096~229375,229376~362143。如此,只有普通页区(NORMAL Zone)与指定的地址范围有交集,我们只需要处理这一个页区即可。
10M内存包含的内存页的个数是2560=211+29。但是,由于伙伴***(BuddySystem)中最大的内存块仅包含210个页,所以需要将其分解为2560=210×2+29。
我们先在大小为210个页的内存块的链表中查找。假设找到一个内存块10,其对应的页号范围是8192~9215。这一内存块10正好完全在指定的地址范围内,而且大小也是所要分配的大小,所以可以直接取出。然后,设置相应的内存页,保存相关信息,并更新分配状态。
由于还有1536=210+29个页需要分配,所以再次在210个页的内存块的链表中查找。假设又找到一个内存块10,其页号范围是15360~16383。此内存块的部分页在指定地址范围内,但是不能通过拆分得到所要分配的内存块,因此无法进行分配。而此时,上述210个页的内存块的链表里,也没有其它符合要求的内存块了。
这样,我们需要分配的页的个数还是1536=210+29。由于210大小的内存块已经分配完成,所以如此分解:1536=29×3,即需要分配3个29大小的内存块。
我们在29个页的内存块的链表里查找。假设没有符合指定地址范围的内存块,那么就需要到上一级的链表(即210个页的内存块的链表)中查找。这样,就刚好找到了上述那个页号范围是15360~16383的内存块10。此次所要求的大小是29个页,而这一内存块的第一个29小块,其页号范围是15360~15871,恰好符合要求。因此,可以通过拆分,把其前半部分分配出来,而其后半部分则可放入下一级的链表中。
接着,在210个页的内存块的链表里再次查找,便找不到符合要求的内存块了。
此时,还需要分配的页的个数是1024=28×4。依次重复上述进程,直至分配满足了所要求的大小、或者此页区中已没有符合指定地址范围的内存块、或者此页区的空闲内存已减少至***内核安全的下限(即能够保证***内核安全的最小值)后,通过接口,以阵列方式传送所有分配出来的内存块的信息,进而用于对内存进行映像、检测和释放。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (8)
1、一种Linux***平台上指定地址范围分配物理内存的方法,应用于Linux操作***下的物理内存的测试进程中,其特征在于,该方法包含以下步骤:
获得所要分配内存的指定地址范围及大小;
针对***中每一个节点,查看其包含的内存的地址范围是否与该指定地址范围有交集;
如果有交集,则对所述各节点中的每一个页区,查看其包含的内存的地址范围是否与该指定地址范围有交集;
如果仍有交集,则在所述各页区的每中央处理器页框高速缓存和伙伴***中的内存块链表中,查找符合所述大小及指定地址范围要求的内存块;
将查找到的内存块从该内存块链表中经拆分后取出;以及
在所述各页区中重复查找符合所述大小及指定地址范围要求的内存块并将其拆分后取出,直至分配满足了所要求的大小、或者所述各页区中已没有符合该指定地址范围的内存块、或者所述各页区的空闲内存已减少至***内核安全的下限后,传送所有分配出来的内存块的信息,以用于对内存进行映像、检测和释放。
2、根据权利要求1所述的Linux***平台上指定地址范围分配物理内存的方法,其特征在于,符合指定地址范围要求的内存块包含:
内存块中的全部内存页都在该指定地址范围内的内存块;以及
内存块中的部分内存页在该指定地址范围内的内存块。
3、根据权利要求1所述的Linux***平台上指定地址范围分配物理内存的方法,其特征在于,查找符合所要分配内存的大小要求的内存块系包含如下步骤:
先在与所要求的大小相同的内存块链表中查找;以及
当无法找到时,再在相比于所要求的大小更为大的内存块链表中查找。
4、根据权利要求3所述的Linux***平台上指定地址范围分配物理内存的方法,其特征在于,该查找方法包含:遍历内存块链表以及利用***内核的数据结构进行查找。
5、根据权利要求1所述的Linux***平台上指定地址范围分配物理内存的方法,其特征在于,拆分所述内存块包含如下步骤:
对于全部内存页在该指定地址范围内的内存块,如果所要分配的大小比内存块要小,则通过拆分,取得第一个所要分配大小的小内存块;以及
对于部分内存页在该指定地址范围内的内存块,如果要在该指定地址范围内分配一个设定大小的小内存块,则根据在该指定地址范围内的该部分内存页位于该内存块的前半部分、后半部分或中间部分三种情况进行拆分。
6、根据权利要求5所述的Linux***平台上指定地址范围分配物理内存的方法,其特征在于,根据在该指定地址范围内的该部分内存页位于该内存块的前半部分、后半部分或中间部分三种情况进行拆分,分别对应于以下三种拆分处理方式:
(1)如果该内存块中,设定大小的第一个小内存块在该指定地址范围内,则通过拆分,取出该设定大小的第一个小内存块;
(2)如果该内存块中,设定大小的最后一个小内存块在该指定地址范围内,则通过拆分,取出该设定大小的最后一个小内存块;以及
(3)如果该内存块中,该指定地址范围的起、止地址都落在该内存块中,则将该内存块不停地拆分,直至找到符合所述(1)、(2)两种情况的内存块,然后再通过拆分,得到要分配的该设定大小的小内存块。
7、根据权利要求1所述的Linux***平台上指定地址范围分配物理内存的方法,其特征在于,于该内存块取出之后,进一步包含储存该分配出来的内存块的信息,并更新分配状态的步骤。
8、根据权利要求1所述的Linux***平台上指定地址范围分配物理内存的方法,其特征在于,通过接口,以阵列方式传送所有分配出来的内存块的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007103061100A CN101470667A (zh) | 2007-12-28 | 2007-12-28 | Linux***平台上指定地址范围分配物理内存的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007103061100A CN101470667A (zh) | 2007-12-28 | 2007-12-28 | Linux***平台上指定地址范围分配物理内存的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101470667A true CN101470667A (zh) | 2009-07-01 |
Family
ID=40828148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007103061100A Pending CN101470667A (zh) | 2007-12-28 | 2007-12-28 | Linux***平台上指定地址范围分配物理内存的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101470667A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739346B (zh) * | 2009-12-04 | 2012-09-05 | 北京工业大学 | 对安全控制模块内存进行集中控制的方法 |
CN105117351A (zh) * | 2015-09-08 | 2015-12-02 | 华为技术有限公司 | 向缓存写入数据的方法及装置 |
CN105589809A (zh) * | 2014-10-24 | 2016-05-18 | 中国科学院深圳先进技术研究院 | 一种内存管理方法及装置 |
CN105893269A (zh) * | 2016-03-31 | 2016-08-24 | 武汉虹信技术服务有限责任公司 | 一种Linux***下内存管理方法 |
WO2016187974A1 (zh) * | 2015-05-25 | 2016-12-01 | 中兴通讯股份有限公司 | 一种存储空间管理方法及装置 |
WO2016206421A1 (zh) * | 2015-06-26 | 2016-12-29 | 中兴通讯股份有限公司 | 内存访问处理方法、装置和存储介质 |
CN107391141A (zh) * | 2017-07-26 | 2017-11-24 | 浪潮软件集团有限公司 | 一种支持容器运行的全内存操作*** |
CN104182351B (zh) * | 2013-05-22 | 2017-12-19 | 格芯公司 | 用于无锁存储器分配的链表的方法和*** |
CN107844372A (zh) * | 2017-10-17 | 2018-03-27 | 广东睿江云计算股份有限公司 | 一种内存分配的方法、*** |
CN108132860A (zh) * | 2016-12-01 | 2018-06-08 | 英业达科技有限公司 | 依存储器模块的物理地址范围测试存储器的***及方法 |
CN109643277A (zh) * | 2016-09-26 | 2019-04-16 | 英特尔公司 | 用于中介传递和共享存储器页合并的装置和方法 |
US10353609B2 (en) | 2014-09-16 | 2019-07-16 | Huawei Technologies Co., Ltd. | Memory allocation method and apparatus |
CN112035272A (zh) * | 2019-06-03 | 2020-12-04 | 华为技术有限公司 | 进程间通信的方法、装置以及计算机设备 |
-
2007
- 2007-12-28 CN CNA2007103061100A patent/CN101470667A/zh active Pending
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739346B (zh) * | 2009-12-04 | 2012-09-05 | 北京工业大学 | 对安全控制模块内存进行集中控制的方法 |
CN104182351B (zh) * | 2013-05-22 | 2017-12-19 | 格芯公司 | 用于无锁存储器分配的链表的方法和*** |
US10353609B2 (en) | 2014-09-16 | 2019-07-16 | Huawei Technologies Co., Ltd. | Memory allocation method and apparatus |
US10990303B2 (en) | 2014-09-16 | 2021-04-27 | Huawei Technologies Co., Ltd. | Memory allocation method and apparatus |
CN105589809A (zh) * | 2014-10-24 | 2016-05-18 | 中国科学院深圳先进技术研究院 | 一种内存管理方法及装置 |
CN106294190B (zh) * | 2015-05-25 | 2020-10-16 | 中兴通讯股份有限公司 | 一种存储空间管理方法及装置 |
WO2016187974A1 (zh) * | 2015-05-25 | 2016-12-01 | 中兴通讯股份有限公司 | 一种存储空间管理方法及装置 |
CN106294190A (zh) * | 2015-05-25 | 2017-01-04 | 中兴通讯股份有限公司 | 一种存储空间管理方法及装置 |
WO2016206421A1 (zh) * | 2015-06-26 | 2016-12-29 | 中兴通讯股份有限公司 | 内存访问处理方法、装置和存储介质 |
US10409502B2 (en) | 2015-09-08 | 2019-09-10 | Huawei Technologies Co., Ltd. | Method and apparatus for writing metadata into cache |
CN105117351B (zh) * | 2015-09-08 | 2018-07-03 | 华为技术有限公司 | 向缓存写入数据的方法及装置 |
CN105117351A (zh) * | 2015-09-08 | 2015-12-02 | 华为技术有限公司 | 向缓存写入数据的方法及装置 |
CN105893269B (zh) * | 2016-03-31 | 2018-08-21 | 武汉虹信技术服务有限责任公司 | 一种Linux***下内存管理方法 |
CN105893269A (zh) * | 2016-03-31 | 2016-08-24 | 武汉虹信技术服务有限责任公司 | 一种Linux***下内存管理方法 |
CN109643277A (zh) * | 2016-09-26 | 2019-04-16 | 英特尔公司 | 用于中介传递和共享存储器页合并的装置和方法 |
CN109643277B (zh) * | 2016-09-26 | 2024-02-20 | 英特尔公司 | 用于中介传递和共享存储器页合并的装置和方法 |
CN108132860A (zh) * | 2016-12-01 | 2018-06-08 | 英业达科技有限公司 | 依存储器模块的物理地址范围测试存储器的***及方法 |
CN107391141A (zh) * | 2017-07-26 | 2017-11-24 | 浪潮软件集团有限公司 | 一种支持容器运行的全内存操作*** |
CN107844372A (zh) * | 2017-10-17 | 2018-03-27 | 广东睿江云计算股份有限公司 | 一种内存分配的方法、*** |
CN107844372B (zh) * | 2017-10-17 | 2021-09-07 | 广东睿江云计算股份有限公司 | 一种内存分配的方法、*** |
CN112035272A (zh) * | 2019-06-03 | 2020-12-04 | 华为技术有限公司 | 进程间通信的方法、装置以及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101470667A (zh) | Linux***平台上指定地址范围分配物理内存的方法 | |
US11082206B2 (en) | Layout-independent cryptographic stamp of a distributed dataset | |
KR102137761B1 (ko) | 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법 | |
CN103067433B (zh) | 一种分布式存储***的数据迁移方法、设备和*** | |
CN101567003B (zh) | 并行文件***中资源的管理和分配方法 | |
US8060706B2 (en) | Method of allocating physical memory in specified address range under Linux system platform | |
CN105786405B (zh) | 一种在线升级方法、装置及*** | |
CN103246616B (zh) | 一种长短周期访问频度的全局共享缓存替换方法 | |
US9612975B2 (en) | Page cache device and method for efficient mapping | |
CN106656631B (zh) | 在共享存储上实现逻辑卷动态分配的方法 | |
CN107291424A (zh) | 基于闪存的加速器和包含其的计算设备 | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
US6711559B1 (en) | Distributed processing system, apparatus for operating shared file system and computer readable medium | |
CN104603739A (zh) | 对并行存储的块级访问 | |
CN103502926A (zh) | 基于扩展区的存储架构 | |
CN104866428A (zh) | 数据存取方法和数据存取装置 | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
US20200349081A1 (en) | Method, apparatus and computer program product for managing metadata | |
CN106802939A (zh) | 一种解决数据冲突的方法和*** | |
CN100437524C (zh) | 用于将文件的数据存储在存储块中的高速缓存方法及*** | |
CN110740155B (zh) | 分布式***中的请求处理方法及装置 | |
CN100454241C (zh) | 一种在共享内存中存储c++对象的方法及装置 | |
CN106354428B (zh) | 一种多物理层分区计算机体系结构的存储共享*** | |
CN105912270A (zh) | 一种面向pm的访存请求解析装置与方法 | |
US9172754B2 (en) | Storage fabric address based data block retrieval |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090701 |