CN112445767A - 内存管理方法及装置、电子设备、存储介质 - Google Patents
内存管理方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN112445767A CN112445767A CN202011371937.1A CN202011371937A CN112445767A CN 112445767 A CN112445767 A CN 112445767A CN 202011371937 A CN202011371937 A CN 202011371937A CN 112445767 A CN112445767 A CN 112445767A
- Authority
- CN
- China
- Prior art keywords
- memory
- file
- kernel
- function
- memory page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1737—Details of further file system functions for reducing power consumption or coping with limited storage space, e.g. in mobile devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及数据存储技术领域,揭露了一种内存管理方法及装置、电子设备、存储介质,包括:在用户进程访问目标文件的虚拟地址之前,通过调用建议内核函数输入指定参数,其中,所述指定参数用于为内核层进行内存管理提供建议;根据所述指定函数将所述目标文件的文件内容映射到内核层;通过内存管理单元更新内存页表,其中,所述内存页表用于存放所述目标文件在所述内核层的物理地址与所述目标文件在用户层的虚拟地址的映射关系。本发明还涉及区块链技术,将所述目标文件写入区块链节点中。通过本发明,解决了相关技术中因缺页错误的消耗占用较大内存开销的技术问题。
Description
技术领域
本发明涉及数据存储领域,具体而言,涉及一种内存管理方法及装置、电子设备、存储介质。
背景技术
相关技术中,计算机在使用传统IO(全称为Input/Output,即输入/输出)系统通过调用函数进行数据读写时,需要先从磁盘空间复制文件页到内核空间的缓存中,再从内核空间将文件页拷贝到用户空间的文件页。为解决这种两层拷贝的问题,出现了mmap内存映射。该方法实现了用户空间和内核空间的数据直接交互,可以减少一层拷贝,省去了空间不同数据不通的繁琐过程,因此mmap效率高。但随着硬件技术的发展,当前内存拷贝消耗的时间已经极大降低了,并且mmap在进行缺页中断操作时,会占用很大的内存开销,因此mmap内存映射依然存在需要优化的地方。
针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。
发明内容
本发明实施例提供了一种内存管理方法及装置、电子设备、存储介质,以至少解决了相关技术中因缺页错误的消耗占用较大内存开销的技术问题。
根据本发明的一个实施例,提供了一种内存管理方法,该方法包括:在用户进程访问目标文件的虚拟地址之前,通过调用建议内核函数输入指定参数,其中,所述指定参数用于为内核层进行内存管理提供建议;根据所述指定参数将所述目标文件的文件内容映射到内核层;通过内存管理单元更新内存页表,其中,所述内存页表用于存放所述目标文件在所述内核层的物理地址与所述目标文件在用户层的虚拟地址的映射关系。
可选的,所述通过调用建议内核函数输入指定参数至少包括以下之一:通过调用建议内核函数输入标志信号,其中,所述标志信号用于为预读所述目标文件准备所述内存页表;通过调用建议内核函数输入顺序访问函数,其中,所述顺序访问函数用于按照指定顺序预读所述文件内容;通过调用建议内核函数输入MADV_WILLNEED函数;通过调用建议内核函数输入大内存页函数。
可选的,所述根据所述指定参数将所述目标文件的文件内容映射到内核层包括:在磁盘层为所述文件内容分配目标数据块,并在所述内核层为所述文件内容分配对应的物理内存页;将所述目标数据块中的文件内容复制到所述物理内存页。
可选的,所述将所述目标数据块中的文件内容复制到所述物理内存页至少包括以下之一:根据所述建议内核函数输入的顺序访问函数将所述文件内容复制到所述物理内存页;根据所述建议内核函数输入的MADV_WILLNEED函数将所述文件内容复制到所述物理内存页。
可选的,所述根据所述建议内核函数输入的MADV_WILLNEED函数将所述文件内容复制到所述物理内存页包括:根据所述MADV_WILLNEED函数和所述用户进程的需求调整预读所述文件内容的长度。
可选的,所述通过内存管理单元更新内存页表包括:根据所述建议内核函数配置MAP_POPULATE标志信号提供所述内存页表,其中,所述内存页表与所述用户进程对应;通过关联所述内核层的物理内存页与用户层的虚拟内存页更新所述内存页表。
可选的,所述方法还包括:将所述目标文件以块链式机制进行存储。
根据本发明的一个实施例,提供了一种内存管理装置,包括:输入模块,用于在用户进程访问目标文件的虚拟地址之前,通过调用建议内核函数输入指定参数,其中,所述指定参数用于为内核层进行内存管理提供建议;映射模块,用于根据所述指定参数将所述目标文件的文件内容映射到内核层;更新模块,用于通过内存管理单元更新内存页表,其中,所述内存页表用于存放所述目标文件在所述内核层的物理地址与所述目标文件在用户层的虚拟地址的映射关系。
可选的,所述输入模块至少包括以下之一:第一输入单元,用于通过调用建议内核函数输入标志信号,其中,所述标志信号用于为预读所述目标文件准备所述内存页表;第二输入单元,用于通过调用建议内核函数输入顺序访问函数,其中,所述顺序访问函数用于按照指定顺序预读所述文件内容;第三输入单元,用于通过调用建议内核函数输入MADV_WILLNEED函数;第四输入单元,用于通过调用建议内核函数输入大内存页函数。
可选的,所述映射模块包括:分配单元,用于在磁盘层为所述文件内容分配目标数据块,并在所述内核层为所述文件内容分配对应的物理内存页;复制单元,用于将所述目标数据块中的文件内容复制到所述物理内存页。
可选的,所述复制单元至少包括以下之一:第一复制子单元,用于根据所述建议内核函数输入的顺序访问函数将所述文件内容复制到所述物理内存页;第二复制子单元,用于根据所述建议内核函数输入的MADV_WILLNEED函数将所述文件内容复制到所述物理内存页。
可选的,所述第二复制子单元还用于:根据所述MADV_WILLNEED函数和所述用户进程的需求调整预读所述文件内容的长度。
可选的,所述更新模块包括:提供单元,用于根据所述建议内核函数配置MAP_POPULATE标志信号提供所述内存页表,其中,所述内存页表与所述用户进程对应;更新单元,用于通过关联所述内核层的物理内存页与用户层的虚拟内存页更新所述内存页表。
可选的,所述装置还包括:存储模块,用于将所述目标文件以块链式机制进行存储。
根据本发明的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项装置实施例中的步骤。
通过本发明,在用户进程访问目标文件的虚拟地址之前,通过调用建议内核函数输入指定参数,为内核层进行内存管理提供建议;然后根据所述指定参数将所述目标文件的文件内容映射到内核层,提前预读文件内容到映射区域;通过内存管理单元更新内存页表,从而实现了预先分页更新页表,节省了内存映射下系统读写文件的时间,解决了相关技术中因缺页错误的消耗占用较大内存开销的技术问题,进而节约了页错误的空间浪费。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种内存管理方法应用于计算机终端的硬件结构框图;
图2是根据本发明实施例的一种内存管理方法的流程图;
图3是根据本发明实施例提供的用户层、磁盘层和内核层三者之间的交互示意图;
图4是根据本发明实施例提供的一种内存分页示意图;
图5是根据本发明实施例提供的计算机内存映射的优化方法;
图6是根据本发明实施例的一种内存管理装置的结构框图;
图7是根据本发明实施例的一种电子设备的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
实施例1
本申请实施例一所提供的方法实施例可以在移动终端、服务器、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的一种内存管理方法应用于计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的内存管理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器,也可以包括易失性存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
mmap在进行page fault(缺页中断)操作时,会占用很大的内存开销,例如,(1)在对mmap文件读写更新频繁时,mmap避免用户层和内核层两层拷贝的时间优势远远小于pagefault的消耗;(2)在mmap之后,再有读操作不会经过传统IO(全称为Input/Output,即输入/输出)系统调用,在LRU(全称为Least Recently Used,即最近很少使用)缓存淘汰页算法比较最近使用的页时,不够灵活;(3)大范围的mmap会给TLB(全称为TranslationLookaside Buffer,即转换检测缓冲区)将虚拟地址转译到物理地址带来很大负担,降低整个系统的性能;(4)在高性能服务器中,临时进行内存分配时,系统内存比较乱,不清楚从哪个numa(全称为Non Uniform Memory Access Architecture,即非统一内存访问架构)节点去分配系统内存,分配的节点无法准确指定;分配时间不可控,极端时,会发生内存短缺,会置换出被淘汰的内存页面;读文件这个时间不可控,系统可能会被挂起去等待IO动作完成。
为了解决上述问题,在本实施例中提供了一种内存管理方法,该方法应用于操作系统,对计算机内存映射进行优化。
本方案的分页的基本方法是:将地址空间分成许多的页,每页的大小由CPU(全称为Central Processing Unit/Processor,即中央处理单元/器)决定,然后由操作系统选择页的大小。分页的思想是程序运行时用到哪页就为哪页分配内存,没用到的页暂时保留在硬盘上。例如,当可执行PE文件执行第x页时,就为第x页分配一个内存页y,然后再将这个内存页添加到进程虚拟地址空间的映射表中,这个映射表就相当于一个y=f(x)函数。应用程序通过这个映射表就可以访问到x页关联的y内存页了。
在本案的一个应用场景中,以linux操作系统为例,Inter系列的CPU支持4KB或4MB的页大小,而PC(全称为personal computer,即个人计算机)上目前都选择使用4KB,按这种选择,4GB虚拟地址空间共可以分成1048576个页,512M的物理内存可以分为131072个页。显然,虚拟空间的页数要比物理空间的页数多得多。虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同位数的系统,地址空间的范围也不同,以32位系统为例,内核空间占用1G,位于高处,剩下的3G是用户空间。另外,进程在用户态时,只能访问用户空间内存,只有进入内核态后,才可以访问内核空间的内存;每个进程的内核空间都是一致的。
当启用大量的进程时,操作系统会把不长使用的内存暂时存放到磁盘(即换出),在需要的时候再装载回物理内存(即换入);页表存储了进程中虚拟地址到物理地址的映射关系;MMU(全称为Memory Management Unit,即内存管理单元)收到CPU的虚拟地址之后开始查询页表,确定是否存在映射以及读写权限是否正常。
图2是根据本发明实施例的一种内存管理方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,在用户进程访问目标文件的虚拟地址之前,通过调用建议内核函数输入指定参数,其中,指定参数用于为内核层进行内存管理提供建议;
步骤S204,根据指定参数将目标文件的文件内容映射到内核层;
步骤S206,通过内存管理单元更新内存页表,其中,内存页表用于存放目标文件在内核层的物理地址与目标文件在用户层的虚拟地址的映射关系。
需要强调的是,为进一步保证上述目标文件的私密和安全性,上述目标文件还可以存储于一区块链的节点中。
本发明实施例提供的内存管理方法,在用户进程访问目标文件的虚拟地址之前,通过调用建议内核函数输入指定参数,为内核层进行内存管理提供建议;然后根据所述指定函数将所述目标文件的文件内容映射到内核层,提前预读文件内容到映射区域;通过内存管理单元更新内存页表,从而实现了预先分页更新页表,节省了内存映射下系统读写文件的时间,解决了相关技术中因缺页错误的消耗占用较大内存开销的技术问题,进而节约了页错误的空间浪费。
图3是根据本发明实施例提供的用户层、磁盘层和内核层三者之间的交互示意图,如图3所示,计算机在使用read(读)、write(写)等传统IO的系统调用函数进行数据读写时,需要先从磁盘空间复制文件页到内核空间的缓存之中,再从内核空间将文件页拷贝到用户空间的文件页。
当用户层进程访问虚拟地址空间中的PAGE(页)时,如果这个PAGE目前不在物理内存中,此时CPU是不能干活的,操作系统会产生一个page fault中断;操作系统需要从慢速设备(如磁盘)将对应的数据page读入物理内存,并建立物理内存地址与虚拟地址空间PAGE的映射关系;然后进程从刚才发生页错误的位置重新开始执行,进而才能访问这部分虚拟地址空间的内存。
在本案的一个可能的实现方式中,操作系统以linux系统为例,由于CPU在MMU开启的情况下,访问的都是虚拟地址,通过在用户进程访问目标文件的虚拟地址之前(例如在操作系统内存干净时),linux系统提供建议内核函数madvise(),可以通过madvise()函数输入特定的参数,来给内核进行内存管理提供建议,使用该函数可以提高系统性能;然后内核层根据根据操作系统提供的建议会做一些预读的操作,即提前预读文件内容到映射区域,可以实现对需要的内存或者数据进行预处理;最后通过MMU建立用户层的虚拟地址与内核层的物理地址之间的映射关系,并更新内存页表,来节省mmap内存映射下系统读写文件的时间,不仅能够减少页错误的次数,还能够实现多线程的预处理,提高了进程执行文件的效率,且节约了缺页错误的空间浪费。
在本案的一个可选的实施例中,通过调用建议内核函数输入指定参数至少包括以下之一:通过调用建议内核函数输入标志信号,其中,标志信号用于为预读目标文件准备内存页表;通过调用建议内核函数输入顺序访问函数,其中,顺序访问函数用于按照指定顺序预读文件内容;通过调用建议内核函数输入MADV_WILLNEED函数;通过调用建议内核函数输入大内存页函数。
在本案的一个实施例中,传统页表大小只有4KB,随着现在技术发展,现代处理器架构可以处理更大的页表,可以采用大页支持,比如2MB大小的页表,采用大页支持可以大大减少mmap内存映射下系统读写文件的时间。
例如,在访问数据时,内核会检查数据所在分页是否在内存,如果不在,则发出一次缺页中断,linux默认分页为4K,读一个将近2G的电影文件要发生52万次中断。所以如果内核内核配置有CONFIG_TRANSPARENT_HUGEPAGE(即配置透明大页函数)时,就可以支持大页分页。在madvise()函数中设置MADV_HUGEPAGE函数(即上述大内存页函数)即可。如图4所示,图4是根据本发明实施例提供的一种内存分页示意图。
通过采用Prefetch预读取文件夹,以存放系统已访问过的文件的预读信息,可以加快系统启动的进程,从而提高读写文件的效率。
在本案的一个可选的实施例中,根据指定参数将目标文件的文件内容映射到内核层包括:在磁盘层为文件内容分配目标数据块,并在内核层为文件内容分配对应的物理内存页;将目标数据块中的文件内容复制到物理内存页。
在本实施例中,本方案中的mmap的内存映射操作体现在major page fault中,major page fault也称为hard page fault,即硬件缺页错误/主要缺页错误,指需要访问的内存不在虚拟地址空间,也不在物理内存中,需要从慢速设备载入。
页表存储在CPU的内存管理单元中,CPU可以直接通过MMU查找实际要访问的物理内存地址。用户层进程第一次访问虚拟地址或虚拟地址在页表中查不到(即从用户层访问不到该文件页的虚拟地址),由于mmap分页范围有限,当mmap范围过大超过限度时,发生缺页异常,本方案通过在发生page fault之前,在磁盘层文件系统中分配该文件区域对应的block(数据块);并在内核层为该文件页(即上述x页)分配一个空闲物理内存页(即上述内存页y)。
现有的mmap调用时并不会把整个文件都映射进内存,而是按需分配页表;此外,当执行文件的大小超过可用内存大小时,或者用户仅需要访问文件中的一部分时,mmap只是对文件的部分内容进行分页然后映射。通过本方案可以预先把整个文件提前进行分页,减少了临时中断的产生,进而减少了因缺页错误占用的消耗,从而节约存储空间,并且提高了文件读取效率。
在本发明实施例中提供一种可能的实现方式中,将目标数据块中的文件内容复制到物理内存页至少包括以下之一:根据建议内核函数输入的顺序访问函数将文件内容复制到物理内存页;根据建议内核函数输入的MADV_WILLNEED函数将文件内容复制到物理内存页。在本实施例中,应用程序在读写大文件时,通过madvise()输入特定的参数,请求操作系统协助预取。例如,输入MADV_SEQUENTIAL函数(即上述顺序访问函数),即指示顺序预读;或者MADV_WILLNEED函数,即预计不久将来访问函数。
在本案的一个实施例中,根据建议内核函数输入的MADV_WILLNEED函数将文件内容复制到物理内存页包括:根据MADV_WILLNEED函数和用户进程的需求调整预读文件内容的长度。在本实施例中,通过madvise()函数输入预计不久将来访问函数MADV_WILLNEED,用于建议操作系统会在不久将来预读指定长度的文件;可选地,本方案采用的预处理方案相比之前固定的全部的预先加载,可以根据使用情况灵活预先处理;每次预处理长度的算法可以根据实际应用灵活调整,进行多线程的预处理,从而大大减少mmap内存映射下系统读写文件的空间浪费。
在本发明实施例中提供一种可能的实现方式中,通过内存管理单元更新内存页表包括:根据建议内核函数配置MAP_POPULATE标志信号提供内存页表,其中,内存页表与用户进程对应;通过关联内核层的物理内存页与用户层的虚拟内存页更新内存页表。
在本实施例中,通过madvise()函数设置MAP_POPULATE标志信号,进行预处理预先分页。其中,MAP_POPULATE为文件映射通过预读的方式准备好页表,随后对映射区的访问不会被页违例阻塞。通过populate预先分页更新页表,提前预读文件内容到映射区域,可以大大节省mmap内存映射下系统读写文件的时间;避免发生缺页错误,从而节约缺页错误的消耗。另外,本实施例中的POPULATE支持私有映射和共享映射。
其中,MMU负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权、多任务多进程操作系统。分页机制包括以下两种:如果处理器没有MMU,或者有MMU但没有启用,CPU执行单元发出的内存地址将直接传到芯片引脚上,被内存芯片;如果处理器启用了MMU,CPU执行单元发出的内存地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(全称为Virtual Address,以下简称VA),而MMU将这个地址翻译成另一个地址发到CPU芯片的外部地址引脚上,也就是将VA映射成PA。大多数使用MMU的机器都采用分页机制。虚拟地址空间以页为单位进行划分,而相应的物理地址空间也被划分,其使用的单位称为页帧,页帧和页必须保持相同,因为内存与外部存储器之间的传输是以页为单位进行传输的。例如,MMU可以通过一个映射项将VA的一页0xb70010000xb7001fff映射到PA的一页0x20000x2fff,如果CPU执行单元要访问虚拟地址0xb7001008,则实际访问到的物理地址是0x2008。
由于现有的缺页错误方案是不会进行预分页的,而通过上述实施步骤,可以进行预分页,在特定的情况下能够提高读写效率。
上述实施步骤流程参见图5,图5是根据本发明实施例提供的计算机内存映射的优化方法。
在本案的一个可能实现方式中,还包括:将目标文件以块链式机制进行存储。需要强调的是,为进一步保证上述目标文件的私密和安全性,上述目标文件还可以存储于一区块链的节点中。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
通过上述实施步骤,本发明实施例具有以下优势:
(1)采用Prefault预处理,可以节省page fault的时间开销。比如在用128Bytes的数据块去写入256MB mmap区间的情况下,使用Prefault进行预先分页可以减少60%的系统读写文件的时间。
(2)通过Prefech动态预处理,在运行的过程中不是固定大小地预处理文件,而是根据使用情况灵活预先处理;每次预处理长度的算法还可以根据实际应用(即用户进程的需求)具体调整,进行多线程的预处理,避免浪费,减少系统读写文件的空间的使用。
(3)通过大页支持,可以在系统进入内核空间分配物理内存、更新进程页表的过程中,大大减少访问同样内存大小所需的page fault数量和转换后备缓冲区TLB(用于改进虚拟地址到物理地址转换速度的缓存)压力,从而提高了内存访问的性能,减少了CPU缓存的使用,在整体上提升系统的性能。
实施例2
在本实施例中还提供了一种内存管理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图6是根据本发明实施例的一种内存管理装置的结构框图,如图6所示,该装置包括:输入模块60,用于在用户进程访问目标文件的虚拟地址之前,通过调用建议内核函数输入指定参数,其中,指定参数用于为内核层进行内存管理提供建议;映射模块62,连接至上述输入模块60,用于根据指定参数将目标文件的文件内容映射到内核层;更新模块64,连接至上述映射模块62,用于通过内存管理单元更新内存页表,其中,内存页表用于存放目标文件在内核层的物理地址与目标文件在用户层的虚拟地址的映射关系。
可选的,输入模块60至少包括以下之一:第一输入单元,用于通过调用建议内核函数输入标志信号,其中,标志信号用于为预读目标文件准备内存页表;第二输入单元,用于通过调用建议内核函数输入顺序访问函数,其中,所述顺序访问函数用于按照指定顺序预读所述文件内容;第三输入单元,用于通过调用建议内核函数输入MADV_WILLNEED函数;第四输入单元,用于通过调用建议内核函数输入大内存页函数。
可选的,映射模块62包括:分配单元,用于在磁盘层为文件内容分配目标数据块,并在内核层为文件内容分配对应的物理内存页;复制单元,用于将目标数据块中的文件内容复制到物理内存页。
可选的,复制单元至少包括以下之一:第一复制子单元,用于根据建议内核函数输入的顺序访问函数将文件内容复制到物理内存页;第二复制子单元,用于根据建议内核函数输入的MADV_WILLNEED函数将文件内容复制到物理内存页。
可选的,第二复制子单元还用于:根据MADV_WILLNEED函数和用户进程的需求调整预读文件内容的长度。
可选的,更新模块64包括:提供单元,用于根据建议内核函数配置MAP_POPULATE标志信号提供内存页表,其中,内存页表与用户进程对应;更新单元,用于通过关联内核层的物理内存页与用户层的虚拟内存页更新内存页表。
可选的,上述装置还包括:存储模块,用于将目标文件以块链式机制进行存储。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例3
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,在用户进程访问目标文件的虚拟地址之前,通过调用建议内核函数输入指定参数,其中,所述指定参数用于为内核层进行内存管理提供建议;
S2,根据所述指定函数将所述目标文件的文件内容映射到内核层;
S3,通过内存管理单元更新内存页表,其中,所述内存页表用于存放所述目标文件在所述内核层的物理地址与所述目标文件在用户层的虚拟地址的映射关系。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
需要强调的是,为进一步保证上述目标文件的私密和安全性,上述目标文件还可以存储于一区块链的节点中。
基于上述图2所示方法和图6所示装置的实施例,为了实现上述目的,本申请实施例还提供了一种电子设备,如图7所示,包括存储器72和处理器71,其中存储器72和处理器71均设置在总线73上存储器72存储有计算机程序,处理器71执行计算机程序时实现图2所示的内存管理方法。
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个存储器(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
可选地,该设备还可以连接用户接口、网络接口、摄像头、射频(Radio Frequency,RF)电路,传感器、音频电路、WI-FI模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、WI-FI接口)等。
本领域技术人员可以理解,本实施例提供的一种电子设备的结构并不构成对该实体设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种内存管理方法,其特征在于,包括:
在用户进程访问目标文件的虚拟地址之前,通过调用建议内核函数输入指定参数,其中,所述指定参数用于为内核层进行内存管理提供建议;
根据所述指定参数将所述目标文件的文件内容映射到内核层;
通过内存管理单元更新内存页表,其中,所述内存页表用于存放所述目标文件在所述内核层的物理地址与所述目标文件在用户层的虚拟地址的映射关系。
2.根据权利要求1所述的方法,其特征在于,所述通过调用建议内核函数输入指定参数至少包括以下之一:
通过调用建议内核函数输入标志信号,其中,所述标志信号用于为预读所述目标文件准备所述内存页表;
通过调用建议内核函数输入顺序访问函数,其中,所述顺序访问函数用于按照指定顺序预读所述文件内容;
通过调用建议内核函数输入MADV_WILLNEED函数;
通过调用建议内核函数输入大内存页函数。
3.根据权利要求1所述的方法,其特征在于,所述根据所述指定参数将所述目标文件的文件内容映射到内核层包括:
在磁盘层为所述文件内容分配目标数据块,并在所述内核层为所述文件内容分配对应的物理内存页;
将所述目标数据块中的文件内容复制到所述物理内存页。
4.根据权利要求3所述的方法,其特征在于,所述将所述目标数据块中的文件内容复制到所述物理内存页至少包括以下之一:
根据所述建议内核函数输入的顺序访问函数将所述文件内容复制到所述物理内存页;
根据所述建议内核函数输入的MADV_WILLNEED函数将所述文件内容复制到所述物理内存页。
5.根据权利要求4所述的方法,其特征在于,所述根据所述建议内核函数输入的MADV_WILLNEED函数将所述文件内容复制到所述物理内存页包括:
根据所述MADV_WILLNEED函数和所述用户进程的需求调整预读所述文件内容的长度。
6.根据权利要求1所述的方法,其特征在于,所述通过内存管理单元更新内存页表包括:
根据所述建议内核函数配置MAP_POPULATE标志信号提供所述内存页表,其中,所述内存页表与所述用户进程对应;
通过关联所述内核层的物理内存页与用户层的虚拟内存页更新所述内存页表。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述方法还包括:
将所述目标文件以块链式机制进行存储。
8.一种内存管理装置,其特征在于,包括:
输入模块,用于在用户进程访问目标文件的虚拟地址之前,通过调用建议内核函数输入指定参数,其中,所述指定参数用于为内核层进行内存管理提供建议;
映射模块,用于根据所述指定参数将所述目标文件的文件内容映射到内核层;
更新模块,用于通过内存管理单元更新内存页表,其中,所述内存页表用于存放所述目标文件在所述内核层的物理地址与所述目标文件在用户层的虚拟地址的映射关系。
9.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011371937.1A CN112445767A (zh) | 2020-11-30 | 2020-11-30 | 内存管理方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011371937.1A CN112445767A (zh) | 2020-11-30 | 2020-11-30 | 内存管理方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112445767A true CN112445767A (zh) | 2021-03-05 |
Family
ID=74738626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011371937.1A Pending CN112445767A (zh) | 2020-11-30 | 2020-11-30 | 内存管理方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445767A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113076266A (zh) * | 2021-06-04 | 2021-07-06 | 深圳华云信息系统有限公司 | 一种内存管理方法、装置、电子设备及存储介质 |
CN114422452A (zh) * | 2021-12-14 | 2022-04-29 | 杭州安恒信息安全技术有限公司 | 数据传输方法、装置、处理设备、存储介质和芯片 |
CN115858046A (zh) * | 2023-02-28 | 2023-03-28 | 荣耀终端有限公司 | 一种预加载内存页的方法、电子设备及芯片系统 |
CN116089032A (zh) * | 2022-12-26 | 2023-05-09 | 中用科技有限公司 | 通过自适应配置的快速移动应用程序切换方法及存储介质 |
CN116701248A (zh) * | 2022-02-24 | 2023-09-05 | 象帝先计算技术(重庆)有限公司 | 页表管理方法、单元、soc、电子设备及可读存储介质 |
-
2020
- 2020-11-30 CN CN202011371937.1A patent/CN112445767A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113076266A (zh) * | 2021-06-04 | 2021-07-06 | 深圳华云信息系统有限公司 | 一种内存管理方法、装置、电子设备及存储介质 |
CN113076266B (zh) * | 2021-06-04 | 2021-10-29 | 深圳华云信息系统有限公司 | 一种内存管理方法、装置、电子设备及存储介质 |
CN114422452A (zh) * | 2021-12-14 | 2022-04-29 | 杭州安恒信息安全技术有限公司 | 数据传输方法、装置、处理设备、存储介质和芯片 |
CN116701248A (zh) * | 2022-02-24 | 2023-09-05 | 象帝先计算技术(重庆)有限公司 | 页表管理方法、单元、soc、电子设备及可读存储介质 |
CN116701248B (zh) * | 2022-02-24 | 2024-04-30 | 象帝先计算技术(重庆)有限公司 | 页表管理方法、单元、soc、电子设备及可读存储介质 |
CN116089032A (zh) * | 2022-12-26 | 2023-05-09 | 中用科技有限公司 | 通过自适应配置的快速移动应用程序切换方法及存储介质 |
CN116089032B (zh) * | 2022-12-26 | 2023-09-05 | 中用科技有限公司 | 通过自适应配置的快速移动应用程序切换方法及存储介质 |
CN115858046A (zh) * | 2023-02-28 | 2023-03-28 | 荣耀终端有限公司 | 一种预加载内存页的方法、电子设备及芯片系统 |
CN115858046B (zh) * | 2023-02-28 | 2023-07-21 | 荣耀终端有限公司 | 一种预加载内存页的方法、电子设备及芯片系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112445767A (zh) | 内存管理方法及装置、电子设备、存储介质 | |
US9064330B2 (en) | Shared virtual memory between a host and discrete graphics device in a computing system | |
US10120832B2 (en) | Direct access to local memory in a PCI-E device | |
US8250254B2 (en) | Offloading input/output (I/O) virtualization operations to a processor | |
US20090024820A1 (en) | Memory Allocation For Crash Dump | |
US6920521B2 (en) | Method and system of managing virtualized physical memory in a data processing system | |
US6907494B2 (en) | Method and system of managing virtualized physical memory in a memory controller and processor system | |
US7523260B2 (en) | Propagating data using mirrored lock caches | |
JP3264319B2 (ja) | バスブリッジ | |
US20070162641A1 (en) | Method and apparatus for utilizing platform support for direct memory access remapping by remote DMA ("RDMA")-capable devices | |
US9208088B2 (en) | Shared virtual memory management apparatus for providing cache-coherence | |
GB2440617A (en) | Page table access by a graphics processor | |
US9146879B1 (en) | Virtual memory management for real-time embedded devices | |
KR100515229B1 (ko) | 멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템 | |
US7197605B2 (en) | Allocating cache lines | |
EP3163451B1 (en) | Memory management method and device, and memory controller | |
CN113039531B (zh) | 用于分配缓存资源的方法、系统和存储介质 | |
US10268592B2 (en) | System, method and computer-readable medium for dynamically mapping a non-volatile memory store | |
US20220318158A1 (en) | Technologies for memory tagging | |
EP0674269A2 (en) | Translation mechanism for input/output addresses | |
JP3808058B2 (ja) | 複数のホストが圧縮データを記憶するメモリ・セクタの集合を共用できるようにするための装置 | |
EP1103898A2 (en) | Microprocessor and memory | |
US11436150B2 (en) | Method for processing page fault by processor | |
JP3875358B2 (ja) | 記憶装置、記憶方法および記録媒体 | |
JPH02244253A (ja) | 分散共有メモリを持つマルチプロセッサシステム |
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 |