CN114880074A - 一种虚拟机的内存管理方法、装置及电子设备 - Google Patents
一种虚拟机的内存管理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN114880074A CN114880074A CN202210509186.8A CN202210509186A CN114880074A CN 114880074 A CN114880074 A CN 114880074A CN 202210509186 A CN202210509186 A CN 202210509186A CN 114880074 A CN114880074 A CN 114880074A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- address
- memory space
- memory
- instruction
- 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
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请的实施例公开了一种虚拟机的内存管理方法、装置及电子设备,涉及计算机技术领域,为能够降低安全处理器处理数据的压力而发明。所述方法,包括:虚拟机管理器向安全处理器发送安全内存空间分配请求;所述安全处理器基于所述安全内存空间分配请求,在预先分配的安全内存中,为虚拟机分配预定大小的安全内存空间,并将分配的所述安全内存空间的地址发送给所述虚拟机管理器;虚拟机访问内存产生嵌套页表缺页中断;所述虚拟机管理器调用第一指令,通过所述第一指令在嵌套页表中建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系。本申请适用于管理内存。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种虚拟机的内存管理方法、装置、电子设备及可读存储介质。
背景技术
随着云技术的发展,服务程序大多在云端的虚拟机内运行,虚拟机本身作为用户数据的载体,其数据安全越来越被重视。为保护用户数据的安全,通过隔离虚拟机内存即安全内存,使得虚拟机管理器无法访问安全内存,这样,可将虚拟机的数据放入安全内存中,虚拟机的安全内存由虚拟机和安全处理器共同管理,在虚拟机运行时产生嵌套页表缺页,虚拟机管理器向安全处理器发送请求,由安全处理器分配内存页面以及配置嵌套页表,而后虚拟机根据配置的页表访问内存,在这个过程中,安全处理器处理数据的压力较大。
发明内容
有鉴于此,本申请实施例提供一种虚拟机的内存管理方法、装置、电子设备及可读存储介质,能够降低安全处理器处理数据的压力。
第一方面,本申请实施例提供一种虚拟机的内存管理方法,包括:虚拟机管理器向安全处理器发送安全内存空间分配请求;所述安全处理器基于所述安全内存空间分配请求,在预先分配的安全内存中,为虚拟机分配预定大小的安全内存空间,并将分配的所述安全内存空间的地址发送给所述虚拟机管理器;所述虚拟机访问内存产生嵌套页表缺页中断;所述虚拟机管理器调用第一指令,通过所述第一指令在嵌套页表中建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系。
根据本申请实施例的一种具体实现方式,在所述虚拟机访问内存产生嵌套页表缺页中断;之前,所述方法还包括:配置安全内存大小;其中,所述安全内存大小根据各虚拟机的管理数据大小确定。
根据本申请实施例的一种具体实现方式,所述虚拟机管理器调用第一指令,通过所述第一指令在嵌套页表中建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系,包括:所述虚拟机管理器调用第一指令,并向所述第一指令传入所述虚拟机的标识、所述虚拟机的虚拟机物理地址、所述安全内存空间的地址以及所述安全内存空间的地址待链入的层级;所述层级为所述嵌套页表的除最后一级之前的指定层级;所述第一指令基于所述虚拟机的标识、所述虚拟机的虚拟机物理地址、所述安全内存空间的地址及所述安全内存空间的地址待链入的层级,将所述安全内存空间的地址链入所述层级,建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系。
根据本申请实施例的一种具体实现方式,在建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系之后,所述方法还包括:虚拟机管理器向操作系统发送普通内存空间分配请求;所述操作系统基于所述普通内存空间分配请求,在普通内存中为所述虚拟机分配预定大小的普通内存空间,并将分配的普通内存空间的地址发送给所述虚拟机管理器;所述虚拟机管理器调用第二指令,通过所述第二指令将所述普通内存空间的地址链入在所述嵌套页表的最后一级。
根据本申请实施例的一种具体实现方式,其特征在于,在所述虚拟机管理器调用第二指令,通过所述第二指令将所述普通内存空间的地址链入在所述嵌套页表的最后一级之后,所述方法还包括:将所述嵌套页表的最后一级设为挂起状态。
根据本申请实施例的一种具体实现方式,其特征在于,在将所述嵌套页表的最后一级设为挂起状态之后,所述方法还包括:虚拟机发出访问内存指令,通过所述嵌套页表将第一虚拟机物理地址转换为第一普通内存空间的地址,并判断所述第一普通内存空间的地址所在的嵌套页表的最后一级是否为挂起状态;若所述第一普通内存空间的地址所在的嵌套页表的最后一级为挂起状态,则向所述虚拟机发送异常信息;所述异常信息中包括第一虚拟机物理地址;所述虚拟机根据页表中所述第一虚拟机物理地址的加密比特位,判断所述第一普通内存空间的地址是私有内存或是共享内存;其中,所述页表包括主机虚拟机虚拟地址与虚拟机物理地址的对应关系以及虚拟机物理地址对应的加密比特位;若所述第一普通内存空间的地址是私有内存,则所述虚拟机调用第三指令,将所述第一普通内存空间的地址中的内容进行初始化,并计算初始化后的内容的第一哈希值。
根据本申请实施例的一种具体实现方式,在计算初始化后的内容的第一哈希值之后,所述方法还包括:所述虚拟机发出读指令;其中,所述读指令包括所述第一虚拟机物理地址;通过所述嵌套页表将所述第一虚拟机物理地址转换为所述第一普通内存空间的地址;从所述第一普通内存空间的地址中读取内容,并计算读取的内容的第二哈希值;将所述第一哈希值和所述第二哈希值比对;根据所述第一哈希值和所述第二哈希值是否一致,确定所述第一普通内存空间的地址对应的内容是否被篡改。
第二方面,本申请实施例提供一种虚拟机的内存管理装置,包括:发送模块,用于通过虚拟机管理器向安全处理器发送安全内存空间分配请求;分配模块,用于通过所述安全处理器基于所述安全内存空间分配请求,在预先分配的安全内存中,为虚拟机分配预定大小的安全内存空间,并将分配的所述安全内存空间的地址发送给所述虚拟机管理器;产生模块,用于通过所述虚拟机访问内存产生嵌套页表缺页中断;建立模块,用于通过所述虚拟机管理器调用第一指令,通过所述第一指令在嵌套页表中建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系。
根据本申请实施例的一种具体实现方式,所述装置还包括:配置模块,用于在所述发送模块通过虚拟机管理器向安全处理器发送安全内存空间分配请求之前,配置安全内存大小;其中,所述安全内存大小根据各虚拟机的管理数据大小确定。
根据本申请实施例的一种具体实现方式,所述建立模块,包括:第一调用子模块,用于通过所述虚拟机管理器调用第一指令,并向所述第一指令传入所述虚拟机的标识、所述虚拟机的虚拟机物理地址、所述安全内存空间的地址以及所述安全内存空间的地址待链入的层级;所述层级为所述嵌套页表的除最后一级之前的指定层级;链入子模块,用于通过所述第一指令基于所述虚拟机的标识、所述虚拟机的虚拟机物理地址、所述安全内存空间的地址及所述安全内存空间的地址待链入的层级,将所述安全内存空间的地址链入所述层级,建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系。
根据本申请实施例的一种具体实现方式,所述装置还包括:第一发送模块,用于在所述链入子模块建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系之后,通过虚拟机管理器向操作系统发送普通内存空间分配请求;分配模块,用于通过所述操作系统基于所述普通内存空间分配请求,在普通内存中为所述虚拟机分配预定大小的普通内存空间,并将分配的普通内存空间的地址发送给所述虚拟机管理器;第二调用模块,用于通过所述虚拟机管理器调用第二指令,通过所述第二指令将所述普通内存空间的地址链入在所述嵌套页表的最后一级。
根据本申请实施例的一种具体实现方式,所述装置还包括:挂起模块,用于在所述第二调用子模块通过所述虚拟机管理器调用第二指令,通过所述第二指令将所述普通内存空间的地址链入在所述嵌套页表的最后一级之后,将所述嵌套页表的最后一级设为挂起状态。
根据本申请实施例的一种具体实现方式,所述装置还包括:第一判断模块,用于在所述挂起模块将所述嵌套页表的最后一级设为挂起状态之后,虚拟机发出访问内存指令,通过所述嵌套页表将第一虚拟机物理地址转换为第一普通内存空间的地址,并判断所述第一普通内存空间的地址所在的嵌套页表的最后一级是否为挂起状态;第二发送模块,用于若所述第一普通内存空间的地址所在的嵌套页表的最后一级为挂起状态,则向所述虚拟机发送异常信息;所述异常信息中包括第一虚拟机物理地址;第二判断模块,用于通过所述虚拟机根据页表中所述第一虚拟机物理地址的加密比特位,判断所述第一普通内存空间的地址是私有内存或是共享内存;其中,所述页表包括主机虚拟机虚拟地址与虚拟机物理地址的对应关系以及虚拟机物理地址对应的加密比特位;初始化模块,用于若所述第一普通内存空间的地址是私有内存,则通过所述虚拟机调用第三指令,将所述第一普通内存空间的地址中的内容进行初始化,并计算初始化后的内容的第一哈希值。
根据本申请实施例的一种具体实现方式,所述装置还包括:发出模块,用于在所述初始化模块计算初始化后的内容的第一哈希值之后,通过所述虚拟机发出读指令;其中,所述读指令包括所述第一虚拟机物理地址;转换模块,用于通过所述嵌套页表将所述第一虚拟机物理地址转换为所述第一普通内存空间的地址;计算模块,用于从所述第一普通内存空间的地址中读取内容,并计算读取的内容的第二哈希值;比对模块,用于将所述第一哈希值和所述第二哈希值比对;确定模块,用于根据所述第一哈希值和所述第二哈希值是否一致,确定所述第一普通内存空间的地址对应的内容是否被篡改。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实现方式所述的虚拟机的内存管理方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一实现方式所述的虚拟机的内存管理方法。
本实施例的虚拟机的内存管理方法、装置、电子设备及可读存储介质,虚拟机管理器向安全处理器发送安全内存空间分配请求,安全处理器基于所述安全内存空间分配请求在预先分配的安全内存中,为虚拟机分配预定大小的安全内存空间,并将分配的安全内存空间的地址发送给虚拟机管理器,虚拟机访问内存产生嵌套页表缺页中断,虚拟机管理器调用第一指令,通过第一指令在嵌套页表中建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系,由于安全处理器为虚拟机向预先分配的安全内存申请安全内存空间,在虚拟机访问内存产生嵌套页表缺页中断时,虚拟机管理器调用第一指令,在嵌套页表中建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系,在这个过程中,安全处理器负责申请安全内存空间,在嵌套页表中建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系是由虚拟机管理器调用第一指令完成,从而能够降低安全处理器处理数据的压力。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为现有技术中SPOT表保护虚拟机内存数据的示意图;
图2为现有技术中SPOT表的条目与内存区间的对应关系示意图;
图3为现有技术中虚拟机访问内存的流程示意图;
图4为本申请一具体实施例提供的虚拟机的内存管理方法的流程示意图;
图5为一实施例的SPOT表的条目结构示意图;
图6为本申请一实施例的虚拟机镜像加载流程示意图;
图7为本申请一实施例的配置页面和寄存器页面加载流程示意图;
图8为本申请一具体实施例提供的虚拟机的内存管理方法的流程示意图;
图9为本申请一实施例提供的虚拟机的内存管理装置的结构示意图;
图10为本申请一实施例提供的电子设备的结构示意图。
具体实施方式
下面结合附图对本申请实施例进行详细描述。应当明确,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
为了保证虚拟机的数据安全,参见图1和图2,在虚拟机访问内存的总线上可以增加安全页面所有者表(SPOT表(Secure Page Ownership Table))其中的所有者指虚拟机ID,例如可在总线上添加一块存储区间(如SRAM),SPOT表存储于此存储空间中,该表定义了各个内存区间的所有者,硬件在访问内存之前判断内存访问者与内存所有者是否匹配,若匹配才允许访问。
虚拟机访问内存时,在中央处理器(CPU,Central Processing Unit)内部完成虚拟机虚拟地址(GVA,Guest Virtual Address,)到主机物理地址(HPA,Host PhysicalAddress)到的转换。CPU先通过虚拟机内部的页表将虚拟机虚拟地址GVA翻译成虚拟机物理地址(GPA,Guest Physical Address),再通过虚拟机嵌套页表将GPA翻译成主机物理地址HPA。CPU将虚拟机ID和HPA发送到地址总线上,经过SPOT表的校验,若该内存地址允许该虚拟机访问,CPU内部的内存总线将内存读写请求继续发送到内存控制器。若该地址不允许该虚拟机访问,内存总线不转发内存读写请求到内存控制器,直接返回固定模式内容给CPU。SPOT表是实现安全隔离虚拟机内存安全的核心数据,SPOT本身的安全必须得到保障,因此需限制虚拟机管理器(VMM,Virtual Machine Monitor)和操作系统(OS,OperatingSystem)无权访问和修改SPOT表,只有安全处理器有权限配置SPOT表。
此外,如背景技术所言,参见图3,安全隔离虚拟机运行时产生嵌套页表缺页,虚拟机退出,进入VMM,VMM向安全处理器发送请求,由安全处理器分配内存页面、配置嵌套页表并配置SPOT表。VMM恢复虚拟机执行,虚拟机访问嵌套页表后,获取HPA,访问内存,HPA已经配置在SPOT表中,总线允许访问,虚拟机访问内存成功。
从安全隔离虚拟机访问内存流程图中可看出,虚拟机触发缺页时,需进入安全处理器完成安全内存分配、嵌套页表建立以及SPOT表建立等过程,增加了进入安全处理器的运行压力以及资源消耗,在多核的环境中,多个主CPU无法同时进入安全处理器,增加了虚拟机访问内存的时间开销。
基于此,本申请提出一种虚拟机的内存管理方法,在一定程度上能够减少安全处理器的资源消耗。
为使本领域技术人员更好地理解本申请实施例的技术构思、实施方案和有益效果,下面通过具体实施例进行详细说明。
本申请一实施例提供的一种虚拟机的内存管理方法,包括:虚拟机管理器向安全处理器发送安全内存空间分配请求;所述安全处理器基于所述安全内存空间分配请求,在预先分配的安全内存中,为虚拟机分配预定大小的安全内存空间,并将分配的所述安全内存空间的地址发送给所述虚拟机管理器;虚拟机访问内存产生嵌套页表缺页中断;所述虚拟机管理器调用第一指令,通过所述第一指令在嵌套页表中建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系,能够降低安全处理器处理数据的压力。
图4为本申请一实施例提供的虚拟机的内存管理方法的流程示意图,如图4所示,本实施例的虚拟机的内存管理方法,可以包括:
S101、虚拟机管理器向安全处理器发送安全内存空间分配请求。
虚拟机管理器(VMM,Virtual Machine Monitor),虚拟机监视器,主要用于管理虚拟机。
在虚拟机启动后,虚拟机管理器监测到虚拟机已启动即向安全处理器发送安全内存空间分配请求。在一些例子中,虚拟机管理器向安全处理器发送SMR_ALLOC命令,在一些例子中,虚拟机管理器还向安全处理器发送虚拟机的标识VMID。
安全处理器可为通用处理器之外的专门用于管理安全策略的专有处理器,具有独立的RAM。
S102、安全处理器基于安全内存空间分配请求,在预先分配的安全内存中,为虚拟机分配预定大小的安全内存空间,并将分配的安全内存空间的地址发送给虚拟机管理器。
安全处理器在预先分配的安全内存中配置预定大小的安全内存空间,并将分配的安全内存空间的地址发送给虚拟机管理器。
虚拟机(VM:Virtual Machine),可为通过软件模拟的具有完整硬件系统功能的计算机系统。
本实施例的虚拟机可为安全隔离虚拟机(SIV,Secure IsolationVirtualization),安全隔离虚拟机保护内存的方式可通过定义了各内存区间所有者的SPOT表,对内存访问者与内存所有者是否匹配进行判断,如果匹配才允许访问。
相关技术中,由于SPOT表存储于内存总线访问路径上,位于系统级芯片(SoC,System-on-a-Chip)内部,受限于SoC的面积,SPOT表占用的存储空间不能过大。举例来说,若物理机的内存为64G,内存页面为4K,虚拟机ID为2字节,若针对每一个内存页面都支持配置SPOT表,则SPOT空间需64G/4K×2=32M,显然SoC内部存储无法支持如此规模的存储。因此,需要增大SPOT表可管理的内存粒度即增大SPOT表管理内存的最小单位值,若SoC内部存储可支持512K,则SPOT表管理的最小单位为64G/(512K/2)=256K。
然而SPOT表是控制对物理内存的访问权限,物理空间须连续,这与虚拟机管理器或操作系统中以4K为页面单位管理内存的方法相冲突。而操作系统运行时间越久,内存越趋于碎片化,在一个长时间运行的操作系统上,很难有超过两页的连续物理内存。
为满足SPOT表管理内存的粒度,在操作系统启动之前根据虚拟机的全部数据的大小在物理内存上预留部分内存,为安全隔离虚拟机专用。而这部分内存无法与操作系统分时复用,在虚拟机启动之前,这部分内存利用率为0;在虚拟机运行过程中,这部分内存也会出现只使用一部分的情况;此外,在主机可运行多个虚拟机的情况下,需为多个虚拟机的全部数据预留内存,然而在只启动部分虚拟机的情况下,预留的内存只有部分被使用,而未被使用的安全内存操作系统无法使用,导致主机整个物理内存的利用率较低。
为提高主机整个物理内存的利用率,在一实施例中,在虚拟机管理器向安全处理器发送安全内存空间分配请求之前,所述方法还可以包括:
配置安全内存大小。
本实施例中,安全内存大小根据各虚拟机的管理数据大小确定。
虚拟机可包括管理数据和其它数据,对应到内存中可称为管理数据页面和其它数据页面。管理数据页面可包括配置数据页面、寄存器页面和嵌套页表页面,由于管理数据页面占比很低,可预先计算出上限并在物理内存中预留部分内存即安全内存,这部分内存仍然由SPOT表保护。
本实施例根据虚拟机管理数据计算预留内存,由于管理数据仅为虚拟机的较少的一部分数据,那么根据管理数据预留的内存较小,主机内存中除去预留的较小的内存之外的其它内存,可由操作系统分时复用,从而可以提高内存的利用率。
下面以一具体实施例对计算虚拟机管理数据的大小进行说明。
本实施例中虚拟机管理数据包括配置数据、寄存器和嵌套页表,对应的计算配置数据页面、寄存器页面和嵌套页表页面的大小,其中,
(1)安全虚拟机寄存器页面:
假设虚拟机ID为8bit,即最大256个安全虚拟机,每个虚拟机最大支持128vcpu,则安全虚拟机寄存器页面需要256*128*4K=128M。
(2)安全虚拟机配置页面:
假设虚拟机ID为8bit,即最大256个安全虚拟机,每个虚拟机最大支持128vcpu,则安全虚拟机配置页面需要256*128*4K=128M。
(3)安全虚拟机嵌套页表页面:
假设安全虚拟机最大可支持内存为1T,嵌套页表为4级,其所需嵌套页表空间约为1G。
将上述各个类型页面大小相加,这样,如果在一个支持1T物理内存的主机上、安全虚拟机最多256个时,需划分出2G的安全虚拟机内存空间作为安全内存。如考虑其它一些开销,可以在2G基础上增加余量,如预留4G安全内存。
假设预留安全内存的物理地址为[P,P+4G],可通过配置寄存器使SPOT表的管理内存范围为P~P+4G。
在一些例子中,在配置安全内存大小之后,还可以通过预设的安全内存大小,可计算SPOT表每个条目管理的安全内存的大小。如SPOT表最多支持8192条目,则每一条目管理4G/8192=512K内存。
在预留安全内存在主机上的主机物理地址确定的情况下,可将安全内存的物理地址划分为与SPOT表的条目相等数量的地址区间,每个区间的大小相等,之后,可将SPOT表的各个条目与各个地址区间建立一一对应关系。
参见图5,SPOT表项由2个字节组成,最低位使用一个bit表示本表项是否有效,其它bit表示虚拟机ID。
在建立SPOT表的各个条目与各个地址区间建立一一对应关系时,SPOT表的各个条目中、与是否有效bit以及虚拟机ID对应的bit可为空,在进行与虚拟机对应的安全内存页面申请时,可根据申请的安全内存页面的地址以及与SPOT表条目对应的地址区间,确定申请的安全内存页面对应的SPOT表的条目,并将虚拟机ID添入到该条目的虚拟机ID对应的bit上,同时将有效bit置1。
在一些例子中,安全处理器分配的预定大小的安全内存空间,可为SPOT表每个条目所能管理的安全内存的大小,例如SPOT表每一条目管理512K内存,安全处理器在预先分配的安全内存中配置512K内存,将安全内存物理地址P和长度512K发送给虚拟机管理器。进一步地,可确定与分配的安全内存空间的地址对应的SPOT表条目,并将该条目配置为VMID以及有效位标识位配置为1。
S103、虚拟机访问内存产生嵌套页表缺页中断。
嵌套页表缺页中断(NPF,Nested Page Fault)可为由于嵌套页表不完整产生的缺页中断。
当虚拟机需要与内存进行数据交互时,如果内存数据所在的地址范围没有包含在当前的嵌套页表中,此时,虚拟机产生嵌套页表缺页中断,虚拟机退出。
S104、虚拟机管理器调用第一指令,通过第一指令在嵌套页表中建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系。
嵌套页表(NPT,Nested Page Table)可以将虚拟机物理地址GPA翻译为主机物理地址HPA的表格。
虚拟机管理器接收到安全处理器发送的安全内存空间的地址后,可调用第一指令,第一指令可将虚拟机的虚拟机物理地址与安全内存空间的地址建立映射关系,为虚拟机在嵌套页表中建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系。
本实施例,虚拟机管理器向安全处理器发送安全内存空间分配请求,安全处理器基于所述安全内存空间分配请求在预先分配的安全内存中,为虚拟机分配预定大小的安全内存空间,并将分配的安全内存空间的地址发送给虚拟机管理器,当虚拟机访问内存产生嵌套页表缺页中断,虚拟机管理器调用第一指令,通过第一指令在嵌套页表中建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系,由于安全处理器为虚拟机向预先分配的安全内存申请安全内存空间,在虚拟机访问内存产生嵌套页表缺页中断时,虚拟机管理器调用第一指令,在嵌套页表中建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系,在这个过程中,安全处理器负责申请安全内存空间,在嵌套页表中建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系是由虚拟机管理器调用第一指令完成,从而能够降低安全处理器处理数据的压力,此外,有利于提高整个系统的性能。
本申请再一实施例,与上述实施例基本相同,不同之处在于,本实施例的虚拟机管理器调用第一指令,通过所述第一指令在嵌套页表中建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系(S104),可以包括:
S104a、虚拟机管理器调用第一指令,并向第一指令传入所述虚拟机的标识、虚拟机的虚拟机物理地址、安全内存空间的地址以及安全内存空间的地址待链入的层级。
本实施例的层级为所述嵌套页表的除最后一级之前的指定层级。
例如嵌套页表的级数为4级,那么,最后一级之前的层级可为1级、2级或3级。
S104b、第一指令基于虚拟机的标识、虚拟机的虚拟机物理地址、安全内存空间的地址及安全内存空间的地址待链入的层级,将安全内存空间的地址链入层级,建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系。
本实施例中,第一指令可以根据虚拟机的标识、虚拟机的虚拟机物理地址、安全内存空间的地址及安全内存空间的地址待链入的层级,将安全内存空间的地址链入层级,从而,建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系。
在一些例子中,第一指令可为专用指令,具体可为SIVNPTADD VMID GPA HPALEVEL,该命令为虚拟机VMID的GPA页建立第LEVEL层的页表,页表物理地址为HPA。该指令需4个传入参数,分别为安全虚拟机ID、安全虚拟机物理地址GPA、物理机地址HPA、NPT层级LEVEL。
该指令流程如下:
A1、判断LEVEL是否超出页表最大层级,若超出,指令退出,若未超出,则执行A2;
A2、判断传入的HPA是否为SPOT表管理的内存,若不在SPOT表管理范围内,指令退出,若在SPOT表管理范围内,则执行A3;
A3、判断传入的HPA所在SPOT条目是否分配给VMID,若未分给VMID,指令退出,若分给VMID,则执行A4;
A4、根据传入的GPA遍历VMID的NPT页表项,若LEVEL>0,若GPA对应的NPT页表项的0-LEVEL-1层未建立,指令退出,若LEVEL>0,若GPA对应的NPT页表项的0-(LEVEL-1)层已建立,则执行A5;
A5、根据传入的GPA遍历VMID的NPT页表,GPA对应的NPT页表项的LEVEL层若已建立,指令退出,若未建立,则执行A6;
A6、查找GPA页表,HPA是否已经在NPT中映射到其他位置,若已映射到其他位置,指令退出,若未映射到其他位置,则执行A7;
A7、将HPA链接入GPA对应NPT页表的LEVEL层,指令完成。
为提高安全内存的安全性,上述步骤A1-A7的功能可由硬件实现,传入指令中的安全虚拟机ID,可放置于数据寄存器RAX;安全虚拟机物理地址GPA,可放置于数据寄存器RBX;物理机地址HPA,可放置于数据寄存器RCX。
为能够方便地删除嵌套页表的、除最后一级外的其它层级,在一些例子中,可通过虚拟机管理器调用SIVNPTDEL VMID GPA LEVEL完成,该命令能够删除虚拟机VMID的GPA对应的第LEVEL层的页表。该指令需3个传入参数,分别为安全虚拟机ID、安全虚拟机物理地址GPA以及NPT层级LEVEL。
该指令流程如下:
B1、判断LEVEL是否超出页表最大层级,若超出,指令退出,若未超出,则执行B2;
B2、判断传入的HPA是否为安全内存,若不在安全内存范围内,指令退出,若在安全内存范围内,则执行B3;
B3、判断传入的HPA所在SPOT条目是否分配给VMID,若未分配给VMID,指令退出,若分配给VMID,执行B4;
B4、根据传入的GPA遍历VMID的NPT页表,若GPA对应的NPT页表项的0-LEVEL层未建立,指令退出,如已经建立,则执行B5;
B5、删除GPA链对应的NPT页表的LEVEL层,指令完成。
为提高安全内存的安全性,上述步骤B1-B5的功能可由硬件实现,传入指令中的安全虚拟机ID,放置于RAX;安全虚拟机物理地址GPA,放置于RBX;NPT层级LEVEL。
为通过嵌套页表访问虚拟机对应的除安全内存外的数据,需建立完整的、最后一级指向普通内存地址的嵌套页表,本申请再一实施例,与上述实施例基本相同,不同之处在于,在建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系之后,所述方法还可以包括:
S105、虚拟机管理器向操作系统发送普通内存空间分配请求。
在嵌套页表的除最后一级之外的其它层级的页表已经建立,则虚拟机管理器向操作系统发送普通内存空间分配请求,以为嵌套页表的最后一级申请普通内存页面。
在一些例子中,分配请求中可包含有虚拟机的标识。
S106、操作系统基于普通内存空间分配请求,在普通内存中为虚拟机分配预定大小的普通内存空间,并将分配的普通内存空间的地址发送给虚拟机管理器。
操作系统可根据普通内存空间分配请求,并结合普通内存的使用情况,为虚拟机分配预定大小的普通内存空间,在分配预定大小的普通内存空间之后,可将分配的普通内存空间的地址发送给虚拟机管理器。
S107、虚拟机管理器调用第二指令,通过第二指令将普通内存空间的地址链入在嵌套页表的最后第一级。
将普通内存空间的地址链入嵌套页表的最后一级,从而,建立虚拟机的虚拟机物理地址与普通内存空间的地址的完整的映射关系,便于虚拟机利用该映射关系访问普通内存。
在一些例子中,虚拟机管理器调用第二指令,通过第二指令将普通内存空间的地址链入在嵌套页表的最后第一级,可以包括:
虚拟机管理器调用第二指令,并向所述第二指令传入虚拟机的标识、虚拟机的虚拟机物理地址、普通内存空间的地址;
第二指令,基于所述虚拟机的标识、所述虚拟机的虚拟机物理地址以及所述普通内存空间的地址,将普通内存空间的地址链入在嵌套页表的最后第一级。
在一些例子中,第二指令可为专用指令,具体可为SIVPAGEADD VMID GPA HPA,该命令建立GPA和HPA在NPT中的映射。该指令需3个传入参数,分别为安全虚拟机ID、安全虚拟机物理地址GPA、物理机地址HPA。
该指令流程如下:
C1、判断HPA是否为SPOT表管理的内存,若是,则退出,若不是,则执行C2;
C2、根据传入的GPA遍历VMID的嵌套页表,若最后一级之前的页表项未建立,指令退出,若已建立,则执行C3;
C3、根据传入的GPA遍历VMID的嵌套页表,若GPA对应的嵌套页表的最后一级表项(PTE,Page Table Entry)已经配置,指令退出,若未配置,则执行C4;
C4、查找VIMD的嵌套页表,HPA是否已经映射到其他位置,若已映射到其他位置,指令退出,若未映射到其他位置,则执行C5;
C5、将HPA地址链入嵌套页表,设置PTE项为挂起(pending)状态(待安全虚拟机确认后,PTE转换为有效状态(validated)),指令完成。
完成上述指令时,可产生错误码,0表示成功。
为提高安全内存的安全性,上述步骤C1-C5的功能可由硬件实现,传入指令的安全虚拟机ID,可放置于RAX;安全虚拟机物理地址GPA,可放置于RBX;物理机地址HPA,可放置于RCX。硬件完成上述指令时,RAX存放了错误码,0表示成功。
为能够方便释放虚拟机的普通内存,在一些例子中,可通过虚拟机管理器调用SIVPAGEDEL VMID GPA。该命令为虚拟机释放普通内存,并设置对应的嵌套页表PTE项为不存在。该指令需2个传入参数,分别为安全虚拟机ID和安全虚拟机物理地址GPA。该命令需2个输出参数:指令错误码和主机物理地址,其中,错误码为0表示成功;主机物理地址是在指令正确返回时才输出。
该指令流程如下:
D1、根据传入的GPA遍历VMID的NPT页表,若GPA对应的NPT页表项未配置,指令退出,设置非0错误码,若已配置,则执行D2;
D2、设置错误码为0,将GPA所在的页表PTE中的地址输出,将PTE设置为不存在(nonpresent)。
为提高安全内存的安全性,上述步骤D1-D2的功能可由硬件实现,传入参数中的安全虚拟机ID,放置于RAX;安全虚拟机物理地址GPA,放置于RBX。
输出的两个参数指令错误码可存放在RAX,当指令正确返回时,获取的HPA存放RCX中。
虚拟机对应的内存中,除了安全内存外的普通内存可分为私有内存和共享内存,其中,私有内存为虚拟机能访问而虚拟机管理器不能访问的内存,共享内存为虚拟机能访问和虚拟机管理器都能访问的内存。
由于私有内存数据是不允许虚拟机管理器或其它设备修改的数据,在研究过程中,发明人发现,如果VMM/设备对虚拟机的私有内存的修改,该私有内存存储数据的哈希值也改变了,这样,可以通过虚拟机在写入数据和读取数据时计算相应的哈希值,并基于两个哈希值进行校验,如果数据被修改,则检验时产生异常,如此即可对内存数据进行完整性校验。
为便于对私有内存进行初始化进而进行完整性校验,在一些例子中,在虚拟机管理器调用第二指令,通过第二指令将普通内存空间的地址链入在嵌套页表的最后一级(S107)之后,所述方法还可以包括:
S108、将嵌套页表的最后一级设为挂起状态。
进一步地,在一些例子中,在将嵌套页表的倒数第一级设为挂起状态(S108)之后,所述方法还可以包括:
S109、虚拟机发出访问内存指令,通过嵌套页表将第一虚拟机物理地址转换为第一普通内存空间的地址,并判断第一普通内存空间的地址所在的嵌套页表的最后一级是否为挂起状态。
S110、若第一普通内存空间的地址所在的嵌套页表的最后一级为挂起状态,则向虚拟机发送异常信息。
如果第一普通内存空间的地址所在的嵌套页表的最后一级为挂起状态,则向虚拟机发送异常信息,本实施例的异常信息中可以包括第一虚拟机物理地址。
S111、虚拟机根据页表中第一虚拟机物理地址的加密比特位,判断第一普通内存空间的地址是私有内存或是共享内存。
本实施例中,页表可以包括主机虚拟机虚拟地址与虚拟机物理地址的对应关系以及虚拟机物理地址对应的加密比特位。在一些例子中,加密比特位c-bit为0表示不加密,为1表示加密,一般在地址中的47bit。通过第一虚拟机物理地址的加密比特位判断,如果表示加密,则第一普通内存空间的地址为私有内存,如果表示不加密,则第一普通内存空间的地址为共享内存。
S112、若第一普通内存空间的地址是私有内存,则虚拟机调用第三指令将第一普通内存空间的地址中的内容进行初始化,并计算初始化后的内容的第一哈希值。
如果第一普通内存空间的地址是私有内存,则虚拟机调用第三指令将第一普通内存空间的地址中的内容进行初始化,并计算初始化后的内容的第一哈希值,在一些例子中,可将初始化页面内容为全0。
在一些例子中,第三指令可为专用指令,具体可为SIVSECVALIDATE GPA,该命令为虚拟机确认GPA为私有内存,并初始化页面数据为全0。该指令需一个传入虚拟机的物理地址GPA。
指令操作如下:
E1、虚拟机判断本GPA为私有内存,设置NPT的PTE为validated,并初始化页面的内容为全0,产生内存初始哈希值。
为提高安全内存的安全性,上述步骤E1的功能可由硬件实现,传入的虚拟机的物理地址存储在RAX中。
虚拟机判断GPA为共享内存时,可调用SIVNSVALIDATE GPA,该命令为安全虚拟机确认本GPA为共享内存。该指令需一个传入虚拟机的物理地址GPA。
指令操作如下:安全虚拟机设置NPT的PTE为validated。
为提高安全内存的安全性,上述步骤的功能可由硬件实现,传入的虚拟机的物理地址存储在RAX中。
为了及时发现私有内存中的内容是否被篡改,在一些例子中,在计算初始化后的内容的第一哈希值之后,所述方法还可以包括:
S113、虚拟机发出读指令。
本实施例中,读指令可以包括第一虚拟机物理地址。读指令可为虚拟机为读取第一虚拟机物理地中的内容而发出的指令。
S114、通过嵌套页表将第一虚拟机物理地址转换为第一普通内存空间的地址。
通过前述实施例得到的嵌套页表,将第一虚拟机物理地址转换为第一普通内存空间的地址。
S115、从第一普通内存空间的地址中读取内容,并计算读取的内容的第二哈希值。
本实施例的可由内存控制器计算所读取内容的第二哈希值。
S116、将第一哈希值和第二哈希值比对。
S117、根据第一哈希值和第二哈希值是否一致,确定第一普通内存空间的地址对应的内容是否被篡改。
如果第一哈希值和第二哈希值一致,则第一普通内存空间的地址对应的内容未被篡改;如果第一哈希值和第二哈希值不一致,则第一普通内存空间的地址对应的内容已被篡改。
由于私有内存虚拟机可以访问,而虚拟机管理器无法访问,在特定应用场景下,为了使虚拟机管理器可以访问原有私有内存中的部分内存,或者不再允许虚拟机管理器访问原有的共享内存中的部分内存,
虚拟机可以通过控制虚拟机内部页表的加密比特,来控制虚拟机物理地址为私有内存还是共享内存。在一些例子中,虚拟机将虚拟机内部页表中的加密比特从1改成0,私有内存转换为共享内存;安全虚拟机将虚拟机物理地址中的加密比特从0改成1,共享内存转换为私有内存。
若私有页面转换成共享页面,则此页面不再需要内存控制器进行完整性保护;若共享内存转换为私有内存,则页面需要内存完整性保护。
虚拟机在修改内部页表的加密比特后,可以调用第四指令删除CPU核中的TLB,并设置虚拟机页面对应的PTE为pending状态,
第四指令可为SIVINVALIDATE GPA,该命令为虚拟机设置GPA的NPT的PTE为pending。该指令需传入虚拟机的物理地址(GPA)作为参数。
指令操作如下:
虚拟机设置NPT的PTE为pending,并删除所有CPU核的TLB。
为了提高安全内存的安全性,上述步骤的功能可由硬件实现,传入的虚拟机的物理地址存储在RAX中。
在一些例子中,通过上述步骤,PTE为pending状态,此时将触发异常,虚拟机调用SIVSECVALIDATE GPA重新初始化私有内存并计算哈希值或者调用SIVNSVALIDATE GPA不初始化也不进行哈希值计算。
为了在启动虚拟机时,对虚拟机进行完整性校验,在一些例子中,参见图6,采用本申请实施例的虚拟机的内存管理方法,虚拟机初始镜像验证加载流程需要做适应性的调整,具体流程如下:
1.VMM复制安全虚拟机初始镜像到内存并清除初始镜像缓存;
2.VMM发送初始镜像物理地址到安全处理器请求验证完整性;
3.安全处理器对初始镜像逐页做哈希,得到初始镜像完整哈希值;
4.判断哈希值是否正确;
5.如果哈希值正确,安全处理器逐页加密初始镜像并生成数据哈希值,存放于基于误差校正码(ECC,Error Correcting Code)的内存中;
6.安全处理器为初始镜像建立页表;
7.虚拟机初始镜像加载完成;
8.如果哈希值不正确,则虚拟机初始镜像验证失败。
参见图7,对于上述实施例中的虚拟机管理数据中的配置页面和寄存器页面加载流程如下:
1.VMM复制虚拟机配置页面/寄存器页面到内存;
2.VMM清除配置页面/寄存器页面缓存;
3.VMM发送虚拟机配置页面/寄存器页面物理内存给安全处理器;
4.安全处理器复制配置页面/寄存器页面到安全内存;
5.安全处理器为配置页面/寄存器页面产生内存数据哈希值,保存在ECC中。
下面以一具体实施例,对本申请的方案进行详细说明。
参见图8,本实施例的虚拟机的内存管理方法,可以包括:
1、虚拟机访问内存,产生嵌套页表缺页中断NPF;
2、获取安全页面调用SIVNPTADD为GPA建立页表,并从OS获取页面调用SIVPAGEADD为GPA建立PTE项,建立嵌套页表NPT;
4、内存总线对NPT最后一级之前的各级生成内存哈希值,以及生成最后一级的内存哈希值;
5、虚拟机收到PENDING_PAGE异常,若触发异常的GPA对应的HPA为私有内存,调用SIVSECVALIDATE,初始化HPA内的内容,并计算HPA对应的初始化后的哈希值;
6、若触发异常的GPA为共享内存,调用SIVNSVALIDATE。
在具体应用中,使用本实施例提供的方法,对系统架构和系统软件的增强,并可以利用内存控制器对内存的完整性保护机制,虚拟机能够通过专用指令获取安全内存,用于存虚拟机的配置页面、寄存器页面和嵌套页表页面,并且安全内存的数据由SPOT表进行管理,而其它数据能够从操作系统以页为单位分配内存,利用内存控制器完整性机制保证数据页面的安全,安全内存的安全性保持不变,系统启动时无需预留大量内存,提升了内存的利用率,并且降低安全处理器的资源开销。
本申请一实施例提供的虚拟机的内存管理装置,包括:发送模块,用于通过虚拟机管理器向安全处理器发送安全内存空间分配请求;分配模块,用于通过所述安全处理器基于所述安全内存空间分配请求,在预先分配的安全内存中,为虚拟机分配预定大小的安全内存空间,并将分配的所述安全内存空间的地址发送给所述虚拟机管理器;产生模块,用于通过虚拟机访问内存产生嵌套页表缺页中断;建立模块,用于通过所述虚拟机管理器调用第一指令,通过所述第一指令在嵌套页表中建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系,能够降低安全处理器处理数据的压力。
图9为本申请一实施例提供的虚拟机的内存管理装置的结构示意图,如图9所示,本实施例的虚拟机的内存管理装置,可以包括:发送模块11,用于通过虚拟机管理器向安全处理器发送安全内存空间分配请求;分配模块12,用于通过所述安全处理器基于所述安全内存空间分配请求,在预先分配的安全内存中,为所述虚拟机分配预定大小的安全内存空间,并将分配的所述安全内存空间的地址发送给所述虚拟机管理器;产生模块13,用于通过虚拟机访问内存产生嵌套页表缺页中断;建立模块14,用于通过所述虚拟机管理器调用第一指令,通过所述第一指令在嵌套页表中建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系
本实施例的装置,可以用于执行图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本实施例的装置,虚拟机管理器向安全处理器发送安全内存空间分配请求,安全处理器基于所述安全内存空间分配请求在预先分配的安全内存中,为虚拟机分配预定大小的安全内存空间,并将分配的安全内存空间的地址发送给虚拟机管理器,当虚拟机访问内存产生嵌套页表缺页中断,虚拟机管理器调用第一指令,通过第一指令在嵌套页表中建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系,由于安全处理器为虚拟机向预先分配的安全内存申请安全内存空间,当虚拟机访问内存产生嵌套页表缺页中断时,虚拟机管理器调用第一指令,在嵌套页表中建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系,在这个过程中,安全处理器负责申请安全内存空间,在嵌套页表中建立虚拟机的虚拟机物理地址与安全内存空间的地址的映射关系是由虚拟机管理器调用第一指令完成,能够降低安全处理器处理数据的压力。
作为一可选实施方式,所述装置还包括:配置模块,用于在所述发送模块通过虚拟机管理器向安全处理器发送安全内存空间分配请求之前,配置安全内存大小;其中,所述安全内存大小根据各虚拟机的管理数据大小确定。
作为一可选实施方式,所述建立模块,包括:第一调用子模块,用于通过所述虚拟机管理器调用第一指令,并向所述第一指令传入所述虚拟机的标识、所述虚拟机的虚拟机物理地址、所述安全内存空间的地址以及所述安全内存空间的地址待链入的层级;所述层级为所述嵌套页表的除最后一级之前的指定层级;链入子模块,用于通过所述第一指令基于所述虚拟机的标识、所述虚拟机的虚拟机物理地址、所述安全内存空间的地址及所述安全内存空间的地址待链入的层级,将所述安全内存空间的地址链入所述层级,建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系。
作为一可选实施方式,所述装置还包括:第一发送模块,用于在所述链入子模块建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系之后,通过虚拟机管理器向操作系统发送普通内存空间分配请求;分配模块,用于通过所述操作系统基于所述普通内存空间分配请求,在普通内存中为所述虚拟机分配预定大小的普通内存空间,并将分配的普通内存空间的地址发送给所述虚拟机管理器;第二调用模块,用于通过所述虚拟机管理器调用第二指令,通过所述第二指令将所述普通内存空间的地址链入在所述嵌套页表的最后一级。
作为一可选实施方式,所述装置还包括:挂起模块,用于在所述第二调用子模块通过所述虚拟机管理器调用第二指令,通过所述第二指令将所述普通内存空间的地址链入在所述嵌套页表的最后一级之后,将所述嵌套页表的最后一级设为挂起状态。
作为一可选实施方式,所述装置还包括:第一判断模块,用于在所述挂起模块将所述嵌套页表的最后一级设为挂起状态之后,虚拟机发出访问内存指令,通过所述嵌套页表将第一虚拟机物理地址转换为第一普通内存空间的地址,并判断所述第一普通内存空间的地址所在的嵌套页表的最后一级是否为挂起状态;第二发送模块,用于若所述第一普通内存空间的地址所在的嵌套页表的最后一级为挂起状态,则向所述虚拟机发送异常信息;所述异常信息中包括第一虚拟机物理地址;第二判断模块,用于通过所述虚拟机根据页表中所述第一虚拟机物理地址的加密比特位,判断所述第一普通内存空间的地址是私有内存或是共享内存;其中,所述页表包括主机虚拟机虚拟地址与虚拟机物理地址的对应关系以及虚拟机物理地址对应的加密比特位;初始化模块,用于若所述第一普通内存空间的地址是私有内存,则通过所述虚拟机调用第三指令,将所述第一普通内存空间的地址中的内容进行初始化,并计算初始化后的内容的第一哈希值。
作为一可选实施方式,所述装置还包括:发出模块,用于在所述初始化模块计算初始化后的内容的第一哈希值之后,通过所述虚拟机发出读指令;其中,所述读指令包括所述第一虚拟机物理地址;转换模块,用于通过所述嵌套页表将所述第一虚拟机物理地址转换为所述第一普通内存空间的地址;计算模块,用于从所述第一普通内存空间的地址中读取内容,并计算读取的内容的第二哈希值;比对模块,用于将所述第一哈希值和所述第二哈希值比对;确定模块,用于根据所述第一哈希值和所述第二哈希值是否一致,确定所述第一普通内存空间的地址对应的内容是否被篡改。
上述实施例的装置,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图10为本申请一实施例提供的电子设备的结构示意图,如图10所示,可以包括:壳体61、处理器62、存储器63、电路板64和电源电路65,其中,电路板64安置在壳体61围成的空间内部,处理器62和存储器63设置在电路板64上;电源电路65,用于为上述电子设备的各个电路或器件供电;存储器63用于存储可执行程序代码;处理器62通过读取存储器63中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述实施例提供的任一种虚拟机的内存管理方法,因此也能实现相应的有益技术效果,前文已经进行了详细说明,此处不再赘述。
上述电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(4)其他具有数据交互功能的电子设备。
相应的,本申请的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述实施例提供的任一种虚拟机的内存管理方法,因此也能实现相应的技术效果,前文已经进行了详细说明,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本申请时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种虚拟机的内存管理方法,其特征在于,包括:
虚拟机管理器向安全处理器发送安全内存空间分配请求;
所述安全处理器基于所述安全内存空间分配请求,在预先分配的安全内存中,为虚拟机分配预定大小的安全内存空间,并将分配的所述安全内存空间的地址发送给所述虚拟机管理器;
所述虚拟机访问内存产生嵌套页表缺页中断;
所述虚拟机管理器调用第一指令,通过所述第一指令在嵌套页表中建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系。
2.根据权利要求1所述的内存管理方法,其特征在于,在所述虚拟机管理器向安全处理器发送安全内存空间分配请求之前,所述方法还包括:
配置安全内存大小;其中,所述安全内存大小根据各虚拟机的管理数据大小确定。
3.根据权利要求1所述的内存管理方法,其特征在于,所述虚拟机管理器调用第一指令,通过所述第一指令在嵌套页表中建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系,包括:
所述虚拟机管理器调用第一指令,并向所述第一指令传入所述虚拟机的标识、所述虚拟机的虚拟机物理地址、所述安全内存空间的地址以及所述安全内存空间的地址待链入的层级;所述层级为所述嵌套页表的除最后一级之前的指定层级;
所述第一指令基于所述虚拟机的标识、所述虚拟机的虚拟机物理地址、所述安全内存空间的地址及所述安全内存空间的地址待链入的层级,将所述安全内存空间的地址链入所述层级,建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系。
4.根据权利要求3所述的内存管理方法,其特征在于,在建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系之后,所述方法还包括:
虚拟机管理器向操作系统发送普通内存空间分配请求;
所述操作系统基于所述普通内存空间分配请求,在普通内存中为所述虚拟机分配预定大小的普通内存空间,并将分配的普通内存空间的地址发送给所述虚拟机管理器;
所述虚拟机管理器调用第二指令,通过所述第二指令将所述普通内存空间的地址链入在所述嵌套页表的最后一级。
5.根据权利要求4所述的内存管理方法,其特征在于,
在所述虚拟机管理器调用第二指令,通过所述第二指令将所述普通内存空间的地址链入在所述嵌套页表的最后一级之后,所述方法还包括:
将所述嵌套页表的最后一级设为挂起状态。
6.根据权利要求5所述的内存管理方法,其特征在于,
在将所述嵌套页表的最后一级设为挂起状态之后,所述方法还包括:
虚拟机发出访问内存指令,通过所述嵌套页表将第一虚拟机物理地址转换为第一普通内存空间的地址,并判断所述第一普通内存空间的地址所在的嵌套页表的最后一级是否为挂起状态;
若所述第一普通内存空间的地址所在的嵌套页表的最后一级为挂起状态,则向所述虚拟机发送异常信息;所述异常信息中包括第一虚拟机物理地址;
所述虚拟机根据页表中所述第一虚拟机物理地址的加密比特位,判断所述第一普通内存空间的地址是私有内存或是共享内存;其中,所述页表包括主机虚拟机虚拟地址与虚拟机物理地址的对应关系以及虚拟机物理地址对应的加密比特位;
若所述第一普通内存空间的地址是私有内存,则所述虚拟机调用第三指令,将所述第一普通内存空间的地址中的内容进行初始化,并计算初始化后的内容的第一哈希值。
7.根据权利要求6所述的内存管理方法,其特征在于,在计算初始化后的内容的第一哈希值之后,所述方法还包括:
所述虚拟机发出读指令;其中,所述读指令包括所述第一虚拟机物理地址;
通过所述嵌套页表将所述第一虚拟机物理地址转换为所述第一普通内存空间的地址;
从所述第一普通内存空间的地址中读取内容,并计算读取的内容的第二哈希值;
将所述第一哈希值和所述第二哈希值比对;
根据所述第一哈希值和所述第二哈希值是否一致,确定所述第一普通内存空间的地址对应的内容是否被篡改。
8.一种虚拟机的内存管理装置,其特征在于,包括:
发送模块,用于通过虚拟机管理器向安全处理器发送安全内存空间分配请求;
分配模块,用于通过所述安全处理器基于所述安全内存空间分配请求,在预先分配的安全内存中,为虚拟机分配预定大小的安全内存空间,并将分配的所述安全内存空间的地址发送给所述虚拟机管理器;
产生模块,用于通过所述虚拟机访问内存产生嵌套页表缺页中断;
建立模块,用于通过所述虚拟机管理器调用第一指令,通过所述第一指令在嵌套页表中建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系。
9.根据权利要求8所述的内存管理装置,其特征在于,所述装置还包括:
配置模块,用于在所述发送模块通过虚拟机管理器向安全处理器发送安全内存空间分配请求之前,配置安全内存大小;其中,所述安全内存大小根据各虚拟机的管理数据大小确定。
10.根据权利要求8所述的内存管理装置,其特征在于,所述建立模块,包括:
第一调用子模块,用于通过所述虚拟机管理器调用第一指令,并向所述第一指令传入所述虚拟机的标识、所述虚拟机的虚拟机物理地址、所述安全内存空间的地址以及所述安全内存空间的地址待链入的层级;所述层级为所述嵌套页表的除最后一级之前的指定层级;
链入子模块,用于通过所述第一指令基于所述虚拟机的标识、所述虚拟机的虚拟机物理地址、所述安全内存空间的地址及所述安全内存空间的地址待链入的层级,将所述安全内存空间的地址链入所述层级,建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系。
11.根据权利要求10所述的内存管理装置,其特征在于,所述装置还包括:
第一发送模块,用于在所述链入子模块建立所述虚拟机的虚拟机物理地址与所述安全内存空间的地址的映射关系之后,通过虚拟机管理器向操作系统发送普通内存空间分配请求;
分配模块,用于通过所述操作系统基于所述普通内存空间分配请求,在普通内存中为所述虚拟机分配预定大小的普通内存空间,并将分配的普通内存空间的地址发送给所述虚拟机管理器;
第二调用模块,用于通过所述虚拟机管理器调用第二指令,通过所述第二指令将所述普通内存空间的地址链入在所述嵌套页表的最后一级。
12.根据权利要求11所述的内存管理装置,其特征在于,所述装置还包括:
挂起模块,用于在所述第二调用子模块通过所述虚拟机管理器调用第二指令,通过所述第二指令将所述普通内存空间的地址链入在所述嵌套页表的最后一级之后,将所述嵌套页表的最后一级设为挂起状态。
13.根据权利要求12所述的内存管理装置,其特征在于,所述装置还包括:
第一判断模块,用于在所述挂起模块将所述嵌套页表的最后一级设为挂起状态之后,虚拟机发出访问内存指令,通过所述嵌套页表将第一虚拟机物理地址转换为第一普通内存空间的地址,并判断所述第一普通内存空间的地址所在的嵌套页表的最后一级是否为挂起状态;
第二发送模块,用于若所述第一普通内存空间的地址所在的嵌套页表的最后一级为挂起状态,则向所述虚拟机发送异常信息;所述异常信息中包括第一虚拟机物理地址;
第二判断模块,用于通过所述虚拟机根据页表中所述第一虚拟机物理地址的加密比特位,判断所述第一普通内存空间的地址是私有内存或是共享内存;其中,所述页表包括主机虚拟机虚拟地址与虚拟机物理地址的对应关系以及虚拟机物理地址对应的加密比特位;
初始化模块,用于若所述第一普通内存空间的地址是私有内存,则通过所述虚拟机调用第三指令,将所述第一普通内存空间的地址中的内容进行初始化,并计算初始化后的内容的第一哈希值。
14.根据权利要求13所述的内存管理装置,其特征在于,所述装置还包括:
发出模块,用于在所述初始化模块计算初始化后的内容的第一哈希值之后,通过所述虚拟机发出读指令;其中,所述读指令包括所述第一虚拟机物理地址;
转换模块,用于通过所述嵌套页表将所述第一虚拟机物理地址转换为所述第一普通内存空间的地址;
计算模块,用于从所述第一普通内存空间的地址中读取内容,并计算读取的内容的第二哈希值;
比对模块,用于将所述第一哈希值和所述第二哈希值比对;
确定模块,用于根据所述第一哈希值和所述第二哈希值是否一致,确定所述第一普通内存空间的地址对应的内容是否被篡改。
15.一种电子设备,其特征在于,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述权利要求1-7任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210509186.8A CN114880074A (zh) | 2022-05-11 | 2022-05-11 | 一种虚拟机的内存管理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210509186.8A CN114880074A (zh) | 2022-05-11 | 2022-05-11 | 一种虚拟机的内存管理方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114880074A true CN114880074A (zh) | 2022-08-09 |
Family
ID=82675615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210509186.8A Pending CN114880074A (zh) | 2022-05-11 | 2022-05-11 | 一种虚拟机的内存管理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114880074A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115576656A (zh) * | 2022-12-12 | 2023-01-06 | 山东三未信安信息科技有限公司 | 一种域间通讯的装置、方法及设备 |
CN116450286A (zh) * | 2023-03-13 | 2023-07-18 | 中诚华隆计算机技术有限公司 | 一种安全芯片配置方法及设备 |
CN117421118A (zh) * | 2023-10-27 | 2024-01-19 | 海光信息技术股份有限公司 | 安全内存分配、释放和相关配置方法、设备 |
-
2022
- 2022-05-11 CN CN202210509186.8A patent/CN114880074A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115576656A (zh) * | 2022-12-12 | 2023-01-06 | 山东三未信安信息科技有限公司 | 一种域间通讯的装置、方法及设备 |
CN116450286A (zh) * | 2023-03-13 | 2023-07-18 | 中诚华隆计算机技术有限公司 | 一种安全芯片配置方法及设备 |
CN116450286B (zh) * | 2023-03-13 | 2023-08-15 | 中诚华隆计算机技术有限公司 | 一种安全芯片配置方法及设备 |
CN117421118A (zh) * | 2023-10-27 | 2024-01-19 | 海光信息技术股份有限公司 | 安全内存分配、释放和相关配置方法、设备 |
CN117421118B (zh) * | 2023-10-27 | 2024-06-21 | 海光信息技术股份有限公司 | 安全内存分配、释放和相关配置方法、设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114880074A (zh) | 一种虚拟机的内存管理方法、装置及电子设备 | |
US9529611B2 (en) | Cooperative memory resource management via application-level balloon | |
US7620766B1 (en) | Transparent sharing of memory pages using content comparison | |
JP6518015B2 (ja) | 仮想アドレス空間レガシーエミュレーションシステムにおける保護キー管理およびプレフィックス変換 | |
KR102386495B1 (ko) | 데이터에 액세스하는 방법, 장치, 기기 및 매체 | |
US12007906B2 (en) | Method and apparatus for first operating system to access resource of second operating system | |
US9715410B2 (en) | Protected virtual machine function access | |
KR20130060287A (ko) | 사전-부팅 및 안전 모드 동작들을 위한 안전한 판독가능한 메모리 영역의 지원 | |
US10970105B2 (en) | Storage device operation method and physical server | |
CN112612623B (zh) | 一种共享内存管理的方法和设备 | |
CN112463307A (zh) | 一种数据传输方法、装置、设备及可读存储介质 | |
CN110750336A (zh) | 一种OpenStack虚拟机内存热扩容方法 | |
CN110554911A (zh) | 内存访问与分配方法、存储控制器及系统 | |
EP4293523A1 (en) | Technologies for memory tagging | |
US11403213B2 (en) | Reducing fragmentation of computer memory | |
Lim et al. | Virtual memory partitioning for enhancing application performance in mobile platforms | |
CN103262052A (zh) | 具有共享的输入/输出的安全分区 | |
WO2022228287A1 (zh) | 内存数据获取方法、装置及存储介质 | |
US6944792B2 (en) | Method for verifying user memory validity in operating system | |
CN117769700A (zh) | 动态可分配物理寻址元数据存储库 | |
US11301282B2 (en) | Information protection method and apparatus | |
CN114116524A (zh) | 一种创建安全页表及访问内存的方法及装置 | |
CN112148432A (zh) | 一种基于物理环境下的虚拟机通信方法、装置及龙芯主机 | |
CN111666579A (zh) | 计算机设备及其访问控制方法和计算机可读介质 | |
CN113961302A (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 |