CN105095094B - 内存管理方法和设备 - Google Patents
内存管理方法和设备 Download PDFInfo
- Publication number
- CN105095094B CN105095094B CN201410189589.4A CN201410189589A CN105095094B CN 105095094 B CN105095094 B CN 105095094B CN 201410189589 A CN201410189589 A CN 201410189589A CN 105095094 B CN105095094 B CN 105095094B
- Authority
- CN
- China
- Prior art keywords
- page
- memory
- virtual address
- replaced
- memory manager
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0664—Virtualisation aspects at device level, e.g. emulation of a storage device or system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种内存管理方法和设备,包括:内存管理器接收内存访问请求,所述内存访问请求携带虚地址;若所述内存管理器在页表缓存TLB和内存中没有查找到所述虚地址对应的页表项,则判断所述虚地址的缺页类型;若所述虚地址的缺页类型为空白页缺页,则所述内存管理器为所述虚地址分配对应的页面,所述空白页缺页是指所述虚地址未被分配对应的页面;所述内存管理器将所述虚地址对应的页表项更新到所述内存和所述TLB中。内存管理器通过判断虚地址的缺页类型,在空白页缺页时并不产生缺页中断,而是为该虚地址分配对应的页面,因此,本实施例的方法能够降低缺页中断发生的次数,从而提高了内存管理效率。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种内存管理方法和设备。
背景技术
在现代计算机***中,内存管理任务由操作***和内存管理单元(MemoryManagement Unit,简称MMU)、页表缓存(Translation Lookaside Buffer,简称TLB)共同实现。
现有的内存管理流程中,操作***负责绝大部分的内存管理任务,而操作最频繁的虚实地址映射和查页面的任务由TLB和MMU等硬件来实现。这种内存管理方式有两个固有的瓶颈:(1)TLB与MMU处在处理器访问cache的关键路径上,处理器每次访问cache必须先访问TLB,一旦TLB miss增多,MMU会频繁的查页面,很容易造成***瓶颈。(2)缺页中断处理与绑定,一旦MMU查页面失败,将触发缺页中断,处理器将花大量时间处理缺页中断。linux***查页面的平均时间是35.8个处理周期,linux***执行缺页中断的平均时间是2687个处理周期。如果能够避免或降低上述两种瓶颈的发生次数,将会对整个计算机***的内存管理效率有很大的提升。
现有技术中,提出了一种有效的内存管理技术:全虚cache(Virtual indexedVirtual Tagged)技术。全虚cache的主要思想是将TLB和MMU等硬件从访问cache的关键路径中移除,程序直接采用虚地址索引cache,只有cache miss后才由TLB进行虚实地址翻译,采用实地址访问cache。该方法能够缩短处理器访问cache的关键路径,同时,由于TLB不在访问cache的关键路径上,TLB可以做得很大,TLB的命中率增高,从而有效地降低了TLBmiss的次数。因此,全虚cache可以有效地缓解上述的第一个固有瓶颈。
但是,其缺页中断的处理方式仍然和处理器绑定,无论是由MMU硬件还是操作***执行查页面,只要查页面失败,就会产生缺页中断,处理器将大量时间浪费在处理缺页中断,使得内存管理效率低。
发明内容
本发明实施例提供一种内存管理方法和设备,能够提高内存管理效率。
本发明第一方面提供一种内存管理方法,包括:
内存管理器接收内存访问请求,所述内存访问请求携带虚地址,所述虚地址为操作***在调用进程时为所述进程分配的;
若所述内存管理器在页表缓存TLB和内存中没有查找到所述虚地址对应的页表项,则所述内存管理器判断所述虚地址的缺页类型;
若所述虚地址的缺页类型为空白页缺页,则所述内存管理器为所述虚地址分配对应的页面,所述空白页缺页是指所述虚地址未被分配对应的页面;
所述内存管理器将所述虚地址对应的页表项更新到所述内存和所述TLB中,所述页表项包括所述虚地址和所述页面的实地址的映射关系。
结合本发明第一方面,在本发明第一方面的第一种可能的实现方式中,所述内存访问请求还携带所述进程的进程号,所述内存管理器根据所述进程号在所述内存中查找所述进程对应的页面,并根据所述虚地址在所述进程对应的页面中查找所述虚地址对应的页表项。
结合本发明第一方面以及第一方面的第一种可能的实现方式,在本发明第一方面的第二种可能的实现方式中,所述内存管理器为所述虚地址分配对应的页面,包括:
如果所述内存中有空白页面,所述内存管理器将所述空白页面作为所述虚地址对应的页面;
如果所述内存中没有空白页面,所述内存管理器从已分配的页面中选择一个待替换页面,将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址,所述修改后的待替换页面为所述虚地址对应的页面。
结合本发明第一方面的第二种可能的实现方式,在本发明第一方面的第三种可能的实现方式中,
所述方法还包括:所述内存管理器判断所述待替换页面内是否有脏数据;
如果所述待替换页面内没有脏数据,所述内存管理器将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址;
如果所述待替换页面内有脏数据,所述内存管理器将所述待替换页面的地址信息发送给所述操作***,以使所述操作***根据所述待替换页面的地址信息将所述待替换页面的数据从所述内存中替换至空闲位置,在所述操作***将所述待替换页面的数据从所述内存中替换至所述空闲位置之后,所述内存管理器将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。
结合本发明第一方面的第二种可能的实现方式,在本发明第一方面的第四种可能的实现方式中,
所述方法还包括:所述内存管理器判断所述待替换页面内是否有脏数据;
如果所述待替换页面内没有脏数据,所述内存管理器将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址;
如果所述待替换页面内有脏数据,所述内存管理器根据所述待替换页面的地址信息将所述待替换页面的数据从所述内存中替换至空闲位置,其中,所述内存管理器和所述空闲位置的访问器位于同一个设备中,所述空闲位置的访问器用于在所述内存管理器的控制下访问所述空闲位置;
在所述内存管理器将所述待替换页面的数据从所述内存中替换至所述空闲位置之后,所述内存管理器将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。
结合本发明第一方面,在本发明第一方面的第五种可能的实现方式中,所述方法还包括:
如果所述虚地址的缺页类型为已有数据缺页,则所述内存管理器通知所述操作***发生缺页中断,所述已有数据缺页是指所述虚地址已被分配对应的页面;
所述内存管理器为所述虚地址分配对应的页面,更新所述内存和所述TLB中所述虚地址对应的页表项,所述页表项包括所述虚地址和所述页面的实地址的映射关系。
结合本发明第一方面以及第一方面的第一种至第五种可能的实现方式,在本发明第一方面的第六种可能的实现方式中,若执行所述进程的处理器核发生了变化,所述方法还包括:
所述内存管理器接收所述操作***发送的所述变化后的处理器核的信息。
结合本发明第一方面以及第一方面的第一种至第六种可能的实现方式,在本发明第一方面的第七种可能的实现方式中,当所述操作***结束所述进程时,所述方法还包括:
所述内存管理器接收所述操作***发送的内存释放指令,并根据所述内存释放指令释放所述进程占用的内存。
结合本发明第一方面以及第一方面的第一种至第七种可能的实现方式,在本发明第一方面的第八种可能的实现方式中,所述内存管理器集成在内存控制器中,或者,集成在基于消息式内存***的缓冲调度器中。
本发明第二方面提供一种内存管理方法,所述方法包括:
操作***接收内存管理器发送的待替换页面的地址信息,根据所述待替换页面的地址信息将所述待替换页面的数据从内存中替换至空闲位置,所述待替换页面的地址信息是内存管理器在为内存访问请求携带的虚地址选择的所述待替换页面内有脏数据时发送的;
在所述操作***将所述待替换页面的数据从所述内存中替换至所述空闲位置后,所述操作***通知所述内存管理器所述待替换页面可以使用,以使所述内存管理器将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。
结合本发明第二方面,在本发明第二方面的第一种可能的实现方式中,当发生缺页中断时,所述方法还包括:
所述操作***接收所述内存管理器发送的缺页中断通知,根据所述缺页中断通知保护现场,其中,所述缺页中断通知是所述内存管理器确定所述虚地址的缺页类型为已有数据缺页时发送的。
本发明第三方面提供一种内存管理器,包括:
接收模块,用于接收内存访问请求,所述内存访问请求携带虚地址,所述虚地址为操作***在调用进程时为所述进程分配的;
查找模块,用于在页表缓存TLB和内存中查找所述虚地址对应的页表项;
判断模块,用于若所述查找模块在所述TLB和所述内存中没有查找到所述虚地址对应的页表项,则判断所述虚地址的缺页类型;
页面分配模块,用于若所述虚地址的缺页类型为空白页缺页,则为所述虚地址分配对应的页面,所述空白页缺页是指所述虚地址未被分配对应的页面;
更新模块,用于在所述页面分配模块为所述虚地址分配对应的页面后,将所述虚地址对应的页表项更新到所述内存和所述TLB中,所述页表项包括所述虚地址和所述页面的实地址的映射关系。
结合本发明第三方面,在本发明第三方面的第一种可能的实现方式中,所述内存访问请求还携带所述进程的进程号,所述查找模块用于:根据所述进程号在所述内存中查找所述进程对应的页面,并根据所述虚地址在所述进程对应的页面中查找所述虚地址对应的页表项。
结合本发明第三方面以及第三方面的第一种可能的实现方式,在本发明第三方面的第二种可能的实现方式中,所述页面分配模块具体用于:
如果所述内存中有空白页面,将所述空白页面作为所述虚地址对应的页面;
如果所述内存中没有空白页面,从已分配的页面中选择一个待替换页面,将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址,所述修改后的待替换页面为所述虚地址对应的页面。
结合本发明第三方面的第二种可能的实现方式,在本发明第三方面的第三种可能的实现方式中,所述页面分配模块用于:
判断所述待替换页面内是否有脏数据;
如果所述待替换页面内没有脏数据,则将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址;
如果所述待替换页面内有脏数据,则将所述待替换页面的地址信息发送给所述操作***,以使所述操作***根据所述待替换页面的地址信息将所述待替换页面的数据从所述内存中替换至空闲位置,在所述操作***将所述待替换页面的数据从所述内存中替换至所述空闲位置之后,将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。
结合本发明第三方面的第二种可能的实现方式,在本发明第三方面的第四种可能的实现方式中,所述页面分配模块用于:
判断所述待替换页面内是否有脏数据;
如果所述待替换页面内没有脏数据,则将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址;
如果所述待替换页面内有脏数据,则根据所述待替换页面的地址信息将所述待替换页面的数据从所述内存中替换至空闲位置,其中,所述内存管理器和所述空闲位置的访问器位于同一个设备中,所述空闲位置的访问器用于在所述内存管理器的控制下访问所述空闲位置;
在将所述待替换页面的数据从所述内存中替换至所述空闲位置之后,将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。
结合本发明第三方面以及第三方面的第一种至第四种可能的实现方式,在本发明第三方面的第五种可能的实现方式中,若执行所述进程的处理器核发生了变化,所述接收模块还用于:
接收所述操作***发送的所述变化后的处理器核的信息。
结合本发明第三方面以及第三方面的第一种至第五种可能的实现方式,在本发明第三方面的第六种可能的实现方式中,当所述操作***结束所述进程时,所述接收模块还用于:
接收所述操作***发送的内存释放指令;
所述内存管理器还包括:
内存释放模块,用于根据所述内存释放指令释放所述进程占用的内存。
结合本发明第三方面以及第三方面的第一种至第六种可能的实现方式,在本发明第三方面的第七种可能的实现方式中,所述内存管理器集成在内存控制器中,或者,集成在基于消息式内存***的缓冲调度器中。
本发明第四方面提供一种实现内存管理的装置,包括:
处理器、存储器和***总线,所述处理器和所述存储器之间通过所述***总线连接并完成相互间的通信;
所述存储器,用于存储计算机执行指令;
所述处理器,用于运行所述计算机执行指令,执行如本发明第一方面以及第一方面第一种至第八种可能实现方式所提供的方法。
本发明第五方面提供一种计算机,包括:处理器、存储器和***总线,所述处理器和所述存储器之间通过所述***总线连接并完成相互间的通信;
所述存储器,用于存储计算机执行指令;
所述处理器,用于运行所述计算机执行指令,执行如本发明第二方面以及第二方面的第一种可能的实现方式所提供的方法。
本发明实施例提供的内存管理方法和设备,当内存管理器在TLB和内存中没有查找到内存访问请求携带的虚地址时,通过内存管理器判断所述虚地址的缺页类型;若所述虚地址的缺页类型为空白页缺页,则所述内存管理器为所述虚地址分配对应的页面,所述空白页缺页是指所述虚地址未被分配对应的页面;所述内存管理器将所述虚地址对应的页表项更新到所述内存和所述TLB中。内存管理器通过判断虚地址的缺页类型,在空白页缺页时并不产生缺页中断,而是为该虚地址分配对应的页面,因此,本实施例的方法能够降低缺页中断发生的次数,从而提高了内存管理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明内存管理方法实施例一的流程图;
图2为本发明内存管理方法实施例二的流程图;
图3为本发明内存管理方法实施例三的流程图;
图4为本发明内存管理方法实施例四的流程图;
图5为本发明实施例内存控制器的结构示意图;
图6为操作***创建进程时的创建流程示意图;
图7为操作***结束进程时的流程示意图;
图8是一种众核处理器***的结构示意图;
图9为一种基于消息式的内存***的结构示意图;
图10为一种NUMA***的结构示意图;
图11为本发明实施例提供的一种内存管理器的结构示意图;
图12为本发明实施例提供的另一种内存管理器的结构示意图;
图13是本发明实施例提供的一种实现内存管理的装置结构示意图;
图14为本发明实施例提供的一种计算机的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,操作***负责绝大部分的内存管理任务,在操作***进行内存管理时,如果发生缺页中断,操作***进入中断服务程序,处理器停止对当前程序的运行,转向缺页中断处理流程,处理器执行缺页中断的平均时间为2687个处理周期,降低了内存管理的效率。而现有技术的这种弊端,主要是将操作***(软件)与处理器(硬件)绑定造成的。
针对现有技术的内存管理方式的弊端,本发明实施例提出一种内存管理架构,该内存管理架构对内存管理任务重新进行划分,将内存的虚地址空间和实地址空间分开管理,实地址空间由内存管理器负责管理,虚地址空间由操作***管理,虚地址也称为虚拟地址,实地址也称为物理地址。内存管理器主要管理以下内容:地址映射(虚地址和实地址的映射)、页面维护、页面分配、空闲内存管理、页面替换、碎片管理、越界检查和保护检查等。操作***主要管理:虚地址的分配和释放。
图1为本发明内存管理方法实施例一的流程图,本实施例的方法由内存管理器执行,该内存管理器可以集成在离处理器较近的硬件上,例如将该内存管理器集成在内存控制器中,或者,将该内存管理器集成在基于消息式内存***的缓冲调度器中,本实施例并不对内存管理器的实现形式进行限制。如图1所示,本实施例的方法可以包括以下步骤:
步骤101、内存管理器接收内存访问请求,该内存访问请求携带虚地址,该虚地址为操作***在调用进程时为该进程分配的。
该内存访问请求是处理器发送的,处理器主要指中央处理单元(CentralProcessing Unit,简称CPU)内核部分,可以是一个CPU内核,也可以是多个CPU内核的集合。
可选地,该内存访问请求还携带进程的进程号,内存管理器根据进程号在内存中查找进程对应的页面,并根据虚地址在进程对应的页面中查找该虚地址对应的页表项。
步骤102、内存管理器在TLB和内存中没有查找到该虚地址对应的页表项,则内存管理器判断该虚地址的缺页类型。
内存管理器在接收到内存访问请求后,从本地的页表缓存(Translation Look-aside Buffer,简称TLB)中查找该虚地址对应的页表项,若TLB中没有该虚地址对应的页表项,则内存管理器从内存(Memory)中查找该虚地址对应的页表项。如果内存管理器为该虚地址分配过对应的页表项,那么内存管理器能够在内存中查找到该虚地址对应的页表项,如果内存管理器没有为该虚地址分配过对应的页表项,那么内存管理器在内存中找不到该虚地址对应的页表项。通常情况下,内存管理器先从TLB中查找该虚地址,如果TLB中没有该虚地址,内存管理器才从内存中查找该虚地址对应的页表项。
现有技术中,由CPU硬件在TLB中查找虚地址,若在TLB中未找到该虚地址,则由内存管理单元(Memory Management Unit,简称MMU)查找页表,若MMU在内存中找不到该虚地址对应的页表项,MMU就会产生缺页中断。现有技术中缺页中断产生的主要原因是操作***没有分配好空白页面,当虚地址第一次被访问时,由于操作***还没有为该虚地址分配对应的页面,因此,MMU在内存中找不到该虚地址对应的页面。本实施例的方法,当内存管理器在内存和TLB中找不到该虚地址对应的页表项时,内存管理器并不产生缺页中断,而是判断该虚地址的缺页类型。
内存管理器可以根据页面分配信息判断该虚地址的缺页类型,缺页类型包括空白页缺页和已有数据缺页。其中,空白页缺页是指该虚地址未被分配对应的页面,也就是说该虚地址第一次被访问,还未被分配对应的页面。已有数据缺页是指该虚地址已被分配对应的页面,但是该虚地址对应的页面长时间未被使用,因此,该虚地址对应的页面的数据被替换到了空闲位置。内存管理器维护页面分配信息,该页面分配信息中记录有已分配页面的虚地址的信息,如果页面分配信息中记录该虚地址已被分配过页面,则内存管理器确定缺页类型为已有数据缺页,如果页面分配信息中没有该虚地址的分配记录,则内存管理器确定缺页类型为空白页缺页。
可选地,如果内存管理器在TLB和内存中没有查找到该虚地址对应的页表项,内存管理器还要检查该虚地址是否合法。内存管理器检查该虚地址是否合法具体为:首先,内存管理器检查该虚地址是否越界,内存管理器通过判断该虚地址是否在预先保存的该进程的虚地址范围内,如果该虚地址不在预先保存的虚地址范围内,则说明该虚地址越界,该虚地址为非法虚地址。内存管理器上预先保存的该进程的虚地址范围是由操作***分配并发送的,操作***负责虚地址的分配和管理。该虚地址范围可能包括动态虚地址范围和静态虚地址范围,静态虚地址范围是操作***在创建该进程时为该进程分配的。如果静态虚地址范围内的虚地址不够该进程使用,那么操作***会为该进程另外分配动态虚地址范围,如果静态虚地址范围内的虚地址足够该进程使用,那么操作***不会为该进程分配动态虚地址范围。
其次,内存管理器除了检查该虚地址是否越界外,还需要检查该虚地址对应的页面是否为只读页面。内存访问请求分为两种:读访问请求和写访问请求。某一页面的权限可能被设置成了只读页面,若页面的权限被设置成了只读页面,则只能对该页面进行读访问,不能进行写访问。比如当内存管理器确定该内存访问请求为写访问请求,但是该虚地址对应的页面为只读页面,则内存管理器确定该虚地址非法。若该虚地址同时满足上述两个条件,该虚地址合法,在该虚地址合法的前提下,内存管理器进一步判断该虚地址的缺页类型。若该虚地址不同时满足上述两个条件,该虚地址非法,内存管理器向操作***反馈该虚地址非法。
步骤103、若虚地址的缺页类型为空白页缺页,则内存管理器为该虚地址分配对应的页面,空白页缺页是指该虚地址未被分配对应的页面。
内存管理器为该虚地址分配对应的页面,具体为:内存管理器确定内存中是否有空白页面,如果内存中有空白页面,内存管理器将该空白页面作为该虚地址对应的页面。如果内存中没有空白页面,内存管理器从已分配的页面中选择一个待替换页面,将待替换页面的虚地址修改为内存访问请求携带的虚地址,修改后的待替换页面为虚地址对应的页面。内存管理器确定内存中是否有空白页面具体为:内存管理器查找空闲列表,该空闲列表中记录有内存中所有未被占用的空白页面,若空闲列表中有空白页面,则内存管理器确定内存中有空白页面,若空闲列表中没有空白页面,则内存管理器确定内存中没有空白页面。
若内存中没有空白页面,说明物理内存已经耗尽,内存管理器需要从已分配的页面中选择一个待替换页面,将该待替换页面的数据从内存中替换至空闲位置,然后将该待替换页面分配给该虚地址使用。内存管理器从已分配的页面中选择该待替换页面时,可以按照现有的页面替换算法选择该待替换页面,这里不做具体介绍,通常情况下内存管理器会选择一个长时间未使用的页面作为待替换页面。
内存管理器从已分配的页面中选择待替换页面之后,可选地,内存管理器还执行以下操作:内存管理器判断待替换页面内是否有脏数据;如果该待替换页面内没有脏数据,则内存管理器将该待替换页面的虚地址修改为内存访问请求携带的虚地址。待替换页面内没有脏数据,即该待替换页面干净(clean),表明该待替换页面内的数据没有被修改过。如果待替换页面内有脏数据,则内存管理器将该待替换页面的地址信息发送给操作***,以使操作***根据该待替换页面的地址信息将该待替换页面的数据从内存中替换至空闲位置。待替换页面内有脏数据,即该待替换页面脏(dirty),表明该待替换页面内的数据被修改过。该待替换页面的地址信息可以为该待替换页面的虚地址或者该待替换页面的实地址,操作***先搜索到空闲位置后,启动存储器直接访问(Direct Memory Access,简称DMA),通过DMA访问器将该待替换页面的数据从内存中替换至空闲位置。
在操作***将该待替换页面的数据从内存中替换至空闲位置之后,操作***通知内存管理器该待替换页面可以使用,内存管理器将该待替换页面的虚地址修改为内存访问请求携带的虚地址。内存管理器修改待替换页面的虚地址为内存访问请求携带的虚地址,即内存管理器修改了该待替换页面的虚地址和实地址的映射关系,修改后的待替换页面为该内存访问请求携带的虚地址对应的页面。
空闲位置用于暂时存放内存中不用的数据,当物理内存耗尽,可以将内存中长时间不用的数据替换至空闲位置,当需要调用空闲位置中的数据时,可以将数据从空闲位置拷贝到内存中使用。本实施例中的空闲位置可以为SWAP分区(也称交换分区),SWAP分区通常指位于磁盘或FLASH上的一块虚拟内存,本发明实施例中,SWAP分区也可以位于非易失性存储器(Non-Volatile Memory,简称NVM)上。非易失性存储器容量大,且读延迟比磁盘和FLASH要小得多,非常适合做SWAP分区的存储介质。常见的非易失性存储器有:铁电存储器、磁性随机存储器和相变存储器(Phase Change Memory,简称PCM)。操作***从磁盘或FLASH上读写数据的速度,比从NVM上读写数据的速度慢的多,因此,当SWAP分区设置在NVM上时,能够大大缩短操作***将该待替换页面的数据从内存中替换至空闲位置的时间,从而缩短了页面分配的时间,提高内存访问的效率。
上述方式中,当待替换页面内有脏数据时,需要操作***和内存管理器的共同配合为该虚地址分配对应的页面。另一种方式中,不需要操作***的参与,由内存管理器单独为该虚地址分配对应的页面。具体地:内存管理器从已分配的页面中选择待替换页面之后,内存管理器判断待替换页面内是否有脏数据;如果待替换页面内没有脏数据,内存管理器将待替换页面的虚地址修改为内存访问请求携带的虚地址;如果待替换页面内有脏数据,内存管理器根据待替换页面的地址信息将待替换页面的数据从内存中替换至空闲位置,其中,内存管理器和空闲位置的访问器(accessor)均位于同一个设备中,空闲位置的访问器用于在内存管理器的控制下访问该空闲位置;在内存管理器将待替换页面的数据从内存中替换至空闲位置之后,内存管理器将待替换页面的虚地址修改为内存访问请求携带的虚地址。
上述两种方式中,后一种方式和前一种方式的主要区别点在于:前一种方式中,当待替换页面内有脏数据时,内存管理器将待替换页面的地址信息发送给操作***,操作***根据待替换页面的地址信息将待替换页面的数据从内存中替换至空闲位置;第二种方式中,当待替换页面内有脏数据时,内存管理器自己根据待替换页面的地址信息将待替换页面的数据从内存中替换至空闲位置。
第二种方式的实施前提是,内存管理器和空闲位置的访问器均位于同一个设备中,空闲位置的访问器用于在内存管理器的控制下访问该空闲位置。当空闲位置为磁盘时,该空闲位置的访问器为磁盘控制器,当空闲位置为NVM时,该空闲位置的访问器为NVM控制器。当空闲位置为NVM时,内存管理器和NVM均可以集成在内存控制器或基于消息式内存***的缓冲调度器中。
步骤104、内存管理器将该虚地址对应的页表项更新到内存和TLB中,页表项包括虚地址和页面的实地址的映射关系。
内存管理器为该虚地址分配对应的页面后,更新TLB和内存的页表,具体地:内存管理器将该虚地址对应的页表项增加到内存的页表中,并在TLB中增加该虚地址对应的页表项。在将该虚地址对应的页表项更新到内存和TLB之后,内存管理器就能够从TLB和内存中找到该虚地址对应的页表项,然后,根据该虚地址对应的页表项找到该虚地址对应的实地址,使用该虚地址对应的实地址访问内存。
本实施例,通过内存管理器管理内存,当内存管理器在TLB和内存中找不到虚地址对应的页表项时,内存管理器判断该虚地址的缺页类型,如果该虚地址的缺页类型为空白页缺页,则内存管理器为该虚地址分配对应的页面,将该虚地址对应的页表项更新到内存和TLB中。现有技术中,缺页中断大部分是没有为虚地址分配对应的页面引起的,本实施例的方法,内存管理器通过判断虚地址的缺页类型,在空白页缺页时并不产生缺页中断,而是为该虚地址分配对应的页面,因此,本实施例的方法能够大大降低缺页中断发生的次数,从而提高了内存管理效率。
在上述实施例一的基础上,当内存管理器判断出虚地址的缺页类型为已有数据缺页时,内存管理器通知操作***发生缺页中断,并为虚地址分配对应的页面,更新内存和TLB中该虚地址对应的页表项。本发明实施例二中主要介绍发生缺页中断后的处理流程,本实施例的方法和现有技术相比能够减少缺页中断处理的时间。图2为本发明内存管理方法实施例二的流程图,本实施例的前提是内存管理器确定发生缺页中断,缺页中断的判断方式详见实施例一的描述,这里不再赘述。如图2所示,本实施例的方法可以包括以下步骤:
步骤201、内存管理器向操作***发送缺页中断通知,该缺页中断通知携带虚地址。
当内存管理器确定虚地址的缺页类型为已有数据缺页时向操作***发送缺页中断通知。本发明各实施例中当发生缺页中断时,说明该虚地址对应的页面的数据已被从内存中替换到了空闲位置。
步骤202、操作***接收内存管理器发送的缺页中断通知,根据缺页中断通知保护现场。
步骤203、操作***根据该虚地址搜索空闲位置,查找该虚地址对应的页面的数据在空闲位置中的地址。
由于该虚地址对应的页面的数据被从内存中替换到了空闲位置,所以,在访问该虚地址时,需要从空闲位置找到该虚地址对应的页面的数据,并替换至内存才能够继续使用。
步骤204、如果内存中有空白页面,内存管理器将空白页面作为该虚地址对应的页面。
步骤205、内存管理器将该虚地址对应的页表项更新到内存和TLB中。
步骤206、内存管理器通知操作***该虚地址对应的页面可以使用。
现有技术中,在发生缺页中断后,对该虚地址分配对应的页面的操作也由操作***执行,而本实施例中,操作***在执行步骤202-203时,内存管理器可以并行执行步骤204-205,由于操作***和内存管理器可以并行执行,从而减少缺页中断处理的时间。
步骤207、操作***根据该虚地址对应的页面的数据在空闲位置中的地址将该虚地址对应的页面的数据从空闲位置拷贝到内存中。
操作***在接收到内存管理器发送的页面可以使用的通知后,根据该虚地址对应的页面的数据在空闲位置中的地址将该虚地址对应的页面的数据从空闲位置拷贝到内存中,然后,操作***可以调度该进程。
本实施例的方法,当内存管理器确定虚地址的缺页类型为已有数据缺页时产生缺页中断,通知操作***发生缺页中断,操作***和内存管理器共同配合执行缺页中断的处理流程,由于操作***和内存管理器在执行缺页中断流程时可以并行执行,从而减少缺页中断处理的时间,进一步地提高了内存管理的效率。
实施例二中,主要介绍了内存中有空白页面为该虚地址分配时的中断处理流程,即物理内存没有耗尽的情况下的缺页中断处理流程,本发明实施例三中主要介绍物理内存耗尽时的缺页中断处理流程。图3为本发明内存管理方法实施例三的流程图,如图3所示,本实施例的方法可以包括以下步骤:
步骤301、内存管理器向操作***发送缺页中断通知,该缺页中断通知携带虚地址。
当内存管理器确定虚地址的缺页类型为已有数据缺页时向操作***发送缺页中断通知。
步骤302、操作***接收内存管理器发送的缺页中断通知,根据缺页中断通知保护现场。
步骤303、操作***根据该虚地址搜索空闲位置,查找该虚地址对应的页面的数据在空闲位置中的地址。
步骤304、如果内存中没有空白页面,内存管理器从已分配的页面中选择一个待替换页面。
步骤305、内存管理器判断该待替换页面内是否有脏数据。
如果该待替换页面内有脏数据,则执行步骤306,如果该待替换页面内没有脏数据,则执行步骤308-311。
步骤306、内存管理器将该待替换页面的地址信息发送给操作***。
本实施例中,操作***在执行步骤302-303的同时,内存管理器可以并行执行步骤304-305。
步骤307、操作***接收内存管理器发送的该待替换页面的地址信息,根据该待替换页面的地址信息将该待替换页面的数据从内存中替换至空闲位置。
步骤308、内存管理器将该待替换页面的虚地址修改为内存访问请求携带的虚地址。
步骤309、内存管理器将该虚地址对应的页表项更新至TLB和内存。
步骤310、内存管理器通知操作***该虚地址对应的页面可以使用。
步骤311、操作***根据该虚地址对应的页面的数据在空闲位置中的地址将该虚地址对应的页面的数据从空闲位置替换至内存。
本发明实施例四提供一种内存管理方法,本实施例和实施例三的区别在于:当待替换页面内有脏数据时,由内存管理器根据该待替换页面的地址信息将该待替换页面的数据从内存中替换至空闲位置。本实施例以内存管理器和NVM集成在内存控制器内部为例进行说明。本实施例的前提是内存管理器确定发生缺页中断,缺页中断的判断方式详见实施例一的描述,这里不再赘述。
图5为本发明实施例内存控制器的结构示意图,如图5所示,内存控制器中集成有内存管理器、NVM访问器和动态随机存取存储器(Dynamic Random Access memory,简称DRAM)访问器,NVM访问器和DRAM访问器均能够和内存管理器通信,NVM访问器在内存控制器的控制下访问NVM,DRAM访问器在内存控制器的控制下访问DRAM。图4为本发明内存管理方法实施例四的流程图,请参照图4和图5所示,本实施例提供的方法可以包括以下步骤:
步骤401、内存管理器向操作***发送缺页中断通知。
当内存管理器确定发生已有数据缺页时,内存管理器向操作***发送缺页中断通知,以使操作***根据缺页中断通知保护现场。
步骤402、若内存中没有空白页面,内存管理器从已分配的页面中选择一个待替换页面。
步骤403、内存管理器判断该待替换页面内是否有脏数据。
如果该待替换页面内没有脏数据,执行步骤404,如果该待替换页面内有脏数据,执行步骤405。
步骤404、内存管理器将该待替换页面的虚地址修改为内存访问请求中携带的虚地址。
执行完步骤404后执行步骤407,这里修改后的待替换页面为该虚地址对应的页面。
步骤405、内存管理器根据该待替换页面的地址信息将该待替换页面的数据从DRAM替换至NVM,并将该待替换页面的虚地址修改为内存访问请求中携带的虚地址。
修改后的待替换页面为该虚地址对应的页面。
具体地,内存管理器搜索NVM查找NVM的空闲区域,在找到NVM的空闲区域后,内存管理器通知DRAM控制器根据待替换页面的地址信息在DRAM中搜索待替换页面的数据,DRAM控制器找到待替换页面的数据后将待替换页面的数据从DRAM中取出,并将替换页面的数据发送给NVM控制器,NVM控制器将待替换页面的数据写入NVM的空闲区域。
步骤406、内存管理器根据该虚地址在NVM中查找该虚地址对应的页面的数据,并将该虚地址对应的页面的数据从NVM拷贝到DRAM。
内存管理器从非易失性存储器上读数据的读延迟比从磁盘和FLASH上读数据的读延迟要小的多,从而能够减少中断处理的时间。
步骤407、内存管理器将虚地址对应的页表项更新到内存和TLB中。
在内存管理器为该虚地址分配好对应的页面后,内存管理器向操作***反馈中断处理结束,操作***进行现场恢复,将发生缺页中断以前的状态弹出栈,进程进入就绪态,随时可以***作***调度执行。
本实施例的方法,在发生缺页中断时,操作***只进行了现场保护,为虚地址分配对应的页面的操作均有内存管理器完成,减轻了操作***的负荷。操作***在中断处理过程中,处理器仍然能够执行其他的操作,使得处理器的使用率提高。
需要说明的是,在上述各实施例中,内存管理器可以集成在内存控制器,或者,集成在基于消息式内存***的缓冲调度器中。
在上述各实施例中,操作***要和内存管理器之间互相通信,需要在内存管理器和处理器之间增加两条通路,一条是请求通路,用于操作***向内存管理器发送内存访问请求,该请求通路的地址总线格式为进程号加上虚地址。另一条是交互通路,用于操作***和内存管理器之间直接进行信息传递。操作***通过该交互通路向内存管理器发送的信息包括:进程的进程号和进程的虚地址范围,操作***还可以向内存管理器发送进程使用的处理器核的信息、进程的属性、物理内存分配策略等。内存管理器通过该交互通路向操作***反馈的信息包括:缺页中断、越界中断、保护中断、页面分配和页面替换信息等,以下将具体说明操作***和内存控制器之间的信息交互过程。
图6为操作***创建进程时的创建流程示意图,如图6所示,当用户启动程序时,操作***为该应用程序创建进程,并为该进程分配虚地址范围。在操作***创建进程成功后,操作***向内存管理器发送进程信息,该进程信息包括该进程的进程号和该进程的虚地址范围,内存管理器接收该进程信息后,为该进程建立相应的数据结构,并保存该进程号和该虚地址范围。操作***在创建进程时发送的虚地址范围为静态虚地址范围,当该进程的虚地址范围不够用时,操作***还会动态的为该进程分配动态虚地址范围。该虚地址范围用于判断该进程在内存访问请求中携带的虚地址是否越界,该进程号用于内存管理器根据进程号在内存中查找进程对应的页面,详细描述可参照实施例一中的描述,这里不再赘述。
当***为多核***或众核***时,操作***还要向内存管理器发送该进程使用的处理器核的信息,例如处理器核的ID,以使内存管理器与操作***交互时,根据处理器核的ID将信息发送给该处理器核。若执行进程的处理器核发生了变化,操作***还向内存管理器发送变化后的处理器核的信息。
图7为操作***结束进程时的流程示意图,如图7所示,当用户结束程序时,调用Free函数,Free函数为内存释放函数,操作***接收到Free函数时向内存管理器发送内存释放指令,内存管理器接收到该内存释放指令后,解析该内存释放指令,然后,维护TLB、页表和空闲列表,并对进程的虚地址空间进行管理。维护TLB和页表具体是指:将TLB中和页表中该进程对应的虚地址范围删掉,即释放掉该进程占用的虚地址空间。维护空闲列表具体是指:内存管理器在将该进程占用的虚地址空闲释放后,将该虚地址空间对应的页面更新到空闲列表。
在结束进程时,操作***只需要向内存管理器发送内存释放指令,后续的内存管理操作均由内存管理器执行,在内存管理器执行后续的内存管理操作时,操作***可以并行的运行其他用户程序。而现有技术中,在结束进程时的所有内存管理操作均由操作***执行。本实施例的方法由于内存管理操作可以和用户程序并行运行,从而能够提高处理器的利用率。
以下将介绍本发明实施例提供的内存管理方法的几种典型的应用场景。
本发明实施例提供的内存管理方法可以应用到各种处理器的设计中,包括单核处理器、多核处理器和众核处理器,在多核处理器***和众核处理器***各处理器可以为同构处理器也可以为异构处理器。图8是一种众核处理器***的结构示意图,该众核处理器***包括:一个主核(Master Core)、多个从核(Slave Core)、内存控制器、***设备和内存。主核与多个从核通过总线互相连接,内存控制器内部集成了一个内存管理器,该内存管理器通过内存控制器端口物理层(Memory Controller Port Physical Layer,简称MC PHY)与内存连接。该内存管理器可以集中管理片上所有处理器核的实地址空间。主核可以通过图中①路径与内存管理器协同管理整个处理器核的内存空间,每个从核均可以通过图中②路径与内存管理器协同管理自己私有的内存空间。
另外,由于采用全虚cache技术,每个处理器核都不再需要TLB和MMU,处理器核的设计得到较大的简化。同时,实地址空间的内存管理任务都由内存管理器执行,减轻了每个处理器核上操作***的内存管理任务负荷,极大地简化众核处理器的***软件设计。
本发明实施例提供的内存管理方法也可以应用到基于消息式的内存***中。图9为一种基于消息式的内存***的结构示意图,如图9所示,消息式的内存控制器集成在了CPU内部,CPU通过消息通道将消息式的内存访问请求发送给缓冲调度器,该消息通道采用高速串行总线,缓冲调度器中的消息解析单元可以解析消息式的内存访问请求,缓冲调度器对大量消息式内存访问请求进行调度和缓冲,从而可以高效地使用内存通道。多个缓冲调度器之间通过消息通道进行级联,从而可以组成超大容量的内存***,每个缓冲调度器可以调用内存***的一部分内存,将每个缓冲调度器调用的部分内存***的称为内存子***。
要实现本发明各实施例的方法,可以在每个缓冲调度器中分别集成一个内存管理器,各个缓冲调度器可以独立的管理自己的内存子***,因此,每个缓冲调度器都可以根据自己的需求选择合适的内存管理方式,以保证整个内存***达到最高的使用效率。
本发明实施例提供的内存管理方法还可以应用于非一致内存访问(Non UniformMemory Access Architecture,简称NUMA)***中,图10为一种NUMA***的结构示意图,如图10所示,NUMA***由四个节点组成:节点0、节点1、节点2和节点3,各个节点通过NUMA互联模块连接,每个节点包括:CPU、内存控制器、内存、IO接口。各节点的内存控制器都能够通过本地接口访问自己的内存,也可以通过远端接口访问其他节点的内存。
要实现本发明各实施例的方法,可以在每个节点的内存控制器中分别集成一个内存管理器,每个节点的内存管理器负责本地的实地址空间管理,同时具有访问远端节点内存的能力。如果本地内存管理器需要访问远端的内存空间,本地内存管理器需要将内存访问请求通过远端接口发给远端节点的内存管理器,由远端节点的内存管理器进行页面分配等实际的管理任务。在NUMA***中,不同节点的内存管理器之间进行交互对操作***是透明的,这种方案能够减轻操作***的管理负担,提高NUMA***的内存管理效率。
图11为本发明实施例提供的一种内存管理器的结构示意图,所述内存管理器可以集成在内存控制器中,或者,集成在基于消息式内存***的缓冲调度器中。如图11所示,本实施例的内存管理器包括:接收模块51、查找模块52、判断模块53、页面分配模块54和更新模块55。
其中,接收模块51,用于接收内存访问请求,所述内存访问请求携带虚地址,所述虚地址为操作***在调用进程时为所述进程分配的;
查找模块52,用于根据所述内存访问请求中携带的虚地址在页表缓存TLB和内存中查找所述虚地址对应的页表项;
判断模块53,用于若所述查找模块52在所述TLB和所述内存中没有查找到所述虚地址对应的页表项,则判断所述虚地址的缺页类型;
页面分配模块54,用于若所述虚地址的缺页类型为空白页缺页,则为所述虚地址分配对应的页面,所述空白页缺页是指所述虚地址未被分配对应的页面;
更新模块55,用于在所述页面分配模块54为所述虚地址分配对应的页面后,将所述虚地址对应的页表项更新到所述内存和所述TLB中,所述页表项包括所述虚地址和所述页面的实地址的映射关系。
可选地,所述内存访问请求还携带所述进程的进程号,所述查找模块52用于:根据所述进程号在所述内存中查找所述进程对应的页面,并根据所述虚地址在所述进程对应的页面中查找所述虚地址对应的页表项。
页面分配模块54具体用于:如果所述内存中有空白页面,将所述空白页面作为所述虚地址对应的页面;如果所述内存中没有空白页面,从已分配的页面中选择一个待替换页面,将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址,所述修改后的待替换页面为所述虚地址对应的页面。
若所述内存中没有空白页面,内存管理器在选择待替换页面后,所述页面分配模块54用于:判断所述待替换页面内是否有脏数据;如果所述待替换页面内没有脏数据,则将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址;如果所述待替换页面内有脏数据,则将所述待替换页面的地址信息发送给所述操作***,以使所述操作***根据所述待替换页面的地址信息将所述待替换页面的数据从所述内存中替换至空闲位置,在所述操作***将所述待替换页面的数据从所述内存中替换至所述空闲位置之后,将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。
上述方式中,当待替换页面内有脏数据时,需要操作***和内存管理器的共同配合为该虚地址分配对应的页面。另一种方式中,不需要操作***的参与,由内存管理器单独为该虚地址分配对应的页面。具体地:页面分配模块还用于:判断所述待替换页面内是否有脏数据;如果所述待替换页面内没有脏数据,则将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址;如果所述待替换页面内有脏数据,则根据所述待替换页面的地址信息将所述待替换页面的数据从所述内存中替换至空闲位置,其中,所述内存管理器和所述空闲位置的访问器位于同一个设备中,所述空闲位置的访问器用于在所述内存管理器的控制下访问所述空闲位置;在将所述待替换页面的数据从所述内存中替换至所述空闲位置之后,将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。后一种方式中,将待替换页面的数据从从所述内存中替换至空闲位置的操作由内存管理器执行,不需要操作***的参与。
本实施例的内存管理器可用于执行图1至图4任一所示实施例的方法,具体实现方式和技术效果类似,这里不再赘述。
图12为本发明实施例提供的另一种内存管理器的结构示意图,如图12所示,本实施例的内存管理器在图11所示结构的基础上,进一步地,还包括发送模块56,用于若所述虚地址的缺页类型为已有数据缺页,则通知所述操作***发生缺页中断,所述已有数据缺页是指所述虚地址已被分配对应的页面;所述页面分配模块54还用于:为所述虚地址分配对应的页面;所述更新模块55还用于:更新所述内存和所述TLB中所述虚地址对应的页表项,所述页表项包括所述虚地址和所述页面的实地址的映射关系。
在判断模块53判断出虚地址的缺页类型为已有数据缺页后,内存管理器通知操作***发生缺页中断,操作***保护现场,进入缺页中断处理流程。在缺页中断后,内存管理器为所述虚地址分配对应的页面,页面分配流程与空白页缺页时的页面分配流程基本相同,不同点在于:在缺页中断时,内存管理器还需要从空闲位置中将该虚地址对应页面的数据取回到内存中,操作***才能调用该虚地址对应页面的数据。
当***为多核***或众核***时,若执行进程的处理器核发生了变化,操作***还向内存管理器发送变化后的处理器核的信息。接收模块51还用于:接收操作***发送的变化后的处理器核的信息。
当操作***结束进程时,接收模块51还用于:接收操作***发送的内存释放指令,该内存释放指令用于指示内存管理器释放内存,相应地,内存管理器还包括:内存释放模块57,用于根据所述内存释放指令释放所述进程占用的内存。
本实施例的装置,可以用于执行图1至图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图13是本发明实施例提供的一种实现内存管理的装置结构示意图,如图13所示,本实施例提供的实现内存管理的装置600包括:处理器61、存储器62和***总线63。所述处理器61和所述存储器62之间通过所述***总线63连接并完成相互间的通信;所述存储器62,用于存储计算机执行指令621;所述处理器61,用于运行所述计算机执行指令621,执行如图1至图4任一实施例所示的方法,其实现原理和技术效果类似,此处不再赘述。
图14为本发明实施例提供的一种计算机的结构示意图,如图14所示,本实施例提供的计算机700包括:处理器71、存储器72和***总线73,所述处理器71和所述存储器72之间通过所述***总线73连接并完成相互间的通信;所述存储器72,用于存储计算机执行指令721;所述处理器71,用于运行所述计算机执行指令721,执行如下所述的方法:
接收内存管理器发送的待替换页面的地址信息,根据所述待替换页面的地址信息将所述待替换页面的数据从内存中替换至空闲位置,所述待替换页面的地址信息是内存管理器在为内存访问请求携带的虚地址选择的所述待替换页面内有脏数据时发送的;在将所述待替换页面的数据从所述内存中替换至所述空闲位置后,通知所述内存管理器所述待替换页面可以使用,以使所述内存管理器将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。
当发生缺页中断时,处理器71还用于:接收所述内存管理器发送的缺页中断通知,根据所述缺页中断通知保护现场,其中,所述缺页中断通知是所述内存管理器确定所述虚地址的缺页类型为已有数据缺页时发送的。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (21)
1.一种内存管理方法,其特征在于,包括:
内存管理器接收运行操作***的处理器发送的内存访问请求,所述内存访问请求携带虚地址,所述虚地址为所述操作***在调用进程时为所述进程分配的;
若所述内存管理器在页表缓存TLB和内存中没有查找到所述虚地址对应的页表项,则所述内存管理器判断所述虚地址的缺页类型;
若所述虚地址的缺页类型为空白页缺页,则所述内存管理器为所述虚地址分配对应的页面,所述空白页缺页是指所述虚地址未被分配对应的页面;
所述内存管理器将所述虚地址对应的页表项更新到所述内存和所述TLB中,所述页表项包括所述虚地址和所述页面的实地址的映射关系。
2.根据权利要求1所述的方法,其特征在于,所述内存访问请求还携带所述进程的进程号,所述内存管理器根据所述进程号在所述内存中查找所述进程对应的页面,并根据所述虚地址在所述进程对应的页面中查找所述虚地址对应的页表项。
3.根据权利要求1或2所述的方法,其特征在于,所述内存管理器为所述虚地址分配对应的页面,包括:
如果所述内存中有空白页面,所述内存管理器将所述空白页面作为所述虚地址对应的页面;
如果所述内存中没有空白页面,所述内存管理器从已分配的页面中选择一个待替换页面,将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址,所述修改后的待替换页面为所述虚地址对应的页面。
4.根据权利要求3所述的方法,其特征在于,
所述方法还包括:所述内存管理器判断所述待替换页面内是否有脏数据;
如果所述待替换页面内没有脏数据,所述内存管理器将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址;
如果所述待替换页面内有脏数据,所述内存管理器将所述待替换页面的地址信息发送给所述操作***,以使所述操作***根据所述待替换页面的地址信息将所述待替换页面的数据从所述内存中替换至空闲位置,在所述操作***将所述待替换页面的数据从所述内存中替换至所述空闲位置之后,所述内存管理器将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。
5.根据权利要求3所述的方法,其特征在于,
所述方法还包括:所述内存管理器判断所述待替换页面内是否有脏数据;
如果所述待替换页面内没有脏数据,所述内存管理器将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址;
如果所述待替换页面内有脏数据,所述内存管理器根据所述待替换页面的地址信息将所述待替换页面的数据从所述内存中替换至空闲位置,其中,所述内存管理器和所述空闲位置的访问器位于同一个设备中,所述空闲位置的访问器用于在所述内存管理器的控制下访问所述空闲位置;
在所述内存管理器将所述待替换页面的数据从所述内存中替换至所述空闲位置之后,所述内存管理器将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。
6.根据权利要求1所述的方法,其特征在于,还包括:
如果所述虚地址的缺页类型为已有数据缺页,则所述内存管理器通知所述操作***发生缺页中断,所述已有数据缺页是指所述虚地址已被分配对应的页面;
所述内存管理器为所述虚地址分配对应的页面,更新所述内存和所述TLB中所述虚地址对应的页表项,所述页表项包括所述虚地址和所述页面的实地址的映射关系。
7.根据权利要求1、2、6中任一项所述的方法,其特征在于,若执行所述进程的处理器核发生了变化,所述方法还包括:
所述内存管理器接收所述操作***发送的所述变化后的处理器核的信息。
8.根据权利要求1、2、6中任一项所述的方法,其特征在于,当所述操作***结束所述进程时,所述方法还包括:
所述内存管理器接收所述操作***发送的内存释放指令,并根据所述内存释放指令释放所述进程占用的内存。
9.根据权利要求1、2、6中任一项所述的方法,其特征在于,所述内存管理器集成在内存控制器中,或者,集成在基于消息式内存***的缓冲调度器中。
10.一种内存管理方法,其特征在于,所述方法包括:
操作***接收内存管理器发送的待替换页面的地址信息,根据所述待替换页面的地址信息将所述待替换页面的数据从内存中替换至空闲位置,所述待替换页面的地址信息是内存管理器在确定运行所述操作***的处理器发送的内存访问请求携带的虚地址的缺页类型为空白页缺页,为所述虚地址分配对应的页面时,从已分配的页面中为所述虚地址选择的所述待替换页面内有脏数据时发送的;
在所述操作***将所述待替换页面的数据从所述内存中替换至所述空闲位置后,所述操作***通知所述内存管理器所述待替换页面可以使用,以使所述内存管理器将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。
11.根据权利要求10所述的方法,其特征在于,当发生缺页中断时,所述方法还包括:
所述操作***接收所述内存管理器发送的缺页中断通知,根据所述缺页中断通知保护现场,其中,所述缺页中断通知是所述内存管理器确定所述虚地址的缺页类型为已有数据缺页时发送的。
12.一种内存管理器,其特征在于,包括:
接收模块,用于接收运行操作***的处理器发送的内存访问请求,所述内存访问请求携带虚地址,所述虚地址为所述操作***在调用进程时为所述进程分配的;
查找模块,用于在页表缓存TLB和内存中查找所述虚地址对应的页表项;
判断模块,用于若所述查找模块在所述TLB和所述内存中没有查找到所述虚地址对应的页表项,则判断所述虚地址的缺页类型;
页面分配模块,用于若所述虚地址的缺页类型为空白页缺页,则为所述虚地址分配对应的页面,所述空白页缺页是指所述虚地址未被分配对应的页面;
更新模块,用于在所述页面分配模块为所述虚地址分配对应的页面后,将所述虚地址对应的页表项更新到所述内存和所述TLB中,所述页表项包括所述虚地址和所述页面的实地址的映射关系。
13.根据权利要求12所述的内存管理器,其特征在于,所述内存访问请求还携带所述进程的进程号,所述查找模块用于:根据所述进程号在所述内存中查找所述进程对应的页面,并根据所述虚地址在所述进程对应的页面中查找所述虚地址对应的页表项。
14.根据权利要求12或13所述的内存管理器,其特征在于,所述页面分配模块具体用于:
如果所述内存中有空白页面,将所述空白页面作为所述虚地址对应的页面;
如果所述内存中没有空白页面,从已分配的页面中选择一个待替换页面,将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址,所述修改后的待替换页面为所述虚地址对应的页面。
15.根据权利要求14所述的内存管理器,其特征在于,所述页面分配模块用于:
判断所述待替换页面内是否有脏数据;
如果所述待替换页面内没有脏数据,则将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址;
如果所述待替换页面内有脏数据,则将所述待替换页面的地址信息发送给所述操作***,以使所述操作***根据所述待替换页面的地址信息将所述待替换页面的数据从所述内存中替换至空闲位置,在所述操作***将所述待替换页面的数据从所述内存中替换至所述空闲位置之后,将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。
16.根据权利要求14所述的内存管理器,其特征在于,所述页面分配模块用于:
判断所述待替换页面内是否有脏数据;
如果所述待替换页面内没有脏数据,则将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址;
如果所述待替换页面内有脏数据,则根据所述待替换页面的地址信息将所述待替换页面的数据从所述内存中替换至空闲位置,其中,所述内存管理器和所述空闲位置的访问器位于同一个设备中,所述空闲位置的访问器用于在所述内存管理器的控制下访问所述空闲位置;
在将所述待替换页面的数据从所述内存中替换至所述空闲位置之后,将所述待替换页面的虚地址修改为所述内存访问请求携带的虚地址。
17.根据权利要求12或13所述的内存管理器,其特征在于,若执行所述进程的处理器核发生了变化,所述接收模块还用于:
接收所述操作***发送的所述变化后的处理器核的信息。
18.根据权利要求12或13所述的内存管理器,其特征在于,当所述操作***结束所述进程时,所述接收模块还用于:
接收所述操作***发送的内存释放指令;
所述内存管理器还包括:
内存释放模块,用于根据所述内存释放指令释放所述进程占用的内存。
19.根据权利要求12或13所述的内存管理器,其特征在于,所述内存管理器集成在内存控制器中,或者,集成在基于消息式内存***的缓冲调度器中。
20.一种实现内存管理的装置,其特征在于,包括:
处理器、存储器和***总线,所述处理器和所述存储器之间通过所述***总线连接并完成相互间的通信;
所述存储器,用于存储计算机执行指令;
所述处理器,用于运行所述计算机执行指令,执行如权利要求1至9任一所述的方法。
21.一种计算机,其特征在于,包括:处理器、存储器和***总线,所述处理器和所述存储器之间通过所述***总线连接并完成相互间的通信;
所述存储器,用于存储计算机执行指令;
所述处理器,用于运行所述计算机执行指令,执行如权利要求10或11所述的方法。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410189589.4A CN105095094B (zh) | 2014-05-06 | 2014-05-06 | 内存管理方法和设备 |
JP2016566963A JP6314355B2 (ja) | 2014-05-06 | 2015-04-15 | メモリ管理方法およびデバイス |
KR1020167029979A KR101893451B1 (ko) | 2014-05-06 | 2015-04-15 | 메모리 관리 방법 및 장치 |
EP15789083.1A EP3121731B1 (en) | 2014-05-06 | 2015-04-15 | Memory management method and device |
PCT/CN2015/076664 WO2015169145A1 (zh) | 2014-05-06 | 2015-04-15 | 内存管理方法和设备 |
US15/343,693 US10552337B2 (en) | 2014-05-06 | 2016-11-04 | Memory management and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410189589.4A CN105095094B (zh) | 2014-05-06 | 2014-05-06 | 内存管理方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105095094A CN105095094A (zh) | 2015-11-25 |
CN105095094B true CN105095094B (zh) | 2018-11-30 |
Family
ID=54392113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410189589.4A Active CN105095094B (zh) | 2014-05-06 | 2014-05-06 | 内存管理方法和设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10552337B2 (zh) |
EP (1) | EP3121731B1 (zh) |
JP (1) | JP6314355B2 (zh) |
KR (1) | KR101893451B1 (zh) |
CN (1) | CN105095094B (zh) |
WO (1) | WO2015169145A1 (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10031856B2 (en) * | 2013-03-14 | 2018-07-24 | Nvidia Corporation | Common pointers in unified virtual memory system |
DE102013022169A1 (de) | 2013-03-14 | 2014-09-18 | Nvidia Corporation | Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem |
CN107291629B (zh) * | 2016-04-12 | 2020-12-25 | 华为技术有限公司 | 一种用于访问内存的方法和装置 |
EP3441884B1 (en) * | 2016-05-03 | 2021-09-01 | Huawei Technologies Co., Ltd. | Method for managing translation lookaside buffer and multi-core processor |
WO2018103022A1 (zh) * | 2016-12-07 | 2018-06-14 | 深圳前海达闼云端智能科技有限公司 | 帧缓存实现方法、装置、电子设备和计算机程序产品 |
CN109508301B (zh) * | 2017-09-14 | 2021-10-29 | ***通信集团重庆有限公司 | 终端、应用数据的处理方法、数据处理设备及存储介质 |
JP6969254B2 (ja) * | 2017-09-22 | 2021-11-24 | 株式会社アイシン | 画像処理装置及びプログラム |
US10437735B2 (en) | 2017-12-13 | 2019-10-08 | Red Hat, Inc. | Process isolation for out of process page fault handling |
US10990463B2 (en) | 2018-03-27 | 2021-04-27 | Samsung Electronics Co., Ltd. | Semiconductor memory module and memory system including the same |
KR102581318B1 (ko) | 2018-04-04 | 2023-09-25 | 삼성전자주식회사 | 반도체 메모리 모듈 및 반도체 메모리 모듈을 포함하는 메모리 시스템 |
US11068310B2 (en) | 2019-03-08 | 2021-07-20 | International Business Machines Corporation | Secure storage query and donation |
US11182192B2 (en) | 2019-03-08 | 2021-11-23 | International Business Machines Corporation | Controlling access to secure storage of a virtual machine |
US11176054B2 (en) | 2019-03-08 | 2021-11-16 | International Business Machines Corporation | Host virtual address space for secure interface control storage |
US11455398B2 (en) | 2019-03-08 | 2022-09-27 | International Business Machines Corporation | Testing storage protection hardware in a secure virtual machine environment |
US11283800B2 (en) * | 2019-03-08 | 2022-03-22 | International Business Machines Corporation | Secure interface control secure storage hardware tagging |
CN112114738B (zh) * | 2019-06-20 | 2024-02-20 | 杭州海康威视数字技术股份有限公司 | 一种存储数据的方法及存储设备 |
US11829298B2 (en) * | 2020-02-28 | 2023-11-28 | Apple Inc. | On-demand memory allocation |
CN114610232A (zh) * | 2020-04-28 | 2022-06-10 | 华为技术有限公司 | 一种存储***、内存管理方法和管理节点 |
CN114253458B (zh) * | 2020-09-21 | 2024-04-26 | 华为技术有限公司 | 内存缺页异常的处理方法、装置、设备及存储介质 |
CN112148229B (zh) * | 2020-10-12 | 2024-01-30 | 北京计算机技术及应用研究所 | 一种飞腾服务器平台下的加速非易失性内存读写效率的方法 |
CN112214302B (zh) * | 2020-10-30 | 2023-07-21 | 中国科学院计算技术研究所 | 一种进程调度方法 |
KR102552592B1 (ko) * | 2021-07-16 | 2023-07-07 | 성균관대학교산학협력단 | Numa 시스템의 동작 방법 |
CN114201269B (zh) * | 2022-02-18 | 2022-08-26 | 阿里云计算有限公司 | 内存换页方法、***及存储介质 |
CN115794417A (zh) * | 2023-02-02 | 2023-03-14 | 本原数据(北京)信息技术有限公司 | 内存管理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473138A (zh) * | 2009-06-29 | 2012-05-23 | 甲骨文美国公司 | 具有用于页面错误处理的闪存的扩展主存储器层次结构 |
CN103488523A (zh) * | 2013-09-26 | 2014-01-01 | 华为技术有限公司 | 一种页的访问方法和页的访问装置、服务器 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5388244A (en) * | 1992-09-17 | 1995-02-07 | International Business Machines Corporation | Controls for initial diversion of page-frame logical content as part of dynamic virtual-to-real translation of a virtual page address |
JPH07152710A (ja) * | 1993-11-26 | 1995-06-16 | Sanyo Electric Co Ltd | マルチプロセサシステム |
AUPO194696A0 (en) * | 1996-08-28 | 1996-09-19 | Canon Information Systems Research Australia Pty Ltd | A method of efficiently updating hashed page tables |
JP3716752B2 (ja) * | 2001-03-05 | 2005-11-16 | 日本電気株式会社 | コンピュータノード間データ転送方法およびシステム |
US6854046B1 (en) * | 2001-08-03 | 2005-02-08 | Tensilica, Inc. | Configurable memory management unit |
US7330959B1 (en) * | 2004-04-23 | 2008-02-12 | Transmeta Corporation | Use of MTRR and page attribute table to support multiple byte order formats in a computer system |
US7623134B1 (en) * | 2006-06-15 | 2009-11-24 | Nvidia Corporation | System and method for hardware-based GPU paging to system memory |
JP2008225906A (ja) * | 2007-03-13 | 2008-09-25 | Toyota Motor Corp | 情報処理システム及びその情報処理システムを構成するコア識別コントローラ |
US20090006793A1 (en) * | 2007-06-30 | 2009-01-01 | Koichi Yamada | Method And Apparatus To Enable Runtime Memory Migration With Operating System Assistance |
CN101315602B (zh) | 2008-05-09 | 2011-01-26 | 浙江大学 | 硬件化的进程内存管理核的方法 |
JP5077209B2 (ja) * | 2008-12-03 | 2012-11-21 | 日本電気株式会社 | メモリ管理装置、メモリ管理方法およびプログラム |
CN101539869A (zh) | 2009-04-13 | 2009-09-23 | 浙江大学 | 与调度性能直接相关的内存管理核的硬件化的方法 |
CN102097128B (zh) * | 2010-11-25 | 2014-03-19 | 中国人民大学 | 一种基于闪存的自适应缓冲区置换方法 |
CN102169459B (zh) * | 2010-11-29 | 2013-04-24 | 北京握奇数据***有限公司 | 一种访问数据的方法、装置和智能卡 |
US9298621B2 (en) * | 2011-11-04 | 2016-03-29 | Hewlett Packard Enterprise Development Lp | Managing chip multi-processors through virtual domains |
US8832382B2 (en) * | 2011-12-21 | 2014-09-09 | Ati Technologies Ulc | Sub page and page memory management apparatus and method |
CN102609378B (zh) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
CN102662860B (zh) * | 2012-03-15 | 2015-07-01 | 天津国芯科技有限公司 | 用于进程切换的旁路转换缓冲器(tlb)及在其中地址匹配的方法 |
US8914458B2 (en) * | 2012-09-27 | 2014-12-16 | Mellanox Technologies Ltd. | Look-ahead handling of page faults in I/O operations |
US10409730B2 (en) * | 2013-03-15 | 2019-09-10 | Nvidia Corporation | Microcontroller for memory management unit |
-
2014
- 2014-05-06 CN CN201410189589.4A patent/CN105095094B/zh active Active
-
2015
- 2015-04-15 EP EP15789083.1A patent/EP3121731B1/en active Active
- 2015-04-15 WO PCT/CN2015/076664 patent/WO2015169145A1/zh active Application Filing
- 2015-04-15 KR KR1020167029979A patent/KR101893451B1/ko active IP Right Grant
- 2015-04-15 JP JP2016566963A patent/JP6314355B2/ja active Active
-
2016
- 2016-11-04 US US15/343,693 patent/US10552337B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473138A (zh) * | 2009-06-29 | 2012-05-23 | 甲骨文美国公司 | 具有用于页面错误处理的闪存的扩展主存储器层次结构 |
CN103488523A (zh) * | 2013-09-26 | 2014-01-01 | 华为技术有限公司 | 一种页的访问方法和页的访问装置、服务器 |
Also Published As
Publication number | Publication date |
---|---|
US20170075818A1 (en) | 2017-03-16 |
EP3121731A4 (en) | 2017-04-26 |
EP3121731A1 (en) | 2017-01-25 |
JP6314355B2 (ja) | 2018-04-25 |
KR101893451B1 (ko) | 2018-10-04 |
US10552337B2 (en) | 2020-02-04 |
EP3121731B1 (en) | 2022-06-08 |
KR20160136444A (ko) | 2016-11-29 |
CN105095094A (zh) | 2015-11-25 |
JP2017515242A (ja) | 2017-06-08 |
WO2015169145A1 (zh) | 2015-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105095094B (zh) | 内存管理方法和设备 | |
CN104915151B (zh) | 多虚拟机***中一种主动共享的内存超量分配方法 | |
CN100578456C (zh) | 信息处理装置、进程控制方法 | |
CN102449607B (zh) | 具有多个闪存封装的存储*** | |
US9785564B2 (en) | Hybrid memory with associative cache | |
US8069191B2 (en) | Method, an apparatus and a system for managing a snapshot storage pool | |
CN103049334B (zh) | 一种任务处理的方法和虚拟机 | |
KR101038963B1 (ko) | 캐쉬 할당을 위한 장치, 시스템, 방법 및 기계 액세스가능 매체 | |
AU2006262111B2 (en) | Managing memory pages | |
EP2455865A1 (en) | Memory management device | |
CN106201335B (zh) | 存储*** | |
JP4753549B2 (ja) | キャッシュメモリおよびシステム | |
US8645612B2 (en) | Information processing device and information processing method | |
CN105607962B (zh) | 一种虚拟机备份的方法和装置 | |
JP2010541060A (ja) | シン・プロビジョニングの移行および取り消しのための方法および装置 | |
CN107256196A (zh) | 基于闪存阵列的支持零拷贝的缓存***及方法 | |
CN103942011A (zh) | 一种差量快照***及其使用方法 | |
CN105446889B (zh) | 一种内存管理方法、装置以及内存控制器 | |
JP2000285023A (ja) | ファイル制御装置 | |
CN115617542A (zh) | 内存交换方法、装置、计算机设备及存储介质 | |
CN115269450A (zh) | 内存协同管理***和方法 | |
JPH11143779A (ja) | 仮想記憶装置におけるページング処理システム | |
US8762647B2 (en) | Multicore processor system and multicore processor | |
CN102662891A (zh) | 基于亲和性感知的dma缓冲区管理方法及装置 | |
CN105095105B (zh) | 一种Cache分区的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |