CN113312170B - 内存管理***及方法 - Google Patents

内存管理***及方法 Download PDF

Info

Publication number
CN113312170B
CN113312170B CN202010476952.6A CN202010476952A CN113312170B CN 113312170 B CN113312170 B CN 113312170B CN 202010476952 A CN202010476952 A CN 202010476952A CN 113312170 B CN113312170 B CN 113312170B
Authority
CN
China
Prior art keywords
memory management
management file
file
memory
updated
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
Application number
CN202010476952.6A
Other languages
English (en)
Other versions
CN113312170A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202010476952.6A priority Critical patent/CN113312170B/zh
Publication of CN113312170A publication Critical patent/CN113312170A/zh
Application granted granted Critical
Publication of CN113312170B publication Critical patent/CN113312170B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种内存管理***及方法。其中,该***包括:入口管理模块,用于提供虚拟内存管理的入口,接收对虚拟内存的访问请求,并将访问请求链接至内存管理模块提供的目标内存管理文件;内存管理模块,用于加载升级后的内存管理文件;并从升级后的内存管理文件中,调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理。本发明解决了由于现有技术中在VM运行期间vmem相关的模块无法被卸载替换造成的KVM虚拟机化下的相关热升级能力不能直接用于vmem的热升级的技术问题。

Description

内存管理***及方法
技术领域
本发明涉及虚拟机的内存管理领域,具体而言,涉及一种内存管理***及方法。
背景技术
在虚拟化场景下宿主机内存分配架构中,虚拟机的内存管理依赖于vmem相关模块对host的预留内存进行分配释放等管理。由于虚拟机内存是通过vmem提供的设备/dev/vmem(物理内存的全映像文件,能够访问物理内存)来创建,每申请一块内存,在VM运行期间,vmem模块的计数都会加1,直到VM释放后,相应的计数才会减1。这就导致vmem相关的模块,在VM运行期间,无法被卸载替换。但是作为虚拟化的基础组建,具备热升级能力是产品上线的必备功能,以应对产品的升级改造以及故障修复。目前KVM虚拟化下的相关热升级能力不能直接用于vmem的热升级。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种内存管理***及方法,以至少解决由于现有技术中在VM运行期间vmem相关的模块无法被卸载替换造成的KVM虚拟机化下的相关热升级能力不能直接用于vmem的热升级的技术问题。
根据本发明实施例的一个方面,提供了一种内存管理***,包括:入口管理模块,用于提供虚拟内存管理的入口,接收对虚拟内存的访问请求,并将访问请求链接至内存管理模块提供的目标内存管理文件;内存管理模块,用于加载升级后的内存管理文件;并从升级后的内存管理文件中,调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理。
根据本发明实施例的另一方面,还提供了一种内存管理方法,包括:通过入口管理模块接收对虚拟内存的访问请求,将访问请求链接至内存管理模块提供的目标内存管理文件;通过内存管理模块加载升级后的内存管理文件;并从升级后的内存管理文件中,调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理。
根据本发明实施例的另一方面,还提供了另一种内存管理方法,包括:通过内存管理模块加载升级后的内存管理文件,对升级后的内存管理文件进行初始化处理,得到初始化后的内存管理文件;通过将初始化后的内存管理文件对应的入口点信息赋值到设备驱动中,以及构建与升级后的内存管理文件对应的pro文件***,以对虚拟内存进行管理。
根据本发明实施例的另一方面,还提供了一种非易失性存储介质,非易失性存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行任意一种内存管理方法。
根据本发明实施例的另一方面,还提供了一种计算设备,包括:存储器,用于存储程序;处理器,处理器运行存储在存储器中的程序,其中,程序运行时执行如下处理步骤:通过入口管理模块接收对虚拟内存的访问请求,将访问请求链接至内存管理模块提供的目标内存管理文件;通过内存管理模块加载升级后的内存管理文件;并从升级后的内存管理文件中,调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理。
在本发明实施例中,采用解耦内存分配入口和内存管理的方式,通过入口管理模块,用于提供虚拟内存管理的入口,接收对虚拟内存的访问请求,并将访问请求链接至内存管理模块提供的目标内存管理文件;内存管理模块,用于加载升级后的内存管理文件;并从升级后的内存管理文件中,达到了调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理的目的,从而实现了解除进程对内存管理模块的依赖、可以直接热升级vmem内存管理模块的技术效果,进而解决了由于现有技术中在VM运行期间vmem相关的模块无法被卸载替换造成的KVM虚拟机化下的相关热升级能力不能直接用于vmem的热升级的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1(a)是根据本发明实施例一种内存管理***的框架示意图;
图1(b)是根据本发明实施例的一种可选的内存管理***的架构示意图;
图1(c)是根据本发明实施例的另一种可选的内存管理***的架构示意图;
图2是根据本发明实施例一种可选的用于实现内存管理方法的计算机终端的硬件结构框图;
图3(a)是根据本发明实施例一种内存管理方法的流程示意图;
图3(b)是本发明实施例一种可选的执行上述内存管理方法的流程框架图;
图4是根据本发明实施例另一种内存管理方法的流程示意图;
图5是根据本发明实施例一种计算设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
KVM:基于内核的虚拟机Kernel-based Virtual Machine(简称KVM)是一种内建于Linux中的开源虚拟化技术。具体而言,KVM可帮助您将Linux转变为虚拟机监控程序,使主机计算机能够运行多个隔离的虚拟环境,即虚拟客户机或虚拟机(VM)。
proc文件***:Linux***上的/proc目录是一种文件***,即proc文件***。与其它常见的文件***不同的是,/proc是一种伪文件***(也即虚拟文件***),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关***硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态
vmem:表示虚拟内存文件,与亦称分页文件(pagefi le.sys)同。当虚拟***执行关机操作后,vmem文件消失,但挂起关闭时,不消失。
vma:虚拟内存区域Virtual Memory Areas(简称vma),虚拟内存空间会被分成若干不同的区域,每个区域都有相关的属性和用途,一个合法的地址落在某个区域当中,这些区域不会重叠。
字符设备:在I/O传输过程中以字符为单位进行传输的设备。
实施例1
在相关技术中,在虚拟化场景下宿主机内存分配架构中,虚拟机的内存管理依赖于vmem相关模块对host的预留内存进行分配释放等管理。由于虚拟机内存是通过vmem提供的设备/dev/vmem(物理内存的全映像文件,能够访问物理内存)来创建,每申请一块内存,在VM运行期间,vmem模块的计数都会加1,直到VM释放后,相应的计数才会减1。这就导致vmem相关的模块,在VM运行期间,无法被卸载替换。但是作为虚拟化的基础组建,具备热升级能力是产品上线的必备功能,以应对产品的升级改造以及故障修复。目前KVM虚拟化下的相关热升级能力不能直接用于vmem的热升级。
具体地,本实施例中提供一种内存管理***,如图1(a)所示,该内存管理***包括但不限于:入口管理模块10和内存管理模块12,其中,
入口管理模块10,用于提供虚拟内存管理的入口,接收对虚拟内存的访问请求,并将访问请求链接至内存管理模块提供的目标内存管理文件;
内存管理模块12,用于加载升级后的内存管理文件;并从升级后的内存管理文件中,调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理。
上述内存管理***中,通过入口管理模块,用于提供虚拟内存管理的入口,接收对虚拟内存的访问请求,并将访问请求链接至内存管理模块提供的目标内存管理文件;内存管理模块,用于加载升级后的内存管理文件;并从升级后的内存管理文件中,达到了调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理的目的,从而实现了解除进程对内存管理模块的依赖、可以直接热升级vmem内存管理模块的技术效果,进而解决了由于现有技术中在VM运行期间vmem相关的模块无法被卸载替换造成的基于内核的虚拟机(Kernel-based Virtual Machine,简称为KVM)下的相关热升级能力不能直接用于vmem的热升级的技术问题。
例如,将内存管理***拆分为两个相对独立的模块,分别入口管理模块vmem.ko模块和可以加载内存管理文件vmem_mm_x.ko(其中,x表示文件的版本号)的内存管理模块,如图1(b)所示,容易注意到的是在主机内核(Host Kernel)中,使用cdev结构体来描述一个字符设备,其中cdev.op为字符设备驱动,字符设备驱动所做的主要工作为添加、初始化、删除cdev结构体,申请,释放设备号,填充file_operations结构体中的功能函数,比如open,close,mmap,ioctl,上述字母的含义分别为打开函数函数、关闭函数、映射函数、设备接口控制函数(ioctl)等。需要说明的是,vmem.ko模块只提供vmem内存管理的入口,其入口固定为/dev/vmem;另一个vmem_mm_x.ko(x为版本号,随着每次热升级的增加,例如0,1,2…),其负责具体的内存管理工作,若vmem_mm_0.ko为升级前的内存管理文件版本(旧版本),当升级后的内存管理文件可以包括vmem_mm_1.ko、vmem_mm_2.ko、vmem_mm_3.ko等,当通过vmem.ko模块接收对虚拟内存的访问请求时,可以将访问通过/dev/vmem这个路径链接至升级后的任意一个vmem_mm_x.ko中。
需要说明的是,vmem.ko模块是kernelobject文件(内核模块文件),该文件的意义是把内核的一些功能移动到内核外部,需要的时候***内核,不需要时卸载,.ko文件为驱动模块文件。
本申请一些可选的实施例中,内存管理模块,还用于提供升级前的内存管理文件,并在访问请求为用于访问升级前的内存管理文件的访问请求时,从升级前的内存管理文件中,调用与访问请求对应的目标内存管理文件。例如,如图1(c)所示,升级前的内存管理文件为vmem_mm_0.ko,当访问vmem_mm_0.ko可以调用vmem_mm_0.ko对应的升级后的vmem_mm_1.ko作为访问请求访问的目标内存管理文件,其中,各个字母的含义在上文已经说明,在此不再赘述。其中,vmem_mm_0.ko文件中包括info、status等命令,vmem_mm_1.ko文件中包括info、status和mmap等命令
本申请一些实施例中,内存管理模块,还用于采用释放函数对升级前或升级后的虚拟内存管理文件所对应的虚拟内存进行释放。例如,利用通过vma的对应vma_operation的关闭(close)路径来调用释放函数,对vmem_mm_0.ko所对应的虚拟内存或者其对应的升级后的vmem_mm_1.ko所对应的虚拟内存进行释放。
本申请一些实施例中,内存管理模块,还用于采用对升级前的内存管理文件对应的释放函数进行修改,以对与升级后的虚拟内存管理文件对应的虚拟内存进行释放。具体地,旧版本内存管理文件vmem_mm_0.ko,因为新内存管理文件vmem_mm_1.ko的内存管理方式可能发生变化,因此旧版本申请的内存的释放需要按照旧内存内存管理文件vmem_mm_0.ko的路径;为此,所有分配内存的释放通过vma的对应虚拟内存区域操作函数(vma_operation)的关闭(close)路径来调用具体的释放函数;如果新内存管理文件vmem_mm_1.ko的内存释放功能,兼容旧内存管理文件vmem_mm_0.ko,则可以将已申请内存的释放函数指针修改为vmem_mm_1.ko,解除对vmem_mm_0.ko的依赖,释放vmem_mm_0.ko虚拟内存,之后新分配的虚拟内存,都会通过相同的设备/dev/vmem调用新内存管理文件vmem_mm_1.ko的分配函数来完成;而后续新分配内存的释放,则会在分配时,将新内存管理文件的释放函数赋值到vma的关闭(close)函数中。
本申请一些可选的实施例中,入口管理模块包括:字符设备,用于通过文件操作函数指针将访问请求链接至目标内存管理文件。例如,入口管理模块为vmem.ko模块,其中使用cdev结构体来描述一个字符设备,上述两个模块之间,vmem.ko的入口/dev/vmem是一个字符设备,通过该字符设备的cdev.ops(设备驱动)对应的一组结构体(file_operations)的函数指针,会将具体的管理操作链接到目标内存管理文件vmem_mm_0.ko中。
本申请一些实施例中,内存管理模块还用于在加载升级后的内存管理文件后,基于与升级后的内存管理文件对应的新文件操作函数更新设备驱动,其中,新文件操作函数用于建立驱动程序和***调用的关联的数据结构。例如,内存管理模块用于加载升级后的内存管理文件vmem_mm_1.ko,并基于文件vmem_mm_1.ko对应new_file_operations赋值给cdev.ops(设备驱动),从而替换旧的内存管理文件vmem_mm_0.ko;达到后续新申请的内存将直接访问新的内存管理文件vmem_mm_1.ko的目的。
本申请一些可选的实施例中,内存管理模块,还用于在加载升级后的内存管理文件之前,对升级后的内存管理文件进行初始化,其中,在初始化过程中执行全局锁功能,在加载完成后,释放全局锁功能。例如,在加载vmem_mm_1.ko之前,可以对vmem_mm_1.ko进行初始化,在这个初始化的过程中,可以通过执行一个全局锁,可以保证/dev/vmem这起加载过程中不被别的分配或热升级等进程使用,在加载完成后,释放全局锁功能。
本申请一些实施例中,内存管理模块,还用于将升级后的内存管理文件对应的入口点信息赋值至设备驱动。例如可以在初始化完vmem_mm_1.ko相关结构之后,将vmem_mm_1.ko对应的新各个调用的入口点信息(fops)赋值给设备驱动(cdev.ops)。
本申请一些可选的实施例中,内存管理模块,还用于卸载proc文件***中的导出项目,并构建与升级后的内存管理文件对应的proc文件***。例如,将旧内存管理文件的vmem_mm_0.ko对应的proc文件***中的导出项目卸载,并构建新(升级后的)内存管理文件vmem_mm_1.ko对应的proc文件***。
为了达到修复bug、更新功能等目的,内存管理模块,还用于基于升级后的内存管理文件对公用数据结构进行解析,并在公用数据结构的预留位中添加升级后的内存管理文件的扩展信息,其中,公用的数据结构为升级前的内存管理文件对应的公用数据结构。
根据本发明实施例,还提供了一种内存管理的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图2示出了一种用于实现内存管理方法的计算机终端(或移动设备)的硬件结构框图。如图2所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的内存管理方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的漏洞检测方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输模块106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
在上述运行环境下,本申请提供了如图3(a)所示的内存管理方法。图3(a)是根据本发明实施例一的内存管理方法的流程图。
S302,通过入口管理模块接收对虚拟内存的访问请求,将访问请求链接至内存管理模块提供的目标内存管理文件;
S304,通过内存管理模块加载升级后的内存管理文件;并从升级后的内存管理文件中,调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理。
上述内存管理方法中,首先,通过入口管理模块接收对虚拟内存的访问请求,将访问请求链接至内存管理模块提供的目标内存管理文件;其次,通过内存管理模块加载升级后的内存管理文件;并从升级后的内存管理文件中,调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理,达到了调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理的目的,从而实现了解除进程对内存管理模块的依赖、可以直接热升级vmem内存管理模块的技术效果,进而解决了由于现有技术中在VM运行期间vmem相关的模块无法被卸载替换造成的KVM虚拟机化下的相关热升级能力不能直接用于vmem的热升级的技术问题。
例如,入口管理模块为vmem.ko模块和内存管理模块可以加载内存管理文件vmem_mm_x.ko。需要说明的是,vmem.ko模块只提供vmem内存管理的入口,其入口固定为/dev/vmem;另一个vmem_mm_x.ko(x为版本号,随着每次热升级的增加,例如0,1,2…),,若vmem_mm_0.ko为升级前的内存管理文件版本(旧版本),当升级后的内存管理文件可以包括vmem_mm_1.ko、vmem_mm_2.ko、vmem_mm_3.ko等,当通过vmem.ko模块接收对虚拟内存的访问请求时,可以将访问通过/dev/vmem这个路径链接至升级后的vmem_mm_1.ko中。
本申请一些实施例中,通过内存管理模块提供升级前的内存管理文件,并在访问请求为用于访问升级前的内存管理文件的访问请求时,从升级前的内存管理文件中,调用与访问请求对应的目标内存管理文件。例如,升级前的内存管理文件为vmem_mm_0.ko,当访问vmem_mm_0.ko可以调用vmem_mm_0.ko对应的升级后的vmem_mm_1.ko作为访问请求访问的目标内存管理文件。
本申请一些可选的实施例中,通过内存管理模块采用释放函数对升级前或升级后的虚拟内存管理文件所对应的虚拟内存进行释放。例如,利用通过vma的对应vma_operation的关闭(close)路径来调用释放函数,对vmem_mm_0.ko所对应的虚拟内存或者其对应的升级后的vmem_mm_1.ko所对应的虚拟内存进行释放。
本申请一些实施例中,通过内存管理模块采用对升级前的内存管理文件对应的释放函数进行修改,以对与升级后的虚拟内存管理文件对应的虚拟内存进行释放。具体地,旧版本内存管理文件vmem_mm_0.ko,因为新内存管理文件vmem_mm_1.ko的内存管理方式可能发生变化,因此旧版本申请的内存的释放需要按照旧内存内存管理文件vmem_mm_0.ko的路径;为此,所有分配内存的释放通过vma的对应虚拟操作内存区域操作函数(vma_operation)的关闭(close)路径来调用具体的释放函数;如果新内存管理文件vmem_mm_1.ko的内存释放功能,兼容旧内存管理文件vmem_mm_0.ko,则可以将已申请内存的释放函数指针修改为vmem_mm_1.ko,解除对vmem_mm_0.ko的依赖,释放vmem_mm_0.ko虚拟内存,之后新分配的虚拟内存,都会通过相同的设备/dev/vmem调用新内存管理文件vmem_mm_1.ko的分配函数来完成;而后续新分配内存的释放,则会在分配时,将新内存管理文件的释放函数赋值到vma的关闭(close)函数中。
本申请一些可选的实施例中,入口管理模块包括:字符设备,用于通过文件操作函数指针将访问请求链接至目标内存管理文件。例如,入口管理模块为vmem.ko模块和内存管理模块可以加载目标内存管理文件vmem_mm_x.ko,上述两个模块之间,vmem.ko的入口/dev/vmem是一个字符设备,通过该字符设备的cdev.ops(设备驱动)对应的一组结构体(file_operations)的函数指针,会将具体的管理操作链接到目标内存管理文件vmem_mm_0.ko中。
本申请一些实施例中,内存管理模块在加载升级后的内存管理文件后,基于与升级后的内存管理文件对应的新文件操作函数更新设备驱动,其中,新文件操作函数用于建立驱动程序和***调用的关联的数据结构。例如,内存管理模块用于加载升级后的内存管理文件vmem_mm_1.ko,并基于文件vmem_mm_1.ko对应new_file_operations赋值给cdev.ops(设备驱动),从而替换旧的内存管理文件vmem_mm_0.ko;达到后续新申请的内存将直接访问新的内存管理文件vmem_mm_1.ko的目的。
本申请一些可选的实施例中,内存管理模块在加载升级后的内存管理文件之前,对升级后的内存管理文件进行初始化,其中,在初始化过程中执行全局锁功能,在加载完成后,释放全局锁功能。例如,在加载vmem_mm_1.ko之前,可以对vmem_mm_1.ko进行初始化,在这个初始化的过程中,可以通过执行一个全局锁,可以保证/dev/vmem这起加载过程中不被别的分配或热升级等进程使用,在加载完成后,释放全局锁功能。
图3(b)是本申请实施例一种可选执行上述内存管理方法的流程框架图,如图3(b)所示,具体执行过程与上述内存管理方法的执行步骤类似,具体的:
步骤S3002,加载新的内存管理模块vmem_mm_1.ko;为了加载过程中不被别的分配或热升级等进程使用,通过步骤S3004先获取全局锁,利用全局锁对这个过程执行全局锁功能;然后通过步骤S3006将vmem_mm_1.ko中的新内存管理操作调用的入口点(fops)赋值给设备驱动(cdev.ops);通过步骤S3008卸载旧模块的vmem_mm_0.ko的proc项目;通过步骤S3010加载新的内存管理模块vmem_mm_1.ko的proc项目;其次,通过步骤S3012vmem_mm_1.ko复用和处理公用的内存信息结构体,具体地,对于公用的数据结构,vmem_mm_1.ko需要解析其上面的信息,如果vmem_mm_1.ko扩展了该数据结构,并希望直接复用旧数据结构,则新数据结构只能在该数据结构末尾的预留位扩展,避免出现解析错误;通过步骤S3014,利用vmem将预留内存切片管理,查询切片状态;最后,通过步骤S3016释放全局锁功能,从而实现解耦对内存分配入口和具体的内存管理功能,解除进程对内存管理模块的依赖;可以利用热升级vmem内存管理模块,达到修复故障或线上功能,而不影响正在使用的内存的目的;也可以达到同时允许不同功能的内存管理模块同时存在并可根据需要动态选择的目的。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了另一种内存管理的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行,此处需要说明的是,实施例二所提供的方法实施例仍旧可以运行在图2所示的计算机终端上。
在上述运行环境下,本申请提供了如图4所示的内存管理方法的流程示意图,该方法包括:
S402,通过内存管理模块加载升级后的内存管理文件,对升级后的内存管理文件进行初始化处理,得到初始化后的内存管理文件;
S404,通过将初始化后的内存管理文件对应的入口点信息赋值到设备驱动中,以及构建与升级后的内存管理文件对应的pro文件***,以对虚拟内存进行管理。
在上述内存管理方法中,首先,通过内存管理模块加载升级后的内存管理文件,对升级后的内存管理文件进行初始化处理,得到初始化后的内存管理文件;其次,通过将初始化后的内存管理文件对应的入口点信息赋值到设备驱动中,以及构建与升级后的内存管理文件对应的pro文件***,达到了对虚拟内存进行管理的目的,从而实现了解除进程对内存管理模块的依赖、可以直接热升级vmem内存管理模块的技术效果,进而解决了由于现有技术中在VM运行期间vmem相关的模块无法被卸载替换造成的KVM虚拟机化下的相关热升级能力不能直接用于vmem的热升级的技术问题。
本申请一些可选的实施例中,基于升级后的内存管理文件对公用数据结构进行解析,并在公用数据结构的预留位中添加升级后的内存管理文件的扩展信息,其中,公用的数据结构为升级前的内存管理文件对应的公用数据结构。
实施例3
本发明的实施例可以提供一种计算设备,该计算设备可以是计算设备群中的任意一个计算设备。可选地,在本实施例中,上述计算设备也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算设备可以执行应用程序的内存管理方法中以下步骤的程序代码:通过内存管理模块加载升级后的内存管理文件,对升级后的内存管理文件进行初始化处理,得到初始化后的内存管理文件;通过将初始化后的内存管理文件对应的入口点信息赋值到设备驱动中,以及构建与升级后的内存管理文件对应的pro文件***,以对虚拟内存进行管理。
可选地,图5是根据本发明实施例的一种计算设备的结构框图。如图5所示,该计算设备A可以包括:一个或多个(图中仅示出一个)处理器502、存储器504。
其中,存储器可用于存储软件程序以及模块,如本发明实施例中的内存管理方法对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的内存管理方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输模块调用存储器存储的信息及应用程序,以执行下述步骤:通过入口管理模块接收对虚拟内存的访问请求,将访问请求链接至内存管理模块提供的目标内存管理文件;通过内存管理模块加载升级后的内存管理文件;并从升级后的内存管理文件中,调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理。
可选的,上述处理器还可以执行如下步骤的程序代码:通过内存管理模块提供升级前的内存管理文件,并在访问请求为用于访问升级前的内存管理文件的访问请求时,从升级前的内存管理文件中,调用与访问请求对应的目标内存管理文件。
可选的,上述处理器还可以执行如下步骤的程序代码:通过内存管理模块采用释放函数对升级前或升级后的虚拟内存管理文件所对应的虚拟内存进行释放。
可选的,上述处理器还可以执行如下步骤的程序代码:通过内存管理模块对升级前的内存管理文件对应的释放函数进行修改,以对与升级后的虚拟内存管理文件对应的虚拟内存进行释放。
可选的,上述处理器还可以执行如下步骤的程序代码:通过字符设备通过文件操作函数指针将访问请求链接至目标内存管理文件,其中,入口管理模块,包括上述字符设备。
可选的,上述处理器还可以执行如下步骤的程序代码:通过内存管理模块加载升级后的内存管理文件后,基于与升级后的内存管理文件对应的新文件操作函数更新设备驱动,其中,新文件操作函数用于建立驱动程序和***调用的关联的数据结构。
可选的,上述处理器还可以执行如下步骤的程序代码:通过内存管理模块在加载升级后的内存管理文件之前,对升级后的内存管理文件进行初始化,其中,在初始化过程中执行全局锁功能,在加载完成后,释放全局锁功能。
采用本发明实施例,提供了一种解耦内存分配入口和内存管理的方案。通过入口管理模块,用于提供虚拟内存管理的入口,接收对虚拟内存的访问请求,并将访问请求链接至内存管理模块提供的目标内存管理文件;内存管理模块,用于加载升级后的内存管理文件;并从升级后的内存管理文件中,达到了调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理的目的,从而实现了解除进程对内存管理模块的依赖、可以直接热升级vmem内存管理模块的技术效果,进而解决了由于现有技术中在VM运行期间vmem相关的模块无法被卸载替换造成的KVM虚拟机化下的相关热升级能力不能直接用于vmem的热升级的技术问题。
本领域普通技术人员可以理解,图5所示的结构仅为示意,计算设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图5其并不对上述电子装置的结构造成限定。例如,计算设备50还可包括比图5中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图5所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例4
本发明的实施例还提供了一种非易失性存储介质。可选地,在本实施例中,上述非易失性存储介质可以用于保存上述实施例一所提供的内存管理方法所执行的程序代码。
可选地,在本实施例中,上述非易失性存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,非易失性存储介质被设置为存储用于执行以下步骤的程序代码:通过入口管理模块接收对虚拟内存的访问请求,将访问请求链接至内存管理模块提供的目标内存管理文件;通过内存管理模块加载升级后的内存管理文件;并从升级后的内存管理文件中,调用与访问请求对应的目标内存管理文件,以对虚拟内存进行管理。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (13)

1.一种内存管理***,包括:
入口管理模块,用于提供虚拟内存管理的入口,接收对虚拟内存的访问请求,并将访问请求链接至内存管理模块提供的目标内存管理文件;
内存管理模块,用于加载升级后的内存管理文件;并从所述升级后的内存管理文件中,调用与所述访问请求对应的所述目标内存管理文件,以对所述虚拟内存进行管理;基于所述升级后的内存管理文件对公用数据结构进行解析,并在所述公用数据结构的预留位中添加所述升级后的内存管理文件的扩展信息,其中,所述公用数据结构为升级前的内存管理文件对应的公用数据结构。
2.根据权利要求1所述的***,其中,所述内存管理模块,还用于提供升级前的内存管理文件,并在所述访问请求为用于访问升级前的内存管理文件的访问请求时,从所述升级前的内存管理文件中,调用与所述访问请求对应的所述目标内存管理文件。
3.根据权利要求2所述的***,其中,所述内存管理模块,还用于采用释放函数对升级前或升级后的虚拟内存管理文件所对应的虚拟内存进行释放。
4.根据权利要求3所述的***,其中,所述内存管理模块,还用于采用对升级前的内存管理文件对应的释放函数进行修改,以对与升级后的虚拟内存管理文件对应的虚拟内存进行释放。
5.根据权利要求1所述的***,其中,所述入口管理模块包括:字符设备,用于通过文件操作函数指针将所述访问请求链接至所述目标内存管理文件。
6.根据权利要求1所述的***,其中,所述内存管理模块还用于在加载升级后的内存管理文件后,基于与所述升级后的内存管理文件对应的新文件操作函数更新设备驱动,其中,所述新文件操作函数用于建立驱动程序和***调用的关联的数据结构。
7.根据权利要求1所述的***,其中,所述内存管理模块,还用于在加载升级后的内存管理文件之前,对所述升级后的内存管理文件进行初始化,其中,在初始化过程中执行全局锁功能,在加载完成后,释放所述全局锁功能。
8.根据权利要求7所述的***,其中,所述内存管理模块,还用于将所述升级后的内存管理文件对应的入口点信息赋值至设备驱动。
9.根据权利要求1所述的***,其中,所述内存管理模块,还用于卸载proc文件***中的导出项目,并构建与升级后的内存管理文件对应的proc文件***。
10.一种内存管理方法,包括:
通过入口管理模块接收对虚拟内存的访问请求,将访问请求链接至内存管理模块提供的目标内存管理文件;
通过内存管理模块加载升级后的内存管理文件;并从所述升级后的内存管理文件中,调用与所述访问请求对应的所述目标内存管理文件,以对所述虚拟内存进行管理;
通过所述内存管理模块基于所述升级后的内存管理文件对公用数据结构进行解析,并在所述公用数据结构的预留位中添加所述升级后的内存管理文件的扩展信息,其中,所述公用数据结构为升级前的内存管理文件对应的公用数据结构。
11.一种内存管理方法,包括:
通过内存管理模块加载升级后的内存管理文件,对升级后的内存管理文件进行初始化处理,得到初始化后的内存管理文件;
通过将初始化后的内存管理文件对应的入口点信息赋值到设备驱动中,以及构建与升级后的内存管理文件对应的pro文件***,以对虚拟内存进行管理;
通过所述内存管理模块基于所述升级后的内存管理文件对公用数据结构进行解析,并在所述公用数据结构的预留位中添加所述升级后的内存管理文件的扩展信息,其中,所述公用数据结构为升级前的内存管理文件对应的公用数据结构。
12.一种非易失性存储介质,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求10至11中任意一项所述的内存管理方法。
13.一种计算设备,包括:
存储器,用于存储程序;
处理器,所述处理器运行存储在所述存储器中的程序,其中,所述程序运行时执行如下处理步骤:
通过入口管理模块接收对虚拟内存的访问请求,将访问请求链接至内存管理模块提供的目标内存管理文件;
通过内存管理模块加载升级后的内存管理文件;并从所述升级后的内存管理文件中,调用与所述访问请求对应的所述目标内存管理文件,以对所述虚拟内存进行管理;
通过所述内存管理模块基于所述升级后的内存管理文件对公用数据结构进行解析,并在所述公用数据结构的预留位中添加所述升级后的内存管理文件的扩展信息,其中,所述公用数据结构为升级前的内存管理文件对应的公用数据结构。
CN202010476952.6A 2020-05-29 2020-05-29 内存管理***及方法 Active CN113312170B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010476952.6A CN113312170B (zh) 2020-05-29 2020-05-29 内存管理***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010476952.6A CN113312170B (zh) 2020-05-29 2020-05-29 内存管理***及方法

Publications (2)

Publication Number Publication Date
CN113312170A CN113312170A (zh) 2021-08-27
CN113312170B true CN113312170B (zh) 2024-01-23

Family

ID=77370220

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010476952.6A Active CN113312170B (zh) 2020-05-29 2020-05-29 内存管理***及方法

Country Status (1)

Country Link
CN (1) CN113312170B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103677870A (zh) * 2012-09-10 2014-03-26 腾讯科技(深圳)有限公司 ***升级方法及采用该方法升级的***
CN105683985A (zh) * 2013-10-29 2016-06-15 慧与发展有限责任合伙企业 虚拟机内省
CN106201564A (zh) * 2015-05-07 2016-12-07 阿里巴巴集团控股有限公司 在线升级基于内核虚拟机模块的设备和方法
CN106201566A (zh) * 2015-05-07 2016-12-07 阿里巴巴集团控股有限公司 利博伟特软件热升级方法及设备
CN108021378A (zh) * 2016-11-03 2018-05-11 阿里巴巴集团控股有限公司 升级***、基于虚拟机的升级方法及装置
CN109101319A (zh) * 2018-08-09 2018-12-28 郑州云海信息技术有限公司 一种在qemu上实现tpcm全虚拟化的平台及其工作方法
CN110673927A (zh) * 2019-09-27 2020-01-10 北京浪潮数据技术有限公司 一种虚拟机的调度方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7379990B2 (en) * 2002-08-12 2008-05-27 Tsao Sheng Ted Tai Distributed virtual SAN
US10007546B2 (en) * 2015-01-19 2018-06-26 Vmware, Inc. Operating-system exchanges using memory-pointer transfers
US10367766B2 (en) * 2017-01-20 2019-07-30 TEN DIGIT Communications LLC Intermediary device for data message network routing
US10860328B2 (en) * 2018-09-21 2020-12-08 Qualcomm Incorporated Providing late physical register allocation and early physical register release in out-of-order processor (OOP)-based devices implementing a checkpoint-based architecture

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103677870A (zh) * 2012-09-10 2014-03-26 腾讯科技(深圳)有限公司 ***升级方法及采用该方法升级的***
CN105683985A (zh) * 2013-10-29 2016-06-15 慧与发展有限责任合伙企业 虚拟机内省
CN106201564A (zh) * 2015-05-07 2016-12-07 阿里巴巴集团控股有限公司 在线升级基于内核虚拟机模块的设备和方法
CN106201566A (zh) * 2015-05-07 2016-12-07 阿里巴巴集团控股有限公司 利博伟特软件热升级方法及设备
CN108021378A (zh) * 2016-11-03 2018-05-11 阿里巴巴集团控股有限公司 升级***、基于虚拟机的升级方法及装置
CN109101319A (zh) * 2018-08-09 2018-12-28 郑州云海信息技术有限公司 一种在qemu上实现tpcm全虚拟化的平台及其工作方法
CN110673927A (zh) * 2019-09-27 2020-01-10 北京浪潮数据技术有限公司 一种虚拟机的调度方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
关于微机内存管理及优化方法的探讨;耿麦香;科技情报开发与经济(第04期);全文 *

Also Published As

Publication number Publication date
CN113312170A (zh) 2021-08-27

Similar Documents

Publication Publication Date Title
EP3353651B1 (en) In-service upgrade of kernel loadable modules
US7542758B2 (en) Field downloading of wireless device software
US8914785B2 (en) Providing virtual appliance system firmware images
CN105302563A (zh) 移动应用服务的插件化方法及***
CN105335187A (zh) 一种应用的处理方法及装置
CN103049295A (zh) 一种龙芯平台Linux操作***网络安装方法
CN114153782B (zh) 数据处理***、方法和存储介质
CN104765624B (zh) 虚拟机应用程序的更新处理方法和装置
KR20180101545A (ko) 보안 요소에서의 객체들을 관리하기 위한 방법
CN105653326A (zh) 一种批量Linux***安装及检测的***及方法
US10078532B2 (en) Resource management method and device for terminal system among multiple operating systems
CN114691390A (zh) 用户态程序的处理方法和装置、存储介质及处理器
CN114205176A (zh) 网络虚拟化服务***以及网络虚拟化服务器
CN103761126A (zh) 应用程序的升级方法和装置
CN113312170B (zh) 内存管理***及方法
KR20100032740A (ko) 이동통신단말기에서 언어 변경 장치 및 방법
CN110362350B (zh) 管理集成电路卡中的多个操作***
CN110543312B (zh) 一种应用软件安装方法、设备以及服务器
CN116208498A (zh) 一种OpenStack云平台节点差异化配置的方法、装置、设备及介质
CN108153564B (zh) 界面管理方法、设备及***和计算机可读存储介质
CN115268969A (zh) 安卓***升级方法及装置、终端设备
CN111026452B (zh) 一种远程32位进程注入64位进程的方法及***
KR20150029916A (ko) 컴퓨팅 환경 설정 장치 및 방법
CN110968393B (zh) 虚拟机的迁移处理方法、存储介质、计算设备
CN112486559A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40059825

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant