CN111414248B - 内存管理方法、装置及计算设备 - Google Patents
内存管理方法、装置及计算设备 Download PDFInfo
- Publication number
- CN111414248B CN111414248B CN201910009365.3A CN201910009365A CN111414248B CN 111414248 B CN111414248 B CN 111414248B CN 201910009365 A CN201910009365 A CN 201910009365A CN 111414248 B CN111414248 B CN 111414248B
- Authority
- CN
- China
- Prior art keywords
- memory
- virtual
- page
- pages
- request
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本发明实施例公开了一种内存管理方法,包括步骤:接收对当前内存池的内存操作请求,内存以文件系统中的文件形式在内存中存储数据,内存池预先将各内存中各文件的物理页映射至内存池对应的虚拟地址空间的虚拟页,并至少记录物理页与对应虚拟页的映射关系;以及响应于内存操作请求,执行相应操作并更改内存池的相关记录。本发明实施例还公开了相应的内存管理装置和计算设备。
Description
技术领域
本发明涉及计算机技术领域,尤其是一种内存管理方法、装置及计算设备。
背景技术
随着云计算和大数据技术的发展,用户对存储系统的存储效率与存储质量的要求越来越高。近年来,随着半导体和新材料技术的发展,出现了很多新型的存储介质,例如相变存储器(Phase-Change Memory,PCM)、自旋转移矩磁随机存取存储器(Spin-TransferTorque Magnetic RAM,STT-RAM)、电阻式存储器(Resis-tiveRAM,RRAM)等,将其统称为非易失性存储器(Non-Volatile Memory,NVM)。这些存储介质具有功耗低、访问速度快、存储密度大、可按字节寻址、非易失等优点,可以满足大数据环境下对内存计算的需求,能有效缓解现有内存扩展能力不足的问题。并且,与传统动态随机内存(Dynamic Random AccessMemory,DRAM)相同地,NVM也能够直接连接到系统的内存总线,直接通过处理器的load/store指令进行访问。
但NVM与DRAM相比仍存在很多区别,这些区别为NVM的管理带来了很多挑战。例如,操作系统分配传统内存时,是以页(page)为单位进行分配和使用,从而调整程序使用的内存总量。而对于NVM,目前操作系统大多以文件系统管理、并通过DAX技术将NVM映射到虚拟内存的方式进行使用。现有内存管理方案无法对NVM实现这种调整。
因此,需要一种更先进的内存管理方案。
发明内容
为此,本发明实施例提供了一种内存管理方法、装置及计算设备,以力图解决或者至少缓解上面存在的至少一个问题。
根据本发明实施例的一个方面,提供了一种内存管理方法,包括步骤:接收对当前内存池的内存操作请求,内存以文件系统中的文件形式在内存中存储数据,内存池预先将各内存中各文件的物理页映射至内存池对应的虚拟地址空间的虚拟页,并至少记录物理页与对应虚拟页的映射关系;以及响应于内存操作请求,执行相应操作并更改内存池的相关记录。
可选地,在根据本发明实施例的内存管理方法中,内存池还记录有虚拟地址空间中虚拟页的状态,内存操作请求包括内存申请请求,响应于内存操作请求,执行相应操作并更改内存池的相关记录的步骤包括:响应于内存申请请求,从内存池的虚拟地址空间中获取满足内存申请请求、且状态为空闲的虚拟页;分配该虚拟页,并将该虚拟页的状态置为占用。
可选地,在根据本发明实施例的内存管理方法中,内存池还记录有虚拟地址空间中虚拟页的状态,内存操作请求包括内存释放请求,响应于内存操作请求,执行相应操作并更改内存池的相关记录的步骤包括:响应于内存释放请求,释放内存释放请求所指定的虚拟页,并将该虚拟页的状态置为空闲。
可选地,在根据本发明实施例的内存管理方法中,内存池还记录有虚拟地址空间中虚拟页的状态,内存操作请求包括容量扩充请求,响应于内存操作请求,执行相应操作并更改内存池的相关记录的步骤包括:响应于容量扩充请求,从内存中获取满足容量扩充请求的文件系统的新文件;将新文件的物理页映射至虚拟地址空间的虚拟页;记录新文件的物理页的映射关系,并将对应虚拟页的状态置为空闲。
可选地,在根据本发明实施例的内存管理方法中,内存池还记录有虚拟地址空间中虚拟页的状态,内存操作请求包括容量缩减请求,响应于内存操作请求,执行相应操作并更改内存池的相关记录的步骤包括:响应于容量缩减请求,判断容量缩减请求所涉及的虚拟页的状态是否为空闲;如果是,解除该虚拟页与该虚拟页对应物理页的映射关系,并将该虚拟页的状态和该虚拟页对应物理页的映射关系均置为未映射。
可选地,在根据本发明实施例的内存管理方法中,响应于内存操作请求,执行相应操作并更改内存池的相关记录的步骤还包括:响应于容量缩减请求,删除虚拟地址空间末尾的、状态为未映射的虚拟页的记录。
可选地,在根据本发明实施例的内存管理方法中,内存池还记录有虚拟地址空间中虚拟页的状态,内存操作请求包括内存整理请求,响应于内存操作请求,执行相应操作并更改内存池的相关记录的步骤包括:响应于内存整理请求,确定状态为空闲的虚拟页对应的物理页中的目标物理页;确定状态为占用的虚拟页对应的物理页中的待整理物理页;将待整理物理页的数据移动至目标物理页;解除待整理物理页与待整理物理页对应虚拟页的映射关系,并将待整理物理页的映射关系置为未映射;解除目标物理页与目标物理页对应虚拟页的映射关系,并将目标物理页对应虚拟页的状态置为未映射;将目标物理页映射到待整理物理页原先对应的虚拟页,并更新目标物理页的映射关系。
可选地,在根据本发明实施例的内存管理方法中,内存操作请求包括内存恢复请求,响应于内存操作请求,执行相应操作并更改内存池的相关记录的步骤包括:按照内存恢复请求所指定的物理页的映射关系,将物理页映射至虚拟地址空间的相应虚拟页,并记录该映射关系。
可选地,在根据本发明实施例的内存管理方法中,文件的数据根据文件所映射到的虚拟地址空间的虚拟地址来进行读写。
可选地,在根据本发明实施例的内存管理方法中,内存为非易失性存储器。
根据本发明实施例的另一方面,提供了一种内存管理方法,内存为非易失性存储器,方法包括步骤:接收对当前内存池的内存操作请求,内存以文件系统中的文件形式在内存中存储数据,内存池预先将各内存中各文件的物理页映射至内存池对应的虚拟地址空间的虚拟页,并记录物理页与对应虚拟页的映射关系、以及虚拟地址空间中虚拟页的状态;以及响应于内存操作请求,执行相应操作并更改内存池的相关记录。
根据本发明实施例的另一方面,提供了一种内存容量扩充方法,内存为非易失性存储器,方法包括步骤:接收对当前内存池的容量扩充请求,内存以文件系统中的文件形式在内存中存储数据,内存池预先将各内存中各文件的物理页映射至内存池对应的虚拟地址空间的虚拟页,并记录物理页与对应虚拟页的映射关系、以及虚拟地址空间中虚拟页的状态;响应于容量扩充请求,从内存中获取满足容量扩充请求的文件系统的新文件;将新文件的物理页映射至虚拟地址空间的虚拟页;以及记录新文件的物理页的映射关系,并将对应虚拟页的状态置为空闲。
根据本发明实施例的另一方面,提供了一种内存容量缩减方法,内存为非易失性存储器,方法包括步骤:接收对当前内存池的容量缩减请求,内存以文件系统中的文件形式在内存中存储数据,内存池预先将各内存中各文件的物理页映射至内存池对应的虚拟地址空间的虚拟页,并记录物理页与对应虚拟页的映射关系、以及虚拟地址空间中虚拟页的状态;响应于容量缩减请求,判断容量缩减请求所涉及的虚拟页的状态是否为空闲;以及如果是,解除该虚拟页与该虚拟页对应物理页的映射关系,并将该虚拟页的状态和该虚拟页对应物理页的映射关系均置为未映射。
根据本发明实施例的另一方面,提供了一种内存整理方法,内存为非易失性存储器,方法包括步骤:接收对当前内存池的内存整理请求,内存以文件系统中的文件形式在内存中存储数据,内存池预先将各内存中各文件的物理页映射至内存池对应的虚拟地址空间的虚拟页,并记录物理页与对应虚拟页的映射关系、以及虚拟地址空间中虚拟页的状态;响应于内存整理请求,确定状态为空闲的虚拟页对应的物理页中的目标物理页,并确定状态为占用的虚拟页对应的物理页中的待整理物理页;将待整理物理页的数据移动至目标物理页;解除待整理物理页与待整理物理页对应虚拟页的映射关系,并将待整理物理页的映射关系置为未映射;解除目标物理页与目标物理页对应虚拟页的映射关系,并将目标物理页对应虚拟页的状态置为未映射;以及将目标物理页映射到待整理物理页原先对应的虚拟页,并更新目标物理页的映射关系。
根据本发明实施例的另一方面,提供了一种内存管理装置,包括:请求接收模块,适于接收对当前内存池的内存操作请求,内存以文件系统中的文件形式在内存中存储数据,内存池预先将各内存中各文件的物理页映射至内存池对应的虚拟地址空间的虚拟页;数据记录模块,适于至少记录物理页与对应虚拟页的映射关系;以及操作执行模块,适于响应于内存操作请求,执行相应操作并更改数据记录模块中内存池的相关记录。
根据本发明实施例的又一方面,提供了一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行上述方法的指令。
根据本发明实施例的内存管理方案,通过使用文件系统的DAX或者XIP技术将文件映射到虚拟地址空间,实现了对现有操作系统的内存管理方式(按页分配和释放)的支持,大大降低了开发难度。此外,通过修改文件中物理页的映射关系和内存池对应虚拟地址空间中虚拟页的状态,可以实现对内存池容量的动态调整、对内存的灵活分配和整理。并且,内存整理和内存缩容不会导致文件数量的增多,避免给文件系统带来额外压力。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;
图2示出了根据本发明一个实施例的内存管理方法200的示意图;
图3示出了根据本发明一个实施例的内存池的示意图;
图4示出了根据本发明一个实施例的待整理内存池的示意图;
图5示出了对图4所示的内存池进行内存整理和缩容后的示意图;以及图6示出了根据本发明一个实施例的内存管理装置700。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的计算设备100的示意图。
如图1所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以是这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
计算设备100可以实现为服务器,例如数据库服务器、应用程序服务器和WEB服务器等,也可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。当然,计算设备100也可以实现为小尺寸便携(或者移动)电子设备的一部分。
在根据本发明的实施例中,计算设备100的应用122中包含执行根据本发明实施例的内存管理方法200的多条程序指令,而程序数据124还可以存储根据本发明实施例的内存管理装置600的配置信息等。
在根据本发明的实施例中,计算设备100的系统存储器106(也就是内存)为非易失性存储器(也就是NVM)。NVM至少可以包括:阻变式存储器(Resistive RAM,简称RRAM)、相变存储器(Phase Change Memory,简称PCM)、磁性随机存储器(Magnetic RAM,简称MRAM)以及自旋力矩转移存储器(Spin-Torque Transfer RAM,简称STT RAM)。NVM可以直接与存储器总线108(也就是内存总线)相连,因此应用程序可以通过处理器的load和store指令来直接访问NVM。在这种情况下,NVM可被称为持久化内存(Persistent Memory)。
具体地,内存的物理地址空间可以被虚拟为连续的地址空间,即操作系统虚拟地址空间。操作系统虚拟地址空间可以包括内核地址空间和用户地址空间。一般可以将内存映射到用户地址空间中,以便应用程序直接读写内存。
根据本发明的实施例,内存中建立有文件系统,并以该文件系统中的文件形式来在内存中存储数据。该文件系统可以通过使用直接访问(Direct Access,简称DAX)或原地执行(eXecute In Place,简称XIP)技术,绕过页高速缓存(page cache)来直接地访问NVM,从而可以将内存直接映射至用户地址空间。
为了更好的描述本发明实施例,下面简单介绍一下虚拟内存(virtual memory)的概念。众所周知,程序要放到内存中运行。但随着程序规模的不断增大,内存容量很难容纳一个完整的程序,虚拟内存的概念应运而生。虚拟内存的基本思想是程序、数据、堆栈的总的大小可以超过物理存储器的大小。操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比如对一个16MB的程序和一个内存只有4MB的机器,操作系统通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片段,这样就可以把这个16M的程序运行在一个只具有4M内存的机器上了。
本领域人员可以知道,在计算机系统中,虚拟地址空间是进程能够访问的一段虚拟地址范围。虚拟地址空间的大小通常是由计算机的指令集体系结构(instruction setarchitecture)来确定的。例如,一个32位的中央处理器(Central Processing Unit,CPU),提供的虚拟地址空间为0~0xFFFFFFFF(4G)。虚拟地址空间中的某一个地址称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址。物理地址空间是指内存的物理地址范围。物理地址空间中的某一个地址称之为物理地址。通常,物理地址空间小于虚拟地址空间,物理地址空间可以映射到虚拟地址空间中。
例如,对于一台内存为256M的32bit x86主机来说,它的虚拟地址空间范围是0~0xFFFFFFFF(4G),而物理地址空间范围是0x000000000~0x0FFFFFFF(256M)。
现有技术中,大多数机器均使用虚拟内存,虚拟地址(或称线性地址)不是被直接送到内存地址总线上,而是送到MMU(Memory Management Unit,内存管理单元)中,从而把虚拟地址映射为物理地址。也就是说,MMU用于实现程序的虚拟地址到内存的物理地址的映射。
为了实现程序的虚拟地址到内存的物理地址的映射,MMU引入分页(paging)机制。具体地,在分页机制中,为了效率起见,虚拟地址空间以页(page)为单位被划分,可以将虚拟地址空间中的页称为虚拟页。而相应的物理地址空间也以页为单位被划分,可以将物理地址空间的页称为物理页。其中,虚拟页和物理页的大小相同。
在引入页这个概念的基础上,MMU采用多级页表的形式实现虚拟地址到物理地址的索引。具体而言,一个虚拟地址,大小4个字节(32bit),包含找到物理地址的信息,分为3个部分:
第22位到第31位这10位(最高10位)是页目录中的索引;
第12位到第21位这10位是页表中的索引;
第0位到第11位这12位(低12位)是页内偏移。
对于一个要转换成物理地址的虚拟地址,CPU首先根据控制寄存器CR3中的值,找到页目录所在的物理页。然后根据虚拟地址的第22位到第31位这10位(最高的10bit)的值作为索引,找到相应的PDE(page directory entry,页目录项),PDE中有这个虚拟地址所对应页表的物理地址。有了页表的物理地址,根据虚拟地址的第12位到第21位这10位的值作为索引,找到该页表中相应的PTE(page table entry,页表项)。页表项中就有这个虚拟地址所对应物理页的物理地址。最后用虚拟地址的最低12位,也就是页内偏移,加上这个物理页的物理地址,就得到了该虚拟地址所对应的物理地址。
一个页目录有1024项,虚拟地址最高的10bit刚好可以索引1024项(2的10次方等于1024)。一个页表也有1024项,虚拟地址中间部分的10bit,刚好索引1024项。虚拟地址最低的12bit(2的12次方等于4096),作为页内偏移,刚好可以索引4KB,也就是一个物理页中的每个字节。
一个虚拟地址转换成物理地址的计算过程就是,处理器通过CR3找到当前页目录所在物理页,取虚拟地址的高10bit,然后把这10bit左移2bit(因为每个页目录项4个字节长,左移2bit相当于乘4)得到在该页中的地址,取出该地址处的PDE(4个字节),就找到了该虚拟地址对应页表所在物理页,取虚拟地址第12位到第21位这10位,然后把这10bit左移2bit(因为每个页表项4个字节长,左移2bit相当于乘4)得到在该页中的地址,取出该地址处的PTE(4个字节),就找到了该虚拟地址对应物理页的地址,最后加上12bit的页内偏移得到了物理地址。
一个32bit的指针,可以寻址范围0x00000000-0xFFFFFFFF,4GB大小。也就是说一个32bit的指针可以寻址整个4GB地址空间的每一个字节。一个页表项负责4K的地址空间和物理内存的映射,一个页表1024项,也就是负责1024*4k=4M的地址空间的映射。一个页目录项,对应一个页表。一个页目录有1024项,也就对应着1024个页表,每个页表负责4M地址空间的映射。1024个页表负责1024*4M=4G的地址空间映射。一个进程有一个页目录。所以以页为单位,页目录和页表可以保证4G的地址空间中的每页和物理内存的映射。
每个进程都有自己的4G地址空间,从0x00000000-0xFFFFFFFF。通过每个进程自己的一套页目录和页表来实现。由于每个进程有自己的页目录和页表,所以每个进程的地址空间映射的物理内存是不一样的。两个进程的同一个虚拟地址处(如果都有物理内存映射)的值一般是不同的,因为他们往往对应不同的物理页。
以上详细描述了MMU从程序的虚拟地址到内存的物理地址的映射过程。在本发明实施例中,文件的数据可以根据文件所映射到的虚拟地址空间的虚拟地址来进行读写。
根据本发明的实施例,可以采用内存池(memory pool)来对上述内存进行管理。内存池可以预先向操作系统请求得到一段连续的虚拟地址空间(也就是该内存池对应的虚拟地址空间),然后在运行时根据实际需要分配出去。
图2示出了根据本发明一个实施例的内存管理方法200。如图2所示,内存管理方法始于步骤S210。
在步骤S210中,接收对当前内存池的内存操作请求。如前文所述,物理地址空间可以被划分为多个物理页,虚拟地址空间可以被划分为多个虚拟页。内存池可以预先将各内存中各文件的物理页映射至该内存池对应的虚拟地址空间的虚拟页,并至少记录物理页与对应虚拟页的映射关系。其中,物理页的映射关系可以指示物理页被映射到的虚拟页的虚拟地址。
根据本发明的一个实施方式,内存池还可以记录内存池对应的虚拟地址空间中虚拟页的状态。虚拟页的状态可以指示虚拟页是否可用(也就是是否已分配出去)。
图3示出了根据本发明一个实施例的内存池的示意图。如图3所示,内存中文件1和文件2的物理页与内存池对应的虚拟地址空间的虚拟页建立有映射关系(以箭头表示)。
在一种实施例中,可以存储如表1所示的映射关系表。该映射关系表中每条记录包括文件名称、物理页标号和虚拟地址。文件名称和物理页标号可唯一标识文件的物理页,虚拟地址则指示对应物理页所映射的虚拟页的虚拟地址。
表1映射关系表
文件名称 | 物理页标号 | 虚拟地址 |
Nvm_file.001 | 0 | 0x50000000 |
Nvm_file.001 | 1 | 0x50010000 |
Nvm_file.001 | 2 | 0x50020000 |
Nvm_file.001 | 3 | 0x50030000 |
Nvm_file.002 | 0 | 0x50040000 |
Nvm_file.002 | 1 | 0x50050000 |
在一种实施例中,可以存储如表2所示的状态表。该状态表中每条记录包括虚拟页标号和状态。虚拟页标号可唯一标识内存池对应的虚拟地址空间的虚拟页,状态则指示对应虚拟页是否可用。例如,空闲指示虚拟页可用(未分配),占用指示虚拟页不可用(已分配),未映射指示虚拟页未与物理页建立映射关系。
表2状态表
虚拟页标号 | 状态 |
0 | 占用 |
1 | 占用 |
2 | 空闲 |
3 | 占用 |
4 | 空闲 |
5 | 未映射 |
而后在步骤S220中,响应于内存操作请求,执行相应操作并更改内存池的相关记录。具体地,可以执行内存操作请求所指示的操作,并更改与该操作相关的物理页的映射关系和虚拟页的状态。
在一种实施例中,内存操作请求可以包括内存申请请求,该内存申请请求请求分配内存。响应于内存申请请求,可以从内存池的虚拟地址空间中获取满足内存申请请求、且状态为空闲的虚拟页。而后分配该虚拟页,并将该虚拟页的状态置为占用。例如,内存申请请求可以包括要申请的内存大小,那么可以从内存池的虚拟地址空间中获取满足该大小的、状态为空闲的虚拟页来分配。分配该虚拟页,并将该虚拟页的状态从空闲修改为占用。
在一种实施例中,内存操作请求可以包括内存释放请求,该内存释放请求请求释放已分配的内存。响应于该内存释放请求,可以释放该内存释放请求所指定的虚拟页,并将该虚拟页的状态置为空闲,即从占用修改为空闲。
在一种实施例中,内存操作请求可以包括容量扩充请求,容量扩充请求请求扩充内存池的容量。响应于该容量扩充请求,可以从内存中获取满足该容量扩充请求的文件系统的新文件,将该新文件的物理页映射至内存池对应的虚拟地址空间的虚拟页(也就是与原先未建立映射关系的虚拟页建立映射关系)。记录该新文件的物理页的映射关系,并将对应虚拟页的状态置为空闲。例如,可以在如表1所示的映射关系表中添加有关该新文件的物理页的记录,在如表2所示的状态表中将该新文件的物理页所映射的虚拟页的状态从未映射修改为空闲。
在一种实施例中,内存操作请求可以包括容量缩减请求,该容量缩减请求请求缩减内存池的容量。响应于该容量缩减请求,可以判断容量缩减请求所涉及的虚拟页的状态是否为空闲。具体地,可以先判断内存池对应的虚拟地址空间是否包括状态为空闲的虚拟页。例如,查询状态表以确定是否有状态为空闲的虚拟页。如果没有包括状态为空闲的虚拟页,则表示当前内存池没有容量可以缩减,因而可以不进行任何操作,也就是拒绝缩容。如果包括状态为空闲的虚拟页,则可以再确定该容量缩减请求所涉及的虚拟页的状态是否为空闲。
通常地,容量缩减请求可以包括所要缩减的虚拟页的要求,可以根据容量缩减请求的要求确定其所涉及的虚拟页。例如,容量缩减请求可以包括所要缩减的虚拟地址,那么可以确定该虚拟地址对应的虚拟页为容量缩减请求所涉及的虚拟页。例如,容量缩减请求可以包括所要缩减的内存大小,那么可以在内存池对应的虚拟地址空间所包含的状态为空闲的虚拟页中选择满足容量缩减请求所指示的内存大小的虚拟页,作为容量缩减请求所涉及的虚拟页。又例如,容量缩减请求可以不包括任何要求,那么可以将内存池对应的虚拟地址空间所包含的所有状态为空闲的虚拟页作为容量缩减请求所涉及的虚拟页。
如果容量缩减请求所涉及的虚拟页的状态为空闲,则可以解除该虚拟页与该虚拟页对应物理页的映射关系,并将该虚拟页的状态和该虚拟页对应物理页的映射关系均置为未映射。例如,容量缩减请求所涉及的虚拟页为表2中标号为2的虚拟页,与该虚拟页建立有映射关系的物理页为表1中Nvm_file.002中标号为1的物理页。那么可以解除上述虚拟页和上述物理页的映射关系,并将标号为2的虚拟页的状态从空闲修改为未映射,如下表3。同时将Nvm_file.002中标号为1的物理页的映射关系修改为未映射,如下表4。
表3状态表
虚拟页标号 | 状态 |
0 | 占用 |
1 | 占用 |
2 | 未映射 |
3 | 占用 |
4 | 空闲 |
5 | 未映射 |
表4映射关系表
文件名称 | 物理页标号 | 虚拟地址 |
Nvm_file.001 | 0 | 0x50000000 |
Nvm_file.001 | 1 | 0x50010000 |
Nvm_file.001 | 2 | 0x50020000 |
Nvm_file.001 | 3 | 0x50030000 |
Nvm_file.002 | 0 | 0x50040000 |
Nvm_file.002 | 1 | 未映射 |
此外,在一种实施例中,还可以响应于容量缩减请求,判断是否存在所有物理页所映射的虚拟页的状态均为空闲的文件。如果存在,解除该文件所有物理页与对应虚拟页的映射关系,并将所记录的该文件所有物理页的映射关系修改为未映射,将该文件所有物理页原先对应的虚拟页的状态修改为未映射。
此外,在一种实施例中,还可以响应于容量缩减请求,删除内存池对应的虚拟地址空间末尾的、状态为未映射的虚拟页的记录。具体地,虚拟地址空间中虚拟页的虚拟地址是连续并且有序的(通常按高地址到低地址排列)。可以判断在虚拟地址空间末尾是否存在状态为未映射的虚拟页,如果存在,则可以删除该虚拟页的记录。如果不存在,则不进行任何操作。例如,可以查看如图3所示的状态表,确定该状态表末尾存在状态为未映射的虚拟页的记录,也就是标号为5的虚拟页记录。则删除该条记录,如下表5。
表5状态表
虚拟页标号 | 状态 |
0 | 占用 |
1 | 占用 |
2 | 未映射 |
3 | 占用 |
4 | 空闲 |
在一种实施例中,内存操作请求还可以包括内存整理请求,该内存整理请求请求对内存进行整理。可以响应于内存整理请求,先确定状态为空闲的虚拟页对应的物理页(后续简称为空闲物理页)中的目标物理页。具体地,可以选择空闲物理页中的孤立物理页作为目标物理页。此处的孤立物理页指的是位于状态为占用的虚拟页对应的物理页之间的物理页。图4示出了根据本发明一个实施例的待整理内存池的示意图,其中以内斜线表示状态为占用。如图4所示,文件1中的物理页2、6、8和10均为空闲物理页中的孤立物理页。在另一种实施例中,如果没有孤立物理页,则可以将虚拟地址空间内首个空闲物理页作为目标物理页。
而后确定状态为占用的虚拟页对应的物理页(后续简称为占用物理页)中的待整理物理页。此处的待整理物理页通常为没有与其他占用物理页连续的物理页。如图4所示,文件2中的物理页2、5和8均为占用物理页中的一个待整理物理页。
确定上述目标物理页和上述待整理物理页后,可以将待整理物理页的数据移动至目标物理页。解除待整理物理页与待整理物理页对应虚拟页的映射关系,并将待整理物理页的映射关系置为未映射。再解除目标物理页与目标物理页对应虚拟页的映射关系,并将目标物理页对应虚拟页的状态置为未映射。最后将目标物理页映射到待整理物理页原先对应的虚拟页,并更新目标物理页的映射关系(也就是记录目标物理页新的映射关系)。
需要注意的是,每次仅确定一个目标物理页和一个待整理物理页。在移动数据、接触映射关系并更改相应记录之后,可以重复上述确定目标物理页和待整理物理页、移动数据、解除映射关系和更改记录的步骤,直到不存在目标物理页或者不存在待整理物理页为止。这样,可以使得分配出去的物理页集中到某几个文件,避免分散造成过多内存碎片。
在一种实施例中,在接收容量缩减请求、响应于容量缩减请求进行容量缩减之前,还可以先进行内存整理,以便后续的容量缩减可以达到更好的缩容效果。
图5示出了对图4所示的内存池进行内存整理和容量缩减后的内存池的示意图。如图5所示,进行内存整理之后,文件1的物理页8现存储有原文件2的物理页8的数据,并映射至原文件2物理页8对应的虚拟页。文件1物理页6现存储有原文件2物理页5的数据,并映射至原文件2物理页5对应的虚拟页。文件1物理页2现存储有原文件2物理页2的数据,并映射至原文件2物理页2对应的虚拟页。由于经过内存整理之后,文件2的物理页所对应的虚拟页的状态均为空闲,因此可以解除文件2所有物理页与对应虚拟页的映射关系并更改相应记录。最后,删除了内存池对应的虚拟地址空间末尾的、状态为未映射的虚拟页的记录。
可以理解地,传统的内存缩容和整理方式基于底层文件系统的hole punch操作,需要不断创建新的文件来利用因为内存整理/缩容而释放出来的内存空间。这种文件数量的增加和文件的稀疏化会给文件系统带来很大的压力。而本发明的内存缩容和整理方式,文件数量并不会随着内存整理和缩容而增多,不会给文件系统带来额外压力。
在一种实施例中,内存操作请求还可以包括内存恢复请求。通常地,该内存恢复请求可以携带其请求恢复的物理页的映射关系,例如携带有映射关系表。可以响应于该内存恢复请求,按照该内存恢复请求所指定的物理页的映射关系,将所指定的物理页映射至内存池对应的虚拟地址空间的相应虚拟页,并记录该映射关系。内存恢复请求还可以携带其请求恢复的虚拟页的状态,例如携带有状态表。可以响应于该内存恢复请求,更新相应的虚拟页状态。
综上所述,根据本发明实施例的内存管理方案,通过使用文件系统的DAX或者XIP技术将文件映射到虚拟地址空间,实现了对现有操作系统的内存管理方式(按页分配和释放)的支持,大大降低了开发难度。此外,通过修改文件中物理页的映射关系和内存池对应虚拟地址空间中虚拟页的状态,可以实现对内存池容量的动态调整、对内存的灵活分配和整理。并且,内存整理和内存缩容不会导致文件数量的增多,避免给文件系统带来额外压力。
本发明实施例还提供了一种内存管理方法300。其中,内存为非易失性存储器。内存管理方法300适于在计算设备100中执行,并始于步骤S310。在步骤S310中,接收对当前内存池的内存操作请求。内存以文件系统中的文件形式在内存中存储数据。内存池预先将各内存中各文件的物理页映射至内存池对应的虚拟地址空间的虚拟页,并记录物理页与对应虚拟页的映射关系、以及虚拟地址空间中虚拟页的状态。
而后在步骤S320中,响应于内存操作请求,执行相应操作并更改内存池的相关记录。
内存管理方法300中各步骤的具体处理已在前文结合图1~图5对内存管理方法200的说明中详细描述,此处不再赘述。
本发明实施例还提供了一种内存容量扩充方法400。其中,内存为非易失性存储器。内存容量扩充方法400适于在计算设备100中执行,并始于步骤S410。在步骤S410中,接收对当前内存池的容量扩充请求。内存以文件系统中的文件形式在内存中存储数据。内存池预先将各内存中各文件的物理页映射至内存池对应的虚拟地址空间的虚拟页,并记录物理页与对应虚拟页的映射关系、以及虚拟地址空间中虚拟页的状态。
而后在步骤S420中,响应于容量扩充请求,从内存中获取满足容量扩充请求的文件系统的新文件。接着在步骤S430中,将该新文件的物理页映射至内存池对应虚拟地址空间的虚拟页。最后在步骤S440中,记录该新文件的物理页的映射关系,并将对应虚拟页的状态置为空闲。
内存容量扩充方法400中各步骤的具体处理已在前文结合图1~图5对内存管理方法200的说明中详细描述,此处不再赘述。
本发明实施例还提供了一种内存容量缩减方法500。其中,内存为非易失性存储器。内存容量缩减方法500适于在计算设备100中执行,并始于步骤S510。在步骤S510中,接收对当前内存池的容量缩减请求。内存以文件系统中的文件形式在内存中存储数据。内存池预先将各内存中各文件的物理页映射至内存池对应的虚拟地址空间的虚拟页,并记录物理页与对应虚拟页的映射关系、以及虚拟地址空间中虚拟页的状态。
而后在步骤S520中,响应于容量缩减请求,判断容量缩减请求所涉及的虚拟页的状态是否为空闲。最后在步骤S530中,如果容量缩减请求所涉及的虚拟页的状态为空闲,则解除该虚拟页与该虚拟页对应物理页的映射关系,并将该虚拟页的状态和该虚拟页对应物理页的映射关系均置为未映射。
内存容量缩减方法500中各步骤的具体处理已在前文结合图1~图5对内存管理方法200的说明中详细描述,此处不再赘述。
本发明实施例还提供了一种内存整理方法600。其中,内存为非易失性存储器。内存整理方法600适于在计算设备100中执行,并始于步骤S610。在步骤S610中,接收对当前内存池的内存整理请求。内存以文件系统中的文件形式在内存中存储数据。内存池预先将各内存中各文件的物理页映射至内存池对应的虚拟地址空间的虚拟页,并记录物理页与对应虚拟页的映射关系、以及虚拟地址空间中虚拟页的状态。
而后在步骤S620中,响应于内存整理请求,确定状态为空闲的虚拟页对应的物理页中的目标物理页,并确定状态为占用的虚拟页对应的物理页中的待整理物理页。接着在步骤S630中,将待整理物理页的数据移动至目标物理页。
而后在步骤S640中,解除待整理物理页与待整理物理页对应虚拟页的映射关系,并将待整理物理页的映射关系置为未映射。而后在步骤S650中,解除目标物理页与目标物理页对应虚拟页的映射关系,并将目标物理页对应虚拟页的状态置为未映射。最后在步骤S660中,将目标物理页映射到待整理物理页原先对应的虚拟页,并更新目标物理页的映射关系。
内存整理方法600中各步骤的具体处理已在前文结合图1~图5对内存管理方法200的说明中详细描述,此处不再赘述。
图6示出了根据本发明一个实施例的内存管理装置700的结构框图。如图6所示,内存管理装置700可以包括请求接收模块710、数据记录模块720和操作执行模块730。
请求接收模块710适于接收对当前内存池的内存操作请求。内存为非易失性存储器。内存可以以文件系统中的文件形式在内存中存储数据。内存池预先将各内存中各文件的物理页映射至内存池对应的虚拟地址空间的虚拟页。文件的数据根据该文件所映射到的虚拟地址空间的虚拟地址来进行读写。内存池对应的虚拟地址空间由操作系统预先分配。
数据记录模块720适于至少记录上述物理页与对应虚拟页的映射关系。在一个实施例中,还可以记录内存池对应的虚拟地址空间中虚拟页的状态。
操作执行模块730适于响应于上述内存操作请求,执行相应操作并更改数据记录模块720中内存池的相关记录。
在一种实施例中,内存操作请求可以包括内存申请请求,操作执行模块730可以响应于内存申请请求,从内存池的虚拟地址空间中获取满足该内存申请请求、且状态为空闲的虚拟页。而后分配该虚拟页,并将该虚拟页的状态置为占用。
在一种实施例中,内存操作请求可以包括内存释放请求,操作执行模块730可以响应于该内存释放请求,释放该内存释放请求所指定的虚拟页,并将该虚拟页的状态置为空闲。
在一种实施例中,内存操作请求可以包括容量扩充请求,操作执行模块730可以响应于该容量扩充请求,从内存中获取满足该容量扩充请求的文件系统的新文件。将该新文件的物理页映射至所述虚拟地址空间的虚拟页,记录该新文件的物理页的映射关系,并将对应虚拟页的状态置为空闲。
其中,还可以响应于容量缩减请求,判断是否存在所有物理页所映射的虚拟页的状态均为空闲的文件。如果存在,解除该文件所有物理页与对应虚拟页的映射关系,并将所记录的该文件所有物理页的映射关系修改为未映射,将该文件所有物理页原先对应的虚拟页的状态修改为未映射。还可以响应于容量缩减请求,删除内存池对应的虚拟地址空间末尾的、状态为未映射的虚拟页的记录。具体地,虚拟地址空间中虚拟页的虚拟地址是连续并且有序的(通常按高地址到低地址排列)。可以判断在虚拟地址空间末尾是否存在状态为未映射的虚拟页,如果存在,则可以删除该虚拟页的记录。如果不存在,则不进行任何操作。
在一种实施例中,内存操作请求可以包括内存整理请求,操作执行模块730可以响应于该内存整理请求,确定状态为空闲的虚拟页对应的物理页中的目标物理页,确定状态为占用的虚拟页对应的物理页中的待整理物理页。而后将待整理物理页的数据移动至目标物理页,解除待整理物理页与该待整理物理页对应虚拟页的映射关系,并将该待整理物理页的映射关系置为未映射。还解除目标物理页与目标物理页对应虚拟页的映射关系,并将该目标物理页对应虚拟页的状态置为未映射。最后将目标物理页映射到待整理物理页原先对应的虚拟页,并更新目标物理页的映射关系。
此外,在一种实施例中,在接收容量缩减请求、响应于容量缩减请求进行容量缩减之前,操作执行模块730还可以先进行内存整理,以便后续的容量缩减可以达到更好的缩容效果。
在一种实施例中,内存操作请求可以包括内存恢复请求,操作执行模块730可以按照该内存恢复请求所携带的物理页的映射关系,将该物理页映射到内存池对应虚拟地址空间的相应虚拟页,并记录该映射关系。
内存管理装置700中各模块的具体处理已在前文结合图1~图5对内存管理方法200的说明中详细描述,此处不再赘述。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (16)
1.一种内存管理方法,包括步骤:
接收对当前内存池的内存操作请求,所述内存以文件系统中的文件形式在内存中存储数据,所述内存池预先将各内存中各文件的物理页映射至所述内存池对应的虚拟地址空间的虚拟页,并至少记录所述物理页与对应虚拟页的映射关系;以及
响应于所述内存操作请求,执行相应操作并更改所述内存池的相关记录。
2.如权利要求1所述的方法,其中,所述内存池还记录有所述虚拟地址空间中虚拟页的状态,所述内存操作请求包括内存申请请求,所述响应于所述内存操作请求,执行相应操作并更改所述内存池的相关记录的步骤包括:
响应于所述内存申请请求,从所述内存池的虚拟地址空间中获取满足所述内存申请请求、且状态为空闲的虚拟页;
分配该虚拟页,并将该虚拟页的状态置为占用。
3.如权利要求1所述的方法,其中,所述内存池还记录有所述虚拟地址空间中虚拟页的状态,所述内存操作请求包括内存释放请求,所述响应于所述内存操作请求,执行相应操作并更改所述内存池的相关记录的步骤包括:
响应于所述内存释放请求,释放所述内存释放请求所指定的虚拟页,并将该虚拟页的状态置为空闲。
4.如权利要求1所述的方法,其中,所述内存池还记录有所述虚拟地址空间中虚拟页的状态,所述内存操作请求包括容量扩充请求,所述响应于所述内存操作请求,执行相应操作并更改所述内存池的相关记录的步骤包括:
响应于所述容量扩充请求,从所述内存中获取满足所述容量扩充请求的所述文件系统的新文件;
将所述新文件的物理页映射至所述虚拟地址空间的虚拟页;
记录所述新文件的物理页的映射关系,并将对应虚拟页的状态置为空闲。
5.如权利要求1所述的方法,其中,所述内存池还记录有所述虚拟地址空间中虚拟页的状态,所述内存操作请求包括容量缩减请求,所述响应于所述内存操作请求,执行相应操作并更改所述内存池的相关记录的步骤包括:
响应于所述容量缩减请求,判断所述容量缩减请求所涉及的虚拟页的状态是否为空闲;
如果是,解除该虚拟页与该虚拟页对应物理页的映射关系,并将该虚拟页的状态和该虚拟页对应物理页的映射关系均置为未映射。
6.如权利要求5所述的方法,其中,所述响应于所述内存操作请求,执行相应操作并更改所述内存池的相关记录的步骤还包括:
响应于所述容量缩减请求,删除所述虚拟地址空间末尾的、状态为未映射的虚拟页的记录。
7.如权利要求1所述的方法,其中,所述内存池还记录有所述虚拟地址空间中虚拟页的状态,所述内存操作请求包括内存整理请求,所述响应于所述内存操作请求,执行相应操作并更改所述内存池的相关记录的步骤包括:
响应于所述内存整理请求,确定状态为空闲的虚拟页对应的物理页中的目标物理页;
确定状态为占用的虚拟页对应的物理页中的待整理物理页;
将所述待整理物理页的数据移动至所述目标物理页;
解除所述待整理物理页与所述待整理物理页对应虚拟页的映射关系,并将所述待整理物理页的映射关系置为未映射;
解除所述目标物理页与所述目标物理页对应虚拟页的映射关系,并将所述目标物理页对应虚拟页的状态置为未映射;
将所述目标物理页映射到所述待整理物理页原先对应的虚拟页,并更新所述目标物理页的映射关系。
8.如权利要求1所述的方法,其中,所述内存操作请求包括内存恢复请求,所述响应于所述内存操作请求,执行相应操作并更改所述内存池的相关记录的步骤包括:
按照所述内存恢复请求所指定的物理页的映射关系,将所述物理页映射至所述虚拟地址空间的相应虚拟页,并记录该映射关系。
9.如权利要求1-8中任一项所述的方法,其中,所述文件的数据根据所述文件所映射到的虚拟地址空间的虚拟地址来进行读写。
10.如权利要求1-8中任一项所述的方法,其中,所述内存为非易失性存储器。
11.一种内存管理方法,所述内存为非易失性存储器,所述方法包括步骤:
接收对当前内存池的内存操作请求,所述内存以文件系统中的文件形式在内存中存储数据,所述内存池预先将各内存中各文件的物理页映射至所述内存池对应的虚拟地址空间的虚拟页,并记录所述物理页与对应虚拟页的映射关系、以及所述虚拟地址空间中虚拟页的状态;以及
响应于所述内存操作请求,执行相应操作并更改所述内存池的相关记录。
12.一种内存容量扩充方法,所述内存为非易失性存储器,所述方法包括步骤:
接收对当前内存池的容量扩充请求,所述内存以文件系统中的文件形式在内存中存储数据,所述内存池预先将各内存中各文件的物理页映射至所述内存池对应的虚拟地址空间的虚拟页,并记录所述物理页与对应虚拟页的映射关系、以及所述虚拟地址空间中虚拟页的状态;
响应于所述容量扩充请求,从所述内存中获取满足所述容量扩充请求的所述文件系统的新文件;
将所述新文件的物理页映射至所述虚拟地址空间的虚拟页;以及
记录所述新文件的物理页的映射关系,并将对应虚拟页的状态置为空闲。
13.一种内存容量缩减方法,所述内存为非易失性存储器,所述方法包括步骤:
接收对当前内存池的容量缩减请求,所述内存以文件系统中的文件形式在内存中存储数据,所述内存池预先将各内存中各文件的物理页映射至所述内存池对应的虚拟地址空间的虚拟页,并记录所述物理页与对应虚拟页的映射关系、以及所述虚拟地址空间中虚拟页的状态;
响应于所述容量缩减请求,判断所述容量缩减请求所涉及的虚拟页的状态是否为空闲;以及
如果是,解除该虚拟页与该虚拟页对应物理页的映射关系,并将该虚拟页的状态和该虚拟页对应物理页的映射关系均置为未映射。
14.一种内存整理方法,所述内存为非易失性存储器,所述方法包括步骤:
接收对当前内存池的内存整理请求,所述内存以文件系统中的文件形式在内存中存储数据,所述内存池预先将各内存中各文件的物理页映射至所述内存池对应的虚拟地址空间的虚拟页,并记录所述物理页与对应虚拟页的映射关系、以及所述虚拟地址空间中虚拟页的状态;
响应于所述内存整理请求,确定状态为空闲的虚拟页对应的物理页中的目标物理页,并确定状态为占用的虚拟页对应的物理页中的待整理物理页;
将所述待整理物理页的数据移动至所述目标物理页;
解除所述待整理物理页与所述待整理物理页对应虚拟页的映射关系,并将所述待整理物理页的映射关系置为未映射;
解除所述目标物理页与所述目标物理页对应虚拟页的映射关系,并将所述目标物理页对应虚拟页的状态置为未映射;以及
将所述目标物理页映射到所述待整理物理页原先对应的虚拟页,并更新所述目标物理页的映射关系。
15.一种内存管理装置,包括:
请求接收模块,适于接收对当前内存池的内存操作请求,所述内存以文件系统中的文件形式在内存中存储数据,所述内存池预先将各内存中各文件的物理页映射至所述内存池对应的虚拟地址空间的虚拟页;
数据记录模块,适于至少记录所述物理页与对应虚拟页的映射关系;以及
操作执行模块,适于响应于所述内存操作请求,执行相应操作并更改所述数据记录模块中所述内存池的相关记录。
16.一种计算设备,包括:
至少一个处理器;和
存储有程序指令的存储器,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-14中任一项所述的方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910009365.3A CN111414248B (zh) | 2019-01-04 | 2019-01-04 | 内存管理方法、装置及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910009365.3A CN111414248B (zh) | 2019-01-04 | 2019-01-04 | 内存管理方法、装置及计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111414248A CN111414248A (zh) | 2020-07-14 |
CN111414248B true CN111414248B (zh) | 2023-03-21 |
Family
ID=71490613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910009365.3A Active CN111414248B (zh) | 2019-01-04 | 2019-01-04 | 内存管理方法、装置及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111414248B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737016B (zh) * | 2020-08-17 | 2020-11-03 | 上海飞旗网络技术股份有限公司 | 一种面向云边融合系统的业务数据处理方法及装置 |
CN111813710B (zh) * | 2020-09-11 | 2021-02-05 | 鹏城实验室 | 避免Linux内核内存碎片方法、设备及计算机存储介质 |
CN112148229B (zh) * | 2020-10-12 | 2024-01-30 | 北京计算机技术及应用研究所 | 一种飞腾服务器平台下的加速非易失性内存读写效率的方法 |
CN112256598B (zh) * | 2020-10-27 | 2022-10-28 | 上海壁仞智能科技有限公司 | 一种内存分配的方法及装置、内存寻址的方法及装置 |
CN112764925A (zh) * | 2021-01-18 | 2021-05-07 | 苏州浪潮智能科技有限公司 | 基于虚拟内存的数据存储方法、装置、设备及存储介质 |
CN113254198B (zh) * | 2021-04-30 | 2022-08-05 | 南开大学 | 融合Linux虚拟内存系统和文件系统的持久性内存统一管理方法 |
CN113138803B (zh) * | 2021-05-12 | 2023-03-24 | 类人思维(山东)智慧科技有限公司 | 一种计算机编程用指令集存储系统 |
CN117667369A (zh) * | 2022-08-26 | 2024-03-08 | 华为云计算技术有限公司 | 内存管理方法、电子设备、芯片系统及可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6725321B1 (en) * | 1999-02-17 | 2004-04-20 | Lexar Media, Inc. | Memory system |
CN101288054A (zh) * | 2004-07-30 | 2008-10-15 | M-系统快闪盘开拓者公司 | 快闪文件系统中的虚拟至物理地址翻译 |
CN103412822A (zh) * | 2013-07-26 | 2013-11-27 | 华为技术有限公司 | 操作非易失性内存和数据操作的方法和相关装置 |
CN105580010A (zh) * | 2014-09-01 | 2016-05-11 | 华为技术有限公司 | 访问文件的方法、装置和存储系统 |
CN105579977A (zh) * | 2014-09-01 | 2016-05-11 | 华为技术有限公司 | 访问文件的方法、装置及存储系统 |
CN105830022A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 访问文件的方法和装置 |
CN105830059A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 文件访问方法、装置及存储设备 |
-
2019
- 2019-01-04 CN CN201910009365.3A patent/CN111414248B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6725321B1 (en) * | 1999-02-17 | 2004-04-20 | Lexar Media, Inc. | Memory system |
CN101288054A (zh) * | 2004-07-30 | 2008-10-15 | M-系统快闪盘开拓者公司 | 快闪文件系统中的虚拟至物理地址翻译 |
CN103412822A (zh) * | 2013-07-26 | 2013-11-27 | 华为技术有限公司 | 操作非易失性内存和数据操作的方法和相关装置 |
CN105580010A (zh) * | 2014-09-01 | 2016-05-11 | 华为技术有限公司 | 访问文件的方法、装置和存储系统 |
CN105579977A (zh) * | 2014-09-01 | 2016-05-11 | 华为技术有限公司 | 访问文件的方法、装置及存储系统 |
CN105830022A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 访问文件的方法和装置 |
CN105830059A (zh) * | 2014-11-28 | 2016-08-03 | 华为技术有限公司 | 文件访问方法、装置及存储设备 |
Non-Patent Citations (3)
Title |
---|
Jie Huang等.Virtual Page Behavior Based Page Management Policy for Hybrid Main Memory in Cloud Computing.2017,全文. * |
张云鹏.一种基于虚拟分区页映射的闪存FTL设计.2016,(第undefined期),全文. * |
陈龙 ; 敬凯 ; 董振兴 ; 田庆宜 ; .基于EPROCESS特征的物理内存查找方法.2013,第25卷(第01期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111414248A (zh) | 2020-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111414248B (zh) | 内存管理方法、装置及计算设备 | |
US10067684B2 (en) | File access method and apparatus, and storage device | |
TWI739859B (zh) | 操作對多重名稱空間進行管理的儲存裝置的方法 | |
US11748256B2 (en) | Memory system and method for controlling nonvolatile memory | |
US11055230B2 (en) | Logical to physical mapping | |
KR102137761B1 (ko) | 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법 | |
WO2016082191A1 (zh) | 访问文件的方法和装置 | |
TWI764265B (zh) | 用於將資料連結至記憶體命名空間的記憶體系統 | |
US9058268B1 (en) | Apparatus, system and method for memory management | |
US20120137055A1 (en) | Hybrid memory system and method managing the same | |
CN108595349B (zh) | 大容量存储设备的地址转换方法与装置 | |
US11237980B2 (en) | File page table management technology | |
CN111919201A (zh) | 混合式存储器系统 | |
US10146440B2 (en) | Apparatus, system and method for offloading collision check operations in a storage device | |
CN110928803A (zh) | 一种内存管理方法及装置 | |
US11835992B2 (en) | Hybrid memory system interface | |
CN115079957A (zh) | 请求处理方法、装置、控制器、设备及存储介质 | |
US12038852B2 (en) | Partial logical-to-physical (L2P) address translation table for multiple namespaces | |
JP7524443B2 (ja) | メモリシステムおよび制御方法 | |
JP7204020B2 (ja) | 制御方法 | |
JP7167295B2 (ja) | メモリシステムおよび制御方法 | |
JP2023021450A (ja) | メモリシステム | |
JP2022179798A (ja) | メモリシステムおよび制御方法 | |
CN116257176A (zh) | 数据存储系统、数据存储方法和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |