CN102819497B - 一种内存分配方法、装置及*** - Google Patents

一种内存分配方法、装置及*** Download PDF

Info

Publication number
CN102819497B
CN102819497B CN201210176906.XA CN201210176906A CN102819497B CN 102819497 B CN102819497 B CN 102819497B CN 201210176906 A CN201210176906 A CN 201210176906A CN 102819497 B CN102819497 B CN 102819497B
Authority
CN
China
Prior art keywords
memory
thread
page
user space
kernel state
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.)
Expired - Fee Related
Application number
CN201210176906.XA
Other languages
English (en)
Other versions
CN102819497A (zh
Inventor
刘仪阳
张知皦
方帆
陈渝
崔岩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Huawei Technologies Co Ltd
Original Assignee
Tsinghua University
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University, Huawei Technologies Co Ltd filed Critical Tsinghua University
Priority to CN201210176906.XA priority Critical patent/CN102819497B/zh
Publication of CN102819497A publication Critical patent/CN102819497A/zh
Application granted granted Critical
Publication of CN102819497B publication Critical patent/CN102819497B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种内存分配方法、装置及***,涉及计算机领域,用以一定程度上避免操作***和应用程序对高速缓存的竞争,从而提高***性能及数据处理效率。所述内存分配方法包括:当一个线程需要分配内存时,识别所述线程的类型;所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令;若所述线程为用户态线程,则从所述用户态内存区为该用户态线程分配内存;若所述线程为内核态线程,则从所述内核态内存区为该内核态线程分配内存。

Description

一种内存分配方法、装置及***
技术领域
本发明涉及计算机领域,尤其涉及一种内存分配方法、装置及***。
背景技术
在计算机结构中,处理器与存储器是其中两个核心的组件。处理器主要用于运算,存储器主要用于存储数据。存储器的层次分类是一种呈金字塔结构的组织,塔尖是成本昂贵、容量较小、但是访问速度极快的硬件高速缓存存储器,中间还存在成本可控、访存速度相对较快的内存,塔基是成本低廉、容量很大、但是访问速度很慢的硬件磁盘。
当前,计算机CPU的运算速度要远远高于从内存中存取数据的速度,而硬件高速缓存存储器位于CPU与内存之间,它的访存速度介于两者之间,如当前主流服务器中的L1(一级)高速缓存,L2(二级)高速缓存,有些甚至有L3(三级)高速缓存。一般来说,LLC(Last Level Cache,最后一级高速缓存)为当前物理CPU上的所有逻辑CPU共享使用。
当CPU处理数据时,首先在高速缓存存储器中查找所需的数据,若存在该数据,称为缓存命中,则直接返回,由CPU进行数据处理;若该数据处理不存在于高速缓存,称为缓存缺失,则访问内存查找所需数据,再返回CPU进行数据处理,并将该数据缓存在高速缓存存储器中。
当新的数据需要缓存到高速缓存存储器时,必然有旧的数据需要被替换出去。被替换出来的数据有可能是用户态数据,也有可能是内核态数据。在数据替换的过程中,发明人发现在有限的资源下,操作***和应用程序必然对高速缓存产生竞争,从而导致***性能下降。
发明内容
本发明的实施例提供一种内存分配方法、装置及***,用以一定程度上避免操作***和应用程序对高速缓存的竞争,从而提高***性能及数据处理效率。
本发明的实施例采用如下技术方案:
一方面,本发明提供了一种内存分配方法,包括:
当一个线程需要分配内存时,识别所述线程的类型;所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令;
若所述线程为用户态线程,则从所述用户态内存区为该用户态线程分配内存;
若所述线程为内核态线程,则从所述内核态内存区为该内核态线程分配内存。
又一方面,本发明还提供了一种内存分配方法,包括:
从内核态内存区为内核代码分配内存,并将内核代码复制到分配的内存中;从用户态内存区为全局数据分配内存,并将全局数据复制到分配的内存中;所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令;
静态修改关于内核代码和全局数据的虚拟内存与物理内存的映射关系。
又一方面,本发明还提供了一种内存分配装置,包括:
第一识别单元,用于当一个线程需要分配内存时,识别所述线程的类型,并在识别出所述线程为用户态线程的情况下,触发第一分配单元,在识别出所述线程为内核态线程的情况下,触发第二分配单元;所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令;
所述第一分配单元,用于从所述用户态内存区为该用户态线程分配内存;
所述第二分配单元,用于从所述内核态内存区为该内核态线程分配内存。
又一方面,本发明还提供了一种内存分配装置,包括:
第一分配单元,用于从内核态内存区为内核代码分配内存,并将内核代码复制到分配的内存中;
第二分配单元,用于从用户态内存区为全局数据分配内存,并将全局数据复制到分配的内存中;
修改映射单元,用于静态修改关于内核代码和全局数据的虚拟内存与物理内存的映射关系;其中,
所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令。
一方面,本发明还提供了一种内存,所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令。
一方面,本发明还提供了一种计算机***,包括:
总线;
与所述总线相连的处理器;
与所述总线相连的内存;
其中,所述处理器中包括上述任一种内存分配装置;所述内存为上述的内存;所述缓存与所述内存之间存在映射关系。
另一方面,本发明还提供了一种计算机***,包括:
总线;
与所述总线相连的处理器;
与所述总线相连的内存;
其中,所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令;所述处理器通过所述总线,调用所述内存中存储的代码,以用于:当一个线程需要分配内存时,识别所述线程的类型;若所述线程为用户态线程,则从所述用户态内存区为该用户态线程分配内存;若所述线程为内核态线程,则从所述内核态内存区为该内核态线程分配内存。
本发明提供的内存分配方法、装置及***,通过将内存划分为用户态内存区和内核态内存区,并从用户态内存区为用户态线程分配内存,从内核态内存区为内核态线程分配内存;由于内存与缓存之间存在固定的映射关系,这样就相应的将高速缓存分成分别用于存储用户态数据和内核态数据的两部分,从而在一定程度上避免操作***和应用程序对高速缓存的竞争,从而提高***性能及数据处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种内存分配方法流程图;
图2为内存物理地址和缓存地址的映射关系;
图3为本发明实施例提供的另一种内存分配方法流程图;
图4为本发明实施例提供的又一种内存分配方法流程图;
图5为链表示意图;
图6为本发明实施例提供的再一种内存分配方法流程图;
图7为本发明实施例提供的一种内存分配装置示意图;
图8为本发明实施例提供的另一种内存分配装置示意图;
图9为本发明实施例提供的一种计算机***的示意图;
图10为本发明实施例提供的另一种计算机***的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种内存分配方法,包括:
S101、当一个线程需要分配内存时,识别所述线程的类型。
其中,线程的类型包括:用户态线程和内核态线程;通常情况下,用户态线程是用户应用程序提供服务时创建的线程,主要是在用户态空间运行,而内核态线程,是操作***内核提供服务时创建的线程。
另外,所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令。
优选的,所述包含多个物理内存页的内存分为用户态内存区和内核态内存区包括:通过物理地址的页着色位将所述多个物理内存页划分为至少两个内存组,且所述至少两个内存组分为用户态内存区和内核态内存区;其中,同一内存组内的所有物理内存页的各物理地址的页着色位相同。
下面参考图2所示的内存的物理地址和缓存地址的映射关系,简要介绍页着色位。内存的物理地址包括:物理内存页编号和页内偏移量;其中,物理内存页编号用于索引当前物理地址属于哪个物理内存页,页内偏移量用于标记当前物理地址在当前物理内存页中的偏移量。缓存地址包括:缓存标签、缓存组编号和组内偏移量;其中,缓存组编号用于索引当前缓存地址属于哪个缓存组,组内偏移量用于标记当前缓存地址在当前缓存组中的偏移量。
由于硬件决定了物理内存与缓存之间存在固有的映射关系,因此数据在内存中的物理地址就决定了数据在缓存中缓存组编号和组内偏移量。页内偏移量的高位与缓存组编号的低位有部分重叠的位,为软件不可控制位;物理内存页编号的低位与缓存组编号的高位有部分重叠的位,为软件可控制位,称为页着色位。那么具有相同页着色位的物理内存页共享同一个缓存组集合,该缓存组集合包含至少一个缓存组。这样依据页着色位将内存划分为多个内存组,并且同一个内存组的内存页与缓存中的同一个缓存组集合对应。
上述优选方案中,通过物理地址的页着色位将所述多个物理内存页划分为至少两个内存组,且所述至少两个内存组分为用户态内存区和内核态内存区;另由上述内存的物理地址和缓存地址的映射关系可知,实质上缓存也相应分为两类,可以称为用户态缓存区和内核态缓存区,且两类缓存区中均包含有多个缓存组集合;其中,用户态缓存区供用户态使用,内核态缓存区供内核态使用。
可选的,在所述识别所述线程的类型之前还可以包括:当所述线程需要分配内存时,若操作***发生缺页异常,则为所述线程的内存分配行为设置用户内存分配行为修饰符,具体的可以在所述线程所需调用函数中设置用户内存分配行为修饰符;所述用户内存分配行为修饰符用于标记当前内存分配行为由用户态线程触发。
此时,S101中的识别所述线程的类型具体为:识别所述线程的内存分配行为是否设置有用户内存分配行为修饰符;若所述线程的内存分配行为设置有用户内存分配行为修饰符,则确定所述线程为用户态线程;若所述线程的内存分配行为未设置有用户内存分配行为修饰符,则确定所述线程为内核态线程。
其中,上述内存分配行为是计算机领域的常用熟语,所谓内存分配行为是指由处理器为线程分配内存的行为,内存分配行为可以由用户态线程触发,或者,可以由内核态线程触发。
若S101中识别出所述线程为用户态线程,则进行S102;若S101中识别出所述线程为内核态线程,则进行S103。
进一步的,在执行S102或S103之前还可以利用以下方法中的任一种或以下方法的任意组合,以得到用户态内存区和内核态内存区的范围:
方法一、在操作***启动时,获取所述操作***启动参数中所设置的所述用户态内存区和/或内核态内存区的内存组的组数。
其中,由于所有内存组的组数总和是一定的,故而若获取到用户态内存区所包含的内存组的组数,就相应的可以获取内核态内存区所包含的内存组的组数;同样若获取到内核态内存区所包含的内存组的组数,就相应的可以获取用户态内存区所包含的内存组的组数;当然,分别获取两个内存区所包含的内存组的组数也是可以的。
如果采用这种方法,那么在操作***运行中最好不要再做更改。
方法二、在操作***运行过程中,获取通过所述操作***的内核交互接口设置的所述用户态内存区和/或内核态内存区的内存组的组数。
示例的,在linux操作***下,操作***的内核交互接口可以是procfs接口或sysfs接口,用户在操作***运行过程中可以修改至少一个内存区所包含的内存组的组数。
方法三、在操作***运行过程中,获取通过所述操作***提供的***调用接口设置的所述用户态内存区和/或内核态内存区的内存组的组数。
如采用这种方法,用户在操作***运行过程中可以修改至少一个内存区所包含的内存组的组数。
S102、从所述用户态内存区为该用户态线程分配内存。
可选的,根据用户态内存区所包含的内存组的组数,从用户态内存区的范围内为用户态线程分配内存。
S103、从所述内核态内存区为该内核态线程分配内存。
可选的,根据内核态内存区所包含的内存组的组数,从内核态内存区的范围内为内核态线程分配内存。
本发明提供的内存分配方法,通过将内存划分为用户态内存区和内核态内存区,并从用户态内存区为用户态线程分配内存,从内核态内存区为内核态线程分配内存;由于内存与缓存之间存在固定的映射关系,这样就相应的将高速缓存分成分别用于存储用户态数据和内核态数据的两部分,从而能够在一定程度上避免操作***和应用程序对高速缓存的竞争,从而提高***性能及数据处理效率。
基于上述任一种内存分配方法的实施方式,如图3所示,当一个线程需要分配内存时,还可以进一步的包括:
S100、判断是否能够按照内存的划分为所述线程分配内存;
若否,即若判断结果为不能按照内存的划分为所述线程分配内存,则进行步骤S104;
若是,即若判断结果为能够按照内存的划分为所述线程分配内存,则按照内存的划分为所述线程分配内存,即转向S101以完成内存的分配。
S104、按照操作***默认的内存分配方法为所述线程分配内存;示例的,操作***默认的内存分配方法可以是伙伴算法内存分配方法。
本发明实施例还提供了一种基于每CPU链表的内存分配方法,如图4所示,所述方法包括:
S401、当一个线程需要从每CPU链表分配内存时,识别所述线程的类型。
首先介绍一下链表的结构,示例的如图5所示,链表包括多个节点,每个节点中存储有一段内存存储空间的起始地址、该内存存储空间的大小(或者该内存存储空间的终止地址)以及下一个节点的入口地址。
在本发明实施例中,所述每CPU链表分为用户链表和内核链表;其中,用户链表和内核链表的结构均可以参照图5中的结构。所述用户链表的各个节点指向的所述用户态内存区的物理内存页,所述用户链表的各个节点指向的所述内核态内存区的物理内存页。内存的划分仍可以参照上述实施例,在此不加赘述。
与S101类似,可选的,在所述识别所述线程的类型之前还可以包括:当所述线程需要分配内存时,若操作***发生缺页异常,则为所述线程的内存分配行为设置用户内存分配行为修饰符;所述用户内存分配行为修饰符用于标记当前内存分配行为由用户态线程触发。
此时,S401中识别线程的类型的过程可以采用与S401中相同的方式:识别所述线程的内存分配行为是否设置有用户内存分配行为修饰符;若所述线程的内存分配行为设置有用户内存分配行为修饰符,则确定所述线程为用户态线程;若所述线程的内存分配行为未设置有用户内存分配行为修饰符,则确定所述线程为内核态线程。
在S401中识别出所述线程为用户态线程的情况下,执行S402;在S401识别出所述线程为内核态线程的情况下,执行S405。
S402、判断用户链表是否存在空闲的物理内存页;
若用户链表存在空闲的物理内存页,则进行步骤S403;
若所述用户链表不存在空闲的物理内存页,则进行步骤S404。
S403、从所述用户链表为所述线程分配内存。
具体的,从所述用户链表中节点所指向的处于用户态内存区的空闲物理内存页,为所述线程分配内存。
S404、从所述用户态内存区为所述用户链表分配预定数目的物理内存页,再从所述用户链表为所述用户态线程分配内存;
S405、判断内核链表是否存在空闲的物理内存页。
若所述内核链表存在空闲的物理内存页,此时进行步骤S406;
若所述内核链表不存在空闲的物理内存页,此时进行步骤S407。
S406、从所述内核链表为所述线程分配内存。
具体的,从所述内核链表中节点所指向的处于内核态内存区的空闲物理内存页,为所述线程分配内存。
S407、从所述内核态内存区为所述内核链表分配预定数目的物理内存页,再从所述内核链表为所述内核态线程分配内存。
进一步的,上述S404中,在从所述用户态内存区为所述用户链表分配预定数目的物理内存页之后,还可以包括:在为所述用户链表分配的物理内存页的页描述符中设置第一标记,用于标识当前物理内存页用于用户态线程;示例的,在当前物理内存页的页描述符结构的成员变量flag中设置第一标记;
同样的,上述S407中,在从所述内核态内存区为所述内核链表分配预定数目的物理内存页之后,还可以包括:在为所述内核链表分配的物理内存页的页描述符中设置第二标记,用于标识当前物理内存页用于内核态线程;示例的,在当前物理内存页的页描述符结构的成员变量flag中设置第二标记。
更进一步的,上述内存分配方法还可以包括:当物理内存页释放时,清除所述物理内存页的页描述符中所设置的标记(第一标记或第二标记),并将该物理内存页加入到操作***默认内存分配方法的空闲页链表中。具体如下,当物理内存页释放时,判断页描述符中是否设置了与标记,如果设置了标记则清除该标记,并将清除标记的物理内存页加入到操作***默认内存分配方法的空闲页链表中。其中,操作***默认内存分配方法示例的,可以是伙伴算法内存分配方法;操作***默认内存分配方法的空闲页链表,示例的,可以是伙伴算法空闲页链表。
这样可以使得计算机***实现本发明实施例提供的内存分配方法的同时,也能够很好的支持到现有内存分配方法,兼容性较好。
进一步的,在S401识别所述线程的类型之前,还包括:
判断是否能够按照内存的划分为所述线程分配内存;
若判断结果为否,即若不能按照内存的划分为所述线程分配内存,则按照操作***默认的内存分配方法为所述线程分配内存;若判断结果为是,即若能够按照内存的划分为所述线程分配内存,则从S401开始执行,以按照内存的划分为所述线程分配内存。
本发明实施例基于每CPU链表的设置完成用户态线程和内核态线程在不同内存区的分配,从而能够在一定程度上避免操作***和应用程序对高速缓存的竞争,从而提高***性能及数据处理效率。
基于上述内存的划分,即所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令,为了降低内核代码和全局数据对于缓存的竞争,如图6所示,本发明实施例还提供了一种内存分配方法,包括:
S601、从内核态内存区为内核代码分配内存,并将内核代码复制到分配的内存中;
S602、从用户态内存区为全局数据分配内存,并将全局数据复制到分配的内存中;
需要说明的是,上述S601和S602之间无顺序关系。
S603、静态修改关于内核代码和全局数据的虚拟内存与物理内存的映射关系。
这样就使得虚拟内存地址可以通过修改后的映射关系,获取到内核代码或全局数据的物理内存地址。
本发明提供的内存分配方法,通过将内存划分为用户态内存区和内核态内存区,并将内核代码复制到内核态内存区且将全局数据复制到用户态内存区;由于内存与缓存之间存在固定的映射关系,这样可以在一定程度上降低内核代码和全局数据对缓存的竞争。
下面本发明实施例还提供了与上述内存分配方法相对应的内存分配装置,对内存分配装置中的各个单元的说明,可以参照上述方法各步骤中的描述,在以下装置实施例中将不加赘述。
如图7所示,本发明实施例提供的内存分配装置,包括:
识别单元71,用于当一个线程需要分配内存时,识别所述线程的类型,并在识别出所述线程为用户态线程的情况下,触发第一分配单元72,在识别出所述线程为内核态线程的情况下,触发第二分配单元73;所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令;
所述第一分配单元72,用于从所述用户态内存区为该用户态线程分配内存;
所述第二分配单元73,用于从所述内核态内存区为该内核态线程分配内存。
进一步的,如图7所示,还包括:设置修饰符单元74,用于在所述线程需要分配内存时,若操作***发生缺页异常,则为所述线程的内存分配行为设置用户内存分配行为修饰符;所述用户内存分配行为修饰符用于标记当前内存分配行为由用户态线程触发;
所述识别单元71,具体用于识别所述线程的内存分配行为是否设置有用户内存分配行为修饰符;若所述线程的内存分配行为设置有用户内存分配行为修饰符,则确定所述线程为用户态线程;若所述线程的内存分配行为未设置有用户内存分配行为修饰符,则确定所述线程为内核态线程。
优选的,用户态内存区和所述内核态内存区可以按照以下方式进行划分:所述用户态内存区和所述内核态内存区分别包含至少一个内存组,且同一个内存组只属于其中一个内存区;其中,同一内存组内的所有物理内存页的各物理地址的页着色位相同;
这样,如图7所示,上述内存分配装置还包括:
获取单元75,用于在操作***启动时,获取所述操作***启动参数中所设置的所述用户态内存区和/或内核态内存区的内存组的组数;和/或,在操作***运行过程中,获取通过所述操作***的内核交互接口设置的所述用户态内存区和/或内核态内存区的内存组的组数;和/或,在操作***运行过程中,获取通过所述操作***提供的***调用接口设置的所述用户态内存区和/或内核态内存区的内存组的组数。
这样使得第一分配单元72和第二分配单元73可以通过获取单元75所获取的组数,在不同的内存区为不同的类型的线程分配内存。
在上述内存分配装置的基础上,还可以进一步的包括:判断单元76和***默认分配单元77;
所述***默认分配单元77,用于按照操作***默认的内存分配方法为所述线程分配内存;
所述判断单元76用于当一个线程需要分配内存时,判断是否能够按照内存的划分为所述线程分配内存;
若所述判断单元76的判断结果为不能按照内存的划分为所述线程分配内存,则触发所述***默认分配单元77,若判断结果为能够按照内存的划分为所述线程分配内存,则触发所述识别单元71。
进一步的,基于每CPU链表的分配方案,上述提供了任一内存分配装置中,
所述识别单元71,具体用于当一个线程需要从CPU链表分配内存时,识别所述线程的类型;所述CPU链表分为用户链表和内核链表,所述用户链表的各个节点指向的所述用户态内存区的物理内存页,所述用户链表的各个节点指向的所述内核态内存区的物理内存页;
所述第一分配单元72,具体用于在所述用户链表存在空闲的物理内存页的情况下,从所述用户链表为所述用户态线程分配内存;在所述用户链表为不存在空闲的物理内存页的情况下,从所述用户态内存区为所述用户链表分配预定数目的物理内存页,再从所述用户链表为所述用户态线程分配内存;
所述第二分配单元73,具体用于在所述内核链表存在空闲的物理内存页的情况下,从所述内核链表为所述内核态线程分配内存;在所述内核链表不存在空闲的物理内存页的情况下,从所述内核态内存区为所述内核链表分配预定数目的物理内存页,再从所述内核链表为所述内核态线程分配内存。
进一步的,所述第一分配单元72还用于,在为所述用户链表分配的物理内存页的页描述符中设置第一标记,用于标识当前物理内存页用于用户态线程;
所述第二分配单元73还用于,在为所述内核链表分配的物理内存页的页描述符中设置第二标记,用于标识当前物理内存页用于内核态线程。
更进一步的,所述装置还包括:清除标记单元78和加入链表单元79;
所述清除标识单元78,用于当物理内存页释放时,清除所述物理内存页的页描述符中所设置的标记;
所述加入链表单元79,用于将清除标记后的物理内存页加入到操作***默认内存分配方法的空闲页链表中。
上述内存分配装置基于内存的划分,就相应的将高速缓存分成分别用于存储用户态数据和内核态数据的两部分,从而可以在一定程度上避免操作***和应用程序对高速缓存的竞争。
如图8所示,本发明提供了一种内存分配装置,包括:
第一分配单元81,用于从内核态内存区为内核代码分配内存,并将内核代码复制到分配的内存中;
第二分配单元82,用于从用户态内存区为全局数据分配内存,并将全局数据复制到分配的内存中;
修改映射单元83,用于静态修改关于内核代码和全局数据的虚拟内存与物理内存的映射关系;其中,
所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令。
这样基于内存的划分,可以一定程度上避免内核代码和全局数据对缓存的竞争。
本发明实施例还提供了一种内存,所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令。
优选的,所述包含多个物理内存页的内存分为用户态内存区和内核态内存区包括:通过物理地址的页着色位将所述多个物理内存页划分为至少两个内存组,且所述至少两个内存组分为用户态内存区和内核态内存区;其中,同一内存组内的所有物理内存页的各物理地址的页着色位相同。
本发明实施例还提供了一种计算机***,包括:
总线91;
与所述总线91相连的处理器92;
与所述总线91相连的内存93;
其中,所述处理器中包括上述任一内存分配装置;所述内存为上述任一内存。
上述计算机***还可以进一步包括与总线91相连接的用户接口94。
本发明实施例还提供了一种计算机***,包括:
总线101;
与所述总线101相连的处理器102;
与所述总线101相连的内存103;
其中,所述内存103包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令;所述处理器102通过所述总线,调用所述内存中存储的代码,以用于:当一个线程需要分配内存时,识别所述线程的类型;若所述线程为用户态线程,则从所述用户态内存区为该用户态线程分配内存;若所述线程为内核态线程,则从所述内核态内存区为该内核态线程分配内存。
上述计算机***还可以进一步包括与总线101相连接的用户接口104。
可选的,所述处理器102还用于当所述线程需要分配内存时,若操作***发生缺页异常,则为所述线程的内存分配行为设置用户内存分配行为修饰符;所述用户内存分配行为修饰符用于标记当前内存分配行为由用户态线程触发。
此时上述处理器102识别所述线程的类型的功能,可以为识别所述线程的内存分配行为是否设置有用户内存分配行为修饰符;若所述线程的内存分配行为设置有用户内存分配行为修饰符,则确定所述线程为用户态线程;若所述线程的内存分配行为未设置有用户内存分配行为修饰符,则确定所述线程为内核态线程。
可选的,所述包含多个物理内存页的内存分为用户态内存区和内核态内存区包括:通过物理地址的页着色位将所述多个物理内存页划分为至少两个内存组,且所述至少两个内存组分为用户态内存区和内核态内存区;其中,同一内存组内的所有物理内存页的各物理地址的页着色位相同。
此时,所述处理器102还用于:在操作***启动时,获取所述操作***启动参数中所设置的所述用户态内存区和/或内核态内存区的内存组的组数;和/或,
在操作***运行过程中,获取通过所述操作***的内核交互接口设置的所述用户态内存区和/或内核态内存区的内存组的组数;和/或,
在操作***运行过程中,获取通过所述操作***提供的***调用接口设置的所述用户态内存区和/或内核态内存区的内存组的组数。
可选的,所述处理器102还用于:当一个线程需要分配内存时,判断是否能够按照内存的划分为所述线程分配内存;
若判断结果为不能按照内存的划分为所述线程分配内存,则按照操作***默认的内存分配方法为所述线程分配内存;
若判断结果为能够按照内存的划分为所述线程分配内存,则按照内存的划分为所述线程分配内存。
可选的,所述处理器102分配内存为从每CPU链表分配内存;其中,所述每CPU链表分为用户链表和内核链表,所述用户链表的各个节点指向的所述用户态内存区的物理内存页,所述用户链表的各个节点指向的所述内核态内存区的物理内存页;
此时,所述处理器102用于:在所述线程为用户态线程的情况下,若所述用户链表存在空闲的物理内存页,则从所述用户链表为所述用户态线程分配内存;若所述用户链表为不存在空闲的物理内存页,则从所述用户态内存区为所述用户链表分配预定数目的物理内存页,再从所述用户链表为所述用户态线程分配内存;
在所述线程为内核态线程的情况下,若所述内核链表存在空闲的物理内存页,则从所述内核链表为所述内核态线程分配内存;若所述内核链表不存在空闲的物理内存页,则从所述内核态内存区为所述内核链表分配预定数目的物理内存页,再从所述内核链表为所述内核态线程分配内存。
进一步可选的,所述处理器102还用于:在从所述用户态内存区为所述用户链表分配预定数目的物理内存页之后,在为所述用户链表分配的物理内存页的页描述符中设置第一标记,用于标识当前物理内存页用于用户态线程;
在从所述内核态内存区为所述内核链表分配预定数目的物理内存页之后,在为所述内核链表分配的物理内存页的页描述符中设置第二标记,用于标识当前物理内存页用于内核态线程。
更进一步,可选的,所述处理器102还用于:当物理内存页释放时,清除所述物理内存页的页描述符中所设置的标记,并将该物理内存页加入到操作***默认内存分配方法的空闲页链表中。
上述任一计算机***还可以包括缓存,该缓存可以设置在处理器中,作为该处理器中多个处理器核的共享缓存。需要说明的是,本发明实施例中的缓存通常可以是硬件高速缓存,但不限于最后一级高速缓存,而可以是任何一个被多个处理器核共享的缓存。上述计算机***不限于多核计算机***,而可以是任何由多个处理器核共享同一缓存的***。
本发明提供的内存分配装置、内存及计算机***,通过将内存划分为用户态内存区和内核态内存区,并在用户态内存区为用户态线程分配内存,在内核态内存区为内核态线程分配内存;由于内存与缓存之间存在固定的映射关系,这样就相应的将高速缓存分成分别用于存储用户态数据和内核态数据的两部分,从而避免操作***和应用程序对高速缓存的竞争;另外,基于上述内存的划分,还可以一定程度上避免内核代码和全局数据对高速缓存的竞争,从而提高***性能及数据处理效率。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (18)

1.一种内存分配方法,其特征在于,包括:
当一个线程需要分配内存时,识别所述线程的类型;所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令;
若所述线程为用户态线程,则从所述用户态内存区为该用户态线程分配内存;
若所述线程为内核态线程,则从所述内核态内存区为该内核态线程分配内存;
所述包含多个物理内存页的内存分为用户态内存区和内核态内存区包括:
通过物理地址的页着色位将所述多个物理内存页划分为至少两个内存组,且所述至少两个内存组分为用户态内存区和内核态内存区;其中,同一内存组内的所有物理内存页的各物理地址的页着色位相同;
所述方法还包括:
在操作***启动时,获取所述操作***启动参数中所设置的所述用户态内存区和/或内核态内存区的内存组的组数;和/或,
在操作***运行过程中,获取通过所述操作***的内核交互接口设置的所述用户态内存区和/或内核态内存区的内存组的组数;和/或,
在操作***运行过程中,获取通过所述操作***提供的***调用接口设置的所述用户态内存区和/或内核态内存区的内存组的组数。
2.根据权利要求1所述的内存分配方法,其特征在于,在所述识别所述线程的类型之前还包括:
当所述线程需要分配内存时,若操作***发生缺页异常,则为所述线程的内存分配行为设置用户内存分配行为修饰符;所述用户内存分配行为修饰符用于标记当前内存分配行为由用户态线程触发;
所述识别所述线程的类型包括:
识别所述线程的内存分配行为是否设置有用户内存分配行为修饰符;
若所述线程的内存分配行为设置有用户内存分配行为修饰符,则确定所述线程为用户态线程;若所述线程的内存分配行为未设置有用户内存分配行为修饰符,则确定所述线程为内核态线程。
3.根据权利要求1所述的内存分配方法,其特征在于,在识别所述线程的类型之前,所述方法还包括:
当一个线程需要分配内存时,判断是否能够按照内存的划分为所述线程分配内存;
若判断结果为不能按照内存的划分为所述线程分配内存,则按照操作***默认的内存分配方法为所述线程分配内存;
若判断结果为能够按照内存的划分为所述线程分配内存,则按照内存的划分为所述线程分配内存。
4.根据权利要求1-3任一项所述的内存分配方法,其特征在于,所述分配内存为从每CPU链表分配内存;其中,所述每CPU链表分为用户链表和内核链表,所述用户链表的各个节点指向的所述用户态内存区的物理内存页,所述用户链表的各个节点指向的所述内核态内存区的物理内存页;
所述若所述线程为用户态线程,则从所述用户态内存区为该用户态线程分配内存包括:
在所述线程为用户态线程的情况下,若所述用户链表存在空闲的物理内存页,则从所述用户链表为所述用户态线程分配内存;若所述用户链表为不存在空闲的物理内存页,则从所述用户态内存区为所述用户链表分配预定数目的物理内存页,再从所述用户链表为所述用户态线程分配内存;
所述若所述线程为内核态线程,则从所述内核态内存区为该内核态线程分配内存包括:
在所述线程为内核态线程的情况下,若所述内核链表存在空闲的物理内存页,则从所述内核链表为所述内核态线程分配内存;若所述内核链表不存在空闲的物理内存页,则从所述内核态内存区为所述内核链表分配预定数目的物理内存页,再从所述内核链表为所述内核态线程分配内存。
5.根据权利要求4所述的内存分配方法,其特征在于,在从所述用户态内存区为所述用户链表分配预定数目的物理内存页之后,还包括:在为所述用户链表分配的物理内存页的页描述符中设置第一标记,用于标识当前物理内存页用于用户态线程;
在从所述内核态内存区为所述内核链表分配预定数目的物理内存页之后,还包括:在为所述内核链表分配的物理内存页的页描述符中设置第二标记,用于标识当前物理内存页用于内核态线程。
6.根据权利要求5所述的内存分配方法,其特征在于,还包括:当物理内存页释放时,清除所述物理内存页的页描述符中所设置的标记,并将该物理内存页加入到操作***默认内存分配方法的空闲页链表中。
7.一种内存分配装置,其特征在于,包括:
识别单元,用于当一个线程需要分配内存时,识别所述线程的类型,并在识别出所述线程为用户态线程的情况下,触发第一分配单元,在识别出所述线程为内核态线程的情况下,触发第二分配单元;所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令;
所述第一分配单元,用于从所述用户态内存区为该用户态线程分配内存;
所述第二分配单元,用于从所述内核态内存区为该内核态线程分配内存;
所述用户态内存区和所述内核态内存区分别包含至少一个内存组,且同一个内存组只属于其中一个内存区;其中,同一内存组内的所有物理内存页的各物理地址的页着色位相同;
所述装置还包括:
获取单元,用于在操作***启动时,获取所述操作***启动参数中所设置的所述用户态内存区和/或内核态内存区的内存组的组数;和/或,
在操作***运行过程中,获取通过所述操作***的内核交互接口设置的所述用户态内存区和/或内核态内存区的内存组的组数;和/或,
在操作***运行过程中,获取通过所述操作***提供的***调用接口设置的所述用户态内存区和/或内核态内存区的内存组的组数。
8.根据权利要求7所述的内存分配装置,其特征在于,还包括:设置修饰符单元,用于在所述线程需要分配内存时,若操作***发生缺页异常,则为所述线程的内存分配行为设置用户内存分配行为修饰符;所述用户内存分配行为修饰符用于标记当前内存分配行为由用户态线程触发;
所述识别单元,具体用于识别所述线程的内存分配行为是否设置有用户内存分配行为修饰符;若所述线程的内存分配行为设置有用户内存分配行为修饰符,则确定所述线程为用户态线程;若所述线程的内存分配行为未设置有用户内存分配行为修饰符,则确定所述线程为内核态线程。
9.根据权利要求7所述的内存分配装置,其特征在于,还包括:判断单元和***默认分配单元;
所述***默认分配单元,用于按照操作***默认的内存分配方法为所述线程分配内存;
所述判断单元用于当一个线程需要分配内存时,判断是否能够按照内存的划分为所述线程分配内存;若所述判断单元的判断结果为不能按照内存的划分为所述线程分配内存,则触发所述***默认分配单元,若判断结果为能够按照内存的划分为所述线程分配内存,则触发所述识别单元。
10.根据权利要求7-9任一项所述的内存分配装置,其特征在于,
所述识别单元,用于当一个线程需要从每CPU链表分配内存时,识别所述线程的类型;所述每CPU链表分为用户链表和内核链表,所述用户链表的各个节点指向的所述用户态内存区的物理内存页,所述用户链表的各个节点指向的所述内核态内存区的物理内存页;
所述第一分配单元,用于在所述用户链表存在空闲的物理内存页的情况下,从所述用户链表为所述用户态线程分配内存;在所述用户链表为不存在空闲的物理内存页的情况下,从所述用户态内存区为所述用户链表分配预定数目的物理内存页,再从所述用户链表为所述用户态线程分配内存;
所述第二分配单元,用于在所述内核链表存在空闲的物理内存页的情况下,从所述内核链表为所述内核态线程分配内存;在所述内核链表不存在空闲的物理内存页的情况下,从所述内核态内存区为所述内核链表分配预定数目的物理内存页,再从所述内核链表为所述内核态线程分配内存。
11.根据权利要求10所述的内存分配装置,其特征在于,所述第一分配单元还用于,在为所述用户链表分配的物理内存页的页描述符中设置第一标记,用于标识当前物理内存页用于用户态线程;
所述第二分配单元还用于,在为所述内核链表分配的物理内存页的页描述符中设置第二标记,用于标识当前物理内存页用于内核态线程。
12.根据权利要求11所述的内存分配装置,其特征在于,所述装置还包括:清除标记单元和加入链表单元;
所述清除标识单元,用于当物理内存页释放时,清除所述物理内存页的页描述符中所设置的标记;
所述加入链表单元,用于将清除标记后的物理内存页加入到操作***默认内存分配方法的空闲页链表中。
13.一种计算机***,其特征在于,包括:
总线;
与所述总线相连的处理器;
与所述总线相连的内存;
其中,所述处理器中包括如权利要求7至权利要求12任一项所述的内存分配装置;所述内存包含多个物理内存页,且包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令。
14.根据权利要求13所述的计算机***,其特征在于,所述包含多个物理内存页的内存分为用户态内存区和内核态内存区包括:
通过物理地址的页着色位将所述多个物理内存页划分为至少两个内存组,且所述至少两个内存组分为用户态内存区和内核态内存区;其中,同一内存组内的所有物理内存页的各物理地址的页着色位相同。
15.一种计算机***,其特征在于,包括:
总线;
与所述总线相连的处理器;
与所述总线相连的内存;
其中,所述内存包含多个物理内存页,且所述包含多个物理内存页的内存分为用户态内存区和内核态内存区,所述用户态内存区的物理内存页用于存储用户态数据和指令,所述内核态内存区的物理内存页用于存储内核态数据和指令;所述处理器通过所述总线,调用所述内存中存储的代码,以用于:当一个线程需要分配内存时,识别所述线程的类型;若所述线程为用户态线程,则从所述用户态内存区为该用户态线程分配内存;若所述线程为内核态线程,则从所述内核态内存区为该内核态线程分配内存;
所述包含多个物理内存页的内存分为用户态内存区和内核态内存区包括:通过物理地址的页着色位将所述多个物理内存页划分为至少两个内存组,且所述至少两个内存组分为用户态内存区和内核态内存区;其中,同一内存组内的所有物理内存页的各物理地址的页着色位相同;
所述处理器还用于:在操作***启动时,获取所述操作***启动参数中所设置的所述用户态内存区和/或内核态内存区的内存组的组数;和/或,
在操作***运行过程中,获取通过所述操作***的内核交互接口设置的所述用户态内存区和/或内核态内存区的内存组的组数;和/或,
在操作***运行过程中,获取通过所述操作***提供的***调用接口设置的所述用户态内存区和/或内核态内存区的内存组的组数。
16.根据权利要求15所述的计算机***,其特征在于,所述处理器还用于当所述线程需要分配内存时,若操作***发生缺页异常,则为所述线程的内存分配行为设置用户内存分配行为修饰符;所述用户内存分配行为修饰符用于标记当前内存分配行为由用户态线程触发。
17.根据权利要求15所述的计算机***,其特征在于,所述处理器还用于当所述线程需要分配内存时,在识别所述线程的类型之前,判断是否能够按照内存的划分为所述线程分配内存;
若判断结果为不能按照内存的划分为所述线程分配内存,则按照操作***默认的内存分配方法为所述线程分配内存;
若判断结果为能够按照内存的划分为所述线程分配内存,则按照内存的划分为所述线程分配内存。
18.根据权利要求15-17任一项所述的计算机***,其特征在于,所述分配内存为从每CPU链表分配内存;其中,所述每CPU链表分为用户链表和内核链表,所述用户链表的各个节点指向的所述用户态内存区的物理内存页,所述用户链表的各个节点指向的所述内核态内存区的物理内存页;
所述处理器用于:在所述线程为用户态线程的情况下,若所述用户链表存在空闲的物理内存页,则从所述用户链表为所述用户态线程分配内存;若所述用户链表为不存在空闲的物理内存页,则从所述用户态内存区为所述用户链表分配预定数目的物理内存页,再从所述用户链表为所述用户态线程分配内存;
在所述线程为内核态线程的情况下,若所述内核链表存在空闲的物理内存页,则从所述内核链表为所述内核态线程分配内存;若所述内核链表不存在空闲的物理内存页,则从所述内核态内存区为所述内核链表分配预定数目的物理内存页,再从所述内核链表为所述内核态线程分配内存。
CN201210176906.XA 2012-05-31 2012-05-31 一种内存分配方法、装置及*** Expired - Fee Related CN102819497B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210176906.XA CN102819497B (zh) 2012-05-31 2012-05-31 一种内存分配方法、装置及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210176906.XA CN102819497B (zh) 2012-05-31 2012-05-31 一种内存分配方法、装置及***

Publications (2)

Publication Number Publication Date
CN102819497A CN102819497A (zh) 2012-12-12
CN102819497B true CN102819497B (zh) 2015-09-30

Family

ID=47303619

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210176906.XA Expired - Fee Related CN102819497B (zh) 2012-05-31 2012-05-31 一种内存分配方法、装置及***

Country Status (1)

Country Link
CN (1) CN102819497B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103365797B (zh) * 2013-07-05 2017-05-31 华为技术有限公司 物理内存页分配方法和计算机***
CN103544324B (zh) * 2013-11-11 2017-09-08 北京搜狐新媒体信息技术有限公司 一种内核态的数据访问方法、装置及***
CN104899159B (zh) * 2014-03-06 2019-07-23 华为技术有限公司 高速缓冲存储器Cache地址的映射处理方法和装置
CN103927145B (zh) * 2014-04-28 2017-02-15 中国科学院微电子研究所 一种基于混合内存的***休眠、唤醒方法及装置
CN104850502B (zh) * 2015-05-05 2018-03-09 华为技术有限公司 一种数据的访问方法、装置及设备
CN107179949B (zh) * 2016-12-16 2020-11-24 重庆大学 一种用于移动设备中操作***内存分配流畅度的量化方法
CN107203477A (zh) 2017-06-16 2017-09-26 深圳市万普拉斯科技有限公司 内存分配方法、装置、电子设备及可读存储介质
CN107783908B (zh) * 2017-11-07 2020-12-25 晶晨半导体(上海)股份有限公司 一种基于Linux内核内存泄露的检测方法
CN108132841A (zh) * 2017-12-11 2018-06-08 杭州迪普科技股份有限公司 一种基于Linux***的设备的内存分配方法及装置
CN110121114B (zh) * 2018-02-07 2021-08-27 华为技术有限公司 发送流数据的方法及数据发送设备
CN108958911B (zh) * 2018-05-30 2022-02-08 北京小米移动软件有限公司 进程的控制方法及装置
CN110597641A (zh) * 2018-06-12 2019-12-20 杨力祥 一种线性地址空间的布局方法及计算装置
CN109062693A (zh) * 2018-07-26 2018-12-21 郑州云海信息技术有限公司 一种内存管理方法及相关设备
CN109240621B (zh) * 2018-09-25 2021-12-24 郑州云海信息技术有限公司 一种非易失性内存储器管理方法与装置
CN109688058B (zh) * 2018-12-19 2021-03-02 迈普通信技术股份有限公司 报文处理方法、装置及网络设备
CN110109761B (zh) * 2019-05-11 2021-06-04 广东财经大学 一种用户态管理操作***内核内存方法及***
CN111177019B (zh) * 2019-08-05 2021-07-16 腾讯科技(深圳)有限公司 一种内存分配管理方法、装置、设备及存储介质
CN111309644B (zh) * 2020-02-14 2021-11-09 苏州浪潮智能科技有限公司 一种内存分配方法、装置和计算机可读存储介质
CN113312322B (zh) * 2021-04-21 2022-04-01 厦门芯泰达集成电路有限公司 Stdf文件的读写方法、介质、设备及装置
CN115344507A (zh) * 2021-05-14 2022-11-15 华为技术有限公司 内存分配方法、装置和***
CN113296703B (zh) * 2021-05-27 2022-08-05 山东云海国创云计算装备产业创新中心有限公司 一种堆内存管理方法、装置、设备及介质
CN113849238B (zh) * 2021-09-29 2024-02-09 浪潮电子信息产业股份有限公司 数据通信方法、装置、电子设备及可读存储介质
CN114253713B (zh) * 2021-12-07 2024-07-09 中信银行股份有限公司 一种基于reactor的异步批处理方法及***

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226725B1 (en) * 1998-04-21 2001-05-01 Ibm Method and system in a data processing system for the dedication of memory storage locations
US6732237B1 (en) * 2000-08-29 2004-05-04 Oracle International Corporation Multi-tier caching system
CN1617113A (zh) * 2003-11-13 2005-05-18 国际商业机器公司 向物理内存分配虚拟内存的方法、存储控制器和计算机***
CN1791862A (zh) * 2003-04-09 2006-06-21 扎鲁纳股份有限公司 操作***
CN101510176A (zh) * 2009-03-26 2009-08-19 浙江大学 通用操作***对cpu二级缓存访问的控制方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63200251A (ja) * 1987-02-16 1988-08-18 Matsushita Electric Ind Co Ltd キヤツシユメモリ制御方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226725B1 (en) * 1998-04-21 2001-05-01 Ibm Method and system in a data processing system for the dedication of memory storage locations
US6732237B1 (en) * 2000-08-29 2004-05-04 Oracle International Corporation Multi-tier caching system
CN1791862A (zh) * 2003-04-09 2006-06-21 扎鲁纳股份有限公司 操作***
CN1617113A (zh) * 2003-11-13 2005-05-18 国际商业机器公司 向物理内存分配虚拟内存的方法、存储控制器和计算机***
CN101510176A (zh) * 2009-03-26 2009-08-19 浙江大学 通用操作***对cpu二级缓存访问的控制方法

Also Published As

Publication number Publication date
CN102819497A (zh) 2012-12-12

Similar Documents

Publication Publication Date Title
CN102819497B (zh) 一种内存分配方法、装置及***
US7930515B2 (en) Virtual memory management
US20120137055A1 (en) Hybrid memory system and method managing the same
US9507731B1 (en) Virtualized cache memory
CN104346294A (zh) 基于多级缓存的数据读/写方法、装置和计算机***
KR101650424B1 (ko) 기점 가상 머신으로부터 목적지 가상 머신으로의 동작 전송
US9069477B1 (en) Reuse of dynamically allocated memory
CN104216837A (zh) 一种内存***、内存访问请求的处理方法和计算机***
CN105095116A (zh) 缓存替换的方法、缓存控制器和处理器
CN105677580A (zh) 访问缓存的方法和装置
EP2437462B1 (en) Data access processing method and device
CN102667714B (zh) 支持访问由操作***环境外的资源提供的功能的方法和***
US8799611B2 (en) Managing allocation of memory pages
CN111930643B (zh) 一种数据处理方法及相关设备
KR101893966B1 (ko) 메모리 관리 방법 및 장치, 및 메모리 컨트롤러
US8583890B2 (en) Disposition instructions for extended access commands
CN105988875B (zh) 一种运行进程的方法及装置
WO2024099448A1 (zh) 内存释放、内存恢复方法、装置、计算机设备及存储介质
US20130346714A1 (en) Hardware-Based Accelerator For Managing Copy-On-Write
US20130124799A1 (en) Self-disabling working set cache
CN101847096A (zh) 包含栈变量函数的优化方法
US8028118B2 (en) Using an index value located on a page table to index page attributes
CN102959548A (zh) 数据存储方法、查找方法及装置
CN109062823A (zh) 使用大页内存提升基于申威架构的设备性能的方法及装置
CN115617542A (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150930

Termination date: 20160531