CN117421118A - 安全内存分配、释放和相关配置方法、设备 - Google Patents

安全内存分配、释放和相关配置方法、设备 Download PDF

Info

Publication number
CN117421118A
CN117421118A CN202311415500.7A CN202311415500A CN117421118A CN 117421118 A CN117421118 A CN 117421118A CN 202311415500 A CN202311415500 A CN 202311415500A CN 117421118 A CN117421118 A CN 117421118A
Authority
CN
China
Prior art keywords
memory
secure
preset continuous
continuous memory
preset
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
Application number
CN202311415500.7A
Other languages
English (en)
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.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co 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 Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202311415500.7A priority Critical patent/CN117421118A/zh
Publication of CN117421118A publication Critical patent/CN117421118A/zh
Pending legal-status Critical Current

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/5022Mechanisms to release resources
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

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)

Abstract

本发明实施例提供一种安全内存分配、释放和相关配置方法、设备,所述安全内存分配方法包括:发送安全内存分配请求,所述安全内存分配请求用于请求分配预置连续内存作为安全内存,所述预置连续内存在未被分配为安全内存时作为普通内存进行分配;获取所分配的预置连续内存的地址信息;发送包括所述地址信息的安全内存使能请求,所述安全内存使能请求用于基于所述地址信息,请求安全处理器配置所述地址信息对应的预置连续内存为安全内存,所述方法提高了内存的利用率。

Description

安全内存分配、释放和相关配置方法、设备
技术领域
本发明实施例涉及虚拟机技术领域,具体涉及一种安全内存分配、释放和相关配置方法、设备。
背景技术
通过虚拟化技术(Virtualization),物理主机可虚拟化出多台虚拟机(VirtualMachine,VM),从而最大化的利用物理主机的硬件资源;虚拟化出的每台虚拟机可被分配内存(空间),每台虚拟机分配的内存空间主要用于任务消耗及支持虚拟化。
安全虚拟化技术是可对虚拟机的内存空间进行安全保护的虚拟化技术,如通过对虚拟机的内存空间提供加密或隔离等安全保护措施,可提高虚拟机的数据安全,其中,具有安全保护措施的虚拟机的内存空间可称为安全内存,具有安全内存的虚拟机可称为安全虚拟机。
然而,现有的安全虚拟架构对内存的利用率有待提高。
发明内容
有鉴于此,本发明实施例提供一种安全内存分配、释放和相关配置方法、设备,提高安全虚拟架构对内存的利用率。
为解决上述问题,本发明实施例提供如下技术方案:
第一方面,本发明实施例提供一种安全内存分配方法,应用于虚拟机模块,包括:
发送安全内存分配请求,所述安全内存分配请求用于请求分配预置连续内存作为安全内存,所述预置连续内存在未被分配为安全内存时作为普通内存进行分配;
获取所分配的预置连续内存的地址信息;
发送包括所述地址信息的安全内存使能请求,所述安全内存使能请求用于基于所述地址信息,请求安全处理器配置所述地址信息对应的预置连续内存为安全内存。
可选的,所述预置连续内存包括多个预置连续内存块,所述安全内存分配请求所请求的安全内存的空间大小以预置连续内存块的大小为基础单位。
可选的,所述安全内存使能请求中还包括预置连续内存块所分配的安全虚拟机的虚拟机标识,以使得安全处理器确定访问作为安全内存块的预置连续内存块的虚拟机是否为安全内存块所属的安全虚拟机。
可选的,所述安全内存分配请求所请求的安全内存的空间大小在安全虚拟机的初始镜像被加载时,基于处理器模块的请求遍历安全虚拟机的内存资源后计算得到。
第二方面,本发明实施例提供一种安全内存分配方法,应用于安全内存管理模块,包括:
获取安全内存分配请求,所述安全内存分配请求用于请求分配预置连续内存作为安全内存,所述预置连续内存在未被分配为安全内存时作为普通内存进行分配;
基于所述安全内存分配请求,向连续内存分配CMA系统申请与之匹配的预置连续内存;
获取所分配的预置连续内存的地址信息,将所分配的预置连续内存的地址信息反馈至虚拟机模块,以使虚拟机模块发送包括所述地址信息的安全内存使能请求,以请求安全处理器配置所述地址信息对应的预置连续内存为安全内存。
可选的,所述预置连续内存包括多个预置连续内存块,所述安全内存分配请求所请求的安全内存的空间大小以预置连续内存块的大小为基础单位。
第三方面,本发明实施例提供一种安全内存分配方法,应用于安全处理器,包括:
获取包括所分配的预置连续内存的地址信息的安全内存使能请求,所述预置连续内存在未被分配为安全内存时作为普通内存进行分配;
基于所述安全内存使能请求,配置与地址信息对应的预置连续内存的状态信息,使得预置连续内存作为安全内存。
可选的,所述配置与地址信息对应的预置连续内存的状态信息,包括:
配置预置连续内存的状态为有效,从而使得预置连续内存作为安全内存。
可选的,所述预置连续内存包括多个预置连续内存块;安全页面拥有者表格中具有多个控制条目,一个控制条目对应一预置连续内存块,所述配置预置连续内存的状态为有效,包括:
配置对应预置连续内存块的控制条目中的有效标识位为有效,所述有效标识位用于标记预置连续内存块是否为有效的安全内存块。
可选的,所述配置与所述地址信息对应的预置连续内存的状态信息,还包括:
配置对应预置连续内存块的控制条目中的访问权限标识,所述访问权限标识用于标记预置连续内存块作为安全内存块时是否为可写入。
可选的,所述配置与所述地址信息对应的预置连续内存的状态信息,还包括:
配置对应预置连续内存块的控制条目中,预置连续内存块作为安全内存块时所属的安全虚拟机的虚拟机标识。
第四方面,本发明实施例提供一种安全内存释放方法,应用于虚拟机模块,包括:
发送安全内存无效请求,所述安全内存无效请求包括安全内存的地址信息,用于请求安全处理器配置所述地址信息对应的安全内存为预置连续内存;
在获取所述安全内存无效请求响应成功信息后,发送预置连续内存释放请求,所述预置连续内存释放请求用于请求连续内存分配CMA系统释放所述预置连续内存,以使所述预置连续内存作为普通内存进行分配。
可选的,所述安全内存为多个安全内存块时,所述安全内存无效请求的地址信息为多个安全内存块对应的地址段的集合。
可选的,所述安全内存无效请求中还包括安全内存所属的安全虚拟机的虚拟机标识,以使得安全处理器基于所述虚拟机标识进行身份验证。
第五方面,本发明实施例提供一种安全内存释放方法,应用于安全处理器,包括:
获取安全内存无效请求,所述安全内存无效请求包括安全内存的地址信息;
基于所述安全内存无效请求,配置所述地址信息对应的安全内存为预置连续内存,所述预置连续内存用于在被释放后作为普通内存进行分配。
可选的,所述配置所述地址信息对应的安全内存为预置连续内存,包括:
配置与所述地址信息对应的安全内存的状态为无效,以指示该安全内存为预置连续内存。
可选的,所述安全内存包括多个安全内存块;安全页面拥有者表格中具有多个控制条目,一个控制条目对应一预置连续内存块,所述配置与地址信息对应的安全内存的状态为无效,包括:
配置与安全内存对应的预置连续内存块的控制条目中的有效标识位为无效,所述有效标识位用于标记预置连续内存块是否为有效的安全内存块。
可选的,所述安全内存无效请求中还包括安全内存所属的安全虚拟机的虚拟机标识,所述获取安全内存无效请求之后,所述配置所述地址信息对应的安全内存为预置连续内存之前,还包括:
基于虚拟机标识进行身份验证,在确定所述虚拟机标识与安全页面拥有者表格记录的虚拟机标识一致时,执行所述配置所述地址信息对应的安全内存为预置连续内存的步骤。
第六方面,本发明实施例提供一种安全内存释放方法,应用于安全内存管理模块,包括:
获取预置连续内存释放请求,所述预置连续内存释放请求包括待释放的预置连续内存的地址信息,所述预置连续内存由安全处理器基于安全内存的地址信息配置得到;
基于预置连续内存释放请求,向连续内存分配CMA系统请求释放所述预置连续内存,以使所述地址信息对应的预置连续内存作为普通内存进行分配。
可选的,所述预置连续内存包括多个预置连续内存块,所述安全内存的地址信息为多个安全内存块对应的地址段的集合。
第七方面,本发明实施例提供一种预置连续内存配置方法,包括:
安全内存管理模块发送预置连续内存配置信息至连续内存分配CMA系统;所述预置连续内存配置信息包括所述预置连续内存的地址信息;所述预置连续内存为安全内存管理模块基于所述预置连续内存分配信息申请得到的预设数量的连续内存;
所述CMA系统基于所述预置连续内存配置信息,配置预置连续内存为CMA内存;
安全处理器驱动基于所述预置连续内存的地址信息,生成对应所述预置连续内存的初始化配置请求;
安全处理器基于所述初始化配置请求,为所述预置连续内存配置安全内存控制区域,所述安全内存控制区域用于存储对应所述预置连续内存的安全内存控制信息,所述安全内存控制信息用于存储对应所述预置连续内存的虚拟机控制块。
可选的,所述CMA系统基于所述预置连续内存配置信息,配置所述预置连续内存为CMA内存,包括:
将所述预置连续内存的地址信息保存至CMA系统的连续内存数组中,以将所述预置连续内存作为CMA内存进行管理;
其中,所述预置连续内存在CMA系统中遵循以下管理规则:
在虚拟机模块不使用作为CMA内存的预置连续内存时,系统的内存管理系统将该CMA内存拆分为可移动类型页面进行分配和管理;在虚拟机模块使用作为CMA内存的预置连续内存时,将该CMA内存对应的预置连续内存作为连续内存分配至虚拟机模块,其中,已分配的内存页面所保存的可移动类型的数据可以迁移至其他内存页面。
可选的,所述预置连续内存包括多个节点的内存,所述预置连续内存的地址信息包括与之对应的多个节点的内存的地址信息。
可选的,所述安全处理器驱动基于所述预置连续内存的地址信息,生成对应所述预置连续内存的初始化配置请求,包括:
将预置连续内存按照预设大小进行分割,形成多个具有预设大小的预置连续内存块,并将所述预置连续内存的分割信息发送至安全内存管理模块;
在接收到安全内存管理模块用于表明成功接收该分割信息的响应信息后,基于所述预置连续内存的分割信息,生成对应所述预置连续内存的初始化配置请求。
可选的,所述安全处理器驱动基于所述预置连续内存的地址信息,生成对应所述预置连续内存的初始化配置请求之前,还包括:
获取所述预置连续内存的地址信息,并将所述预置连续内存的地址信息发送至安全处理器;
在接收安全处理器指示配置所述预置连续内存的地址信息已完成的响应信息后,执行所述将预置连续内存按照预设大小进行分割,形成多个具有预设大小的预置连续内存块的步骤。
可选的,所述安全处理器基于所述初始化配置请求,为所述预置连续内存配置安全内存控制区域,包括:
基于所述初始化配置请求中的所述预置连续内存的分割信息,为预置连续内存块配置与之对应的安全内存控制区域。
第八方面,本发明实施例提供一种计算设备,其中,包括:处理器核心、内存控制器、内存和安全处理器,所述计算设备用于执行本发明实施例所述的安全内存分配方法,或者,如本发明实施例所述的安全内存释放方法,或者,如本发明实施例所述的预置连续内存配置方法
第九方面,本发明实施例提供一种存储介质,所述存储介质存储有,实现本发明实施例所述的安全内存分配方法的程序,或,实现本发明实施例所述的安全内存释放方法的程序,实现本发明实施例所述的预置连续内存配置方法的程序。
本发明实施例提供的安全内存分配、释放和相关配置方法、设备,所述安全内存分配方法包括:发送安全内存分配请求,所述安全内存分配请求用于请求分配预置连续内存作为安全内存,所述预置连续内存在未被分配为安全内存时作为普通内存进行分配;获取所分配的预置连续内存的地址信息;发送包括所述地址信息的安全内存使能请求,所述安全内存使能请求用于基于所述地址信息,请求安全处理器配置所述地址信息对应的预置连续内存为安全内存。
可以看出,本发明实施例通过配置预置连续内存,使得预置连续内存在未被分配为安全内存时作为普通内存进行分配,而在需要分配为安全内存时,再通过配置所分配的预置连续内存为安全内存,从而提高了内存的利用率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为基于虚拟化技术的云服务可选架构;
图2为一种安全虚拟化技术的计算设备的可选架构示意图;
图3为一种安全内存的访问流程的可选示意图;
图4本发明实施例提供的基于安全虚拟化技术的计算设备的可选架构示意图;
图5本发明实施例提供的预置连续内存配置流程的可选示意图;
图6本发明实施例提供的预置连续内存配置流程的另一可选示意图;
图7本发明实施例提供的预置连续内存初始化流程的可选示意图;
图8本发明实施例提供的安全内存分配流程的可选示意图;
图9本发明实施例提供的控制条目的可选结构图;
图10本发明实施例提供的预置连续内存释放流程的可选示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
虚拟化技术可应用于多种场景,特别的,随着云服务的发展,虚拟化技术在云服务这一场景中得到了越来越广泛的应用。为便于理解虚拟化技术,下面以基于虚拟化技术的云服务为例,对虚拟化技术进行介绍。
参照图1所示基于虚拟化技术的云服务可选架构,该云服务架构可以包括:云主机100、网络200、用户301至30n;
其中,云主机100为云服务提供方(如云服务厂商)部署在网络侧的用于提供云服务的主机设备(主机设备的形式可以是服务器)。基于不同用户的需求,云主机可通过虚拟化技术为不同用户创建一台或多台虚拟机,例如,用户可以根据业务需求,请求云主机为用户创建适应其业务需求的多台虚拟机,从而用户可以在属于其的多台虚拟机上分别运行应用,以通过多台虚拟机运行的应用来协作完成用户特定的业务。可以理解的是,虚拟机即为用户提供服务的客户机。
网络200可以认为是互联网,或者其他形式的具有通信功能的网络,云主机与用户之间通过网络实现通信和数据传输,本发明实施例并不限制网络200的具体网络形式。
用户301至30n为使用云服务的注册用户,其数量可以为多个,本发明实施例并不限制n的具体数值。在云服务场景下,每一个用户可以在云主机中拥有属于其的一台或多台虚拟机,以利用属于用户的虚拟机来完成用户特定的业务。
为保障虚拟机数据的安全性,本发明实施例可通过安全虚拟化技术对内存中保存的虚拟机数据进行加密。作为一种可选示例,图2示出了一种安全虚拟化技术的计算设备的可选架构示意图,如图2所示,该架构可以包括:CPU(Central Processing Unit,中央处理器)核心1、内存控制器2、内存3和安全处理器(PSP,Platform Secure Processor)4。
其中,CPU核心1可基于运行在其内的主机操作系统(下称主机)10,通过虚拟化技术虚拟化出多台虚拟机12,该多台虚拟机12可基于主机10中的虚拟机模块(KVM,Kernel-based Virtual Machine)13和处理器模块(图中以QEMU,Quick EMUlator为示例进行说明)14进行虚拟机内存的管理和分配。
内存控制器2是控制内存3,并且使内存3与CPU核心1之间交换数据的硬件。内存3中的部分内存空间或者所有内存空间可被分配为虚拟机使用的虚拟机内存。为了提升虚拟机数据的安全性,安全虚拟化技术可对虚拟机的内存进行安全保护,例如可对虚拟机的内存提供加密或隔离等安全保护措施;示例的,通过安全虚拟化技术,可在内存3中隔离部分内存作为安全内存,并以剩余内存作为普通内存;安全内存可以采用安全保护机制,以使安全内存的安全性高于普通内存。
安全内存在分配给虚拟机后,可以由虚拟机独占分配,即便虚拟机管理器也无法实现访问和控制,从而防止物理主机、虚拟机管理器对虚拟机的数据访问和篡改,提升虚拟机的数据安全性。其中,可使用安全内存的虚拟机可称为安全虚拟机(Secure IsolationVirtualization,SIV),未使用安全内存的虚拟机可称为普通虚拟机,一般的,安全虚拟机的可同时使用安全内存和普通内存,而普通虚拟机则仅使用普通内存。
安全处理器4为专门设置的负责处理与安全虚拟机的安全相关操作的处理器,例如,安全处理器4可在安全虚拟机运行过程中进行安全内存的页面分配和管理;虚拟机模块13可配置与安全处理器4相通信的接口,以实现与安全虚拟机相关的安全信息的交互。
参考图3示出的一种安全内存的访问流程的可选示意图,在安全内存的访问流程中,可以基于安全页面所有者表格(SPOT表)进行安全内存的访问。安全页面所有者表格配置于地址总线,并由安全处理器维护,用于记录安全内存的内存页面与安全虚拟机的对应关系;在内存页面的地址与安全虚拟机对应时,表明该内存页面为分配至该安全虚拟机的安全内存,在内存页面的地址与安全虚拟机不对应时,表明该内存页面非分配至该安全虚拟机的安全内存。
在具体的示例中,CPU核心可以将虚拟机虚拟地址GVA翻译得到的主机物理地址HPA,以及安全虚拟机对应的虚拟机标识(即VMID),发送到地址总线上,并查询SPOT表,若该VMID和内存的主机物理地址HPA匹配,内存总线将内存读写请求继续发送到内存控制器;若该VMID和内存的主机物理地址HPA不匹配,内存总线不转发内存读写请求到内存控制器,直接返回固定模式内容给CPU核心,并触发访问异常流程。参考图3所示,虚拟机1的VMID为VMID1,内存1的HPA为HPA1,内存2的HPA为HPA2,在虚拟机1访问内存2时,虚拟机的VMID1与内存2的HPA2对应的VMID2不匹配,则返回固定模式内容给CPU核心,并触发访问异常流程。
然而,安全内存需在系统启动时,自内存中选取预设大小的内存空间进行配置后得到,从而在系统启动后分配给安全虚拟机。配置为安全内存的内存空间不存在回收机制,也就是说,一旦某部分内存被配置为安全内存,便仅可以作为安全内存分配至安全虚拟机,而不再作为普通内存参与分配。在此前提下,若系统启动之后,当安全虚拟机对安全内存需求下降时,安全内存并不能恢复为普通内存返还至系统,从而造成内存资源浪费。
有鉴于此,本发明提供了一种安全内存分配、释放和相关配置方法、设备,所述安全内存分配方法包括:发送安全内存分配请求,所述安全内存分配请求用于请求分配预置连续内存作为安全内存,所述预置连续内存在未被分配为安全内存时作为普通内存进行分配;获取所分配的预置连续内存的地址信息;发送包括所述地址信息的安全内存使能请求,所述安全内存使能请求用于基于所述地址信息,请求安全处理器配置所述地址信息对应的预置连续内存为安全内存。
本发明实施例可预先选取预设数量的连续内存作为预置连续内存加入连续内存分配CMA系统,使得预置连续内存在未被分配为安全内存时作为普通内存进行分配,而在需要分配为安全内存时,再通过配置所分配的预置连续内存为安全内存,从而提高了内存的利用率。
作为本发明实施例公开内容的一种可选实现,本发明一个实施例提供了一种基于安全虚拟化技术的计算设备,参考图4示出的基于安全虚拟化技术的计算设备的可选架构示意图,与图2的架构不同的是,所述计算设备进一步包括:安全内存管理模块(SIV MemoryManagement,SIV MM)SIV_MM,所述安全内存管理模块用于将预置连续内存配置至连续内存分配CMA系统中,并基于预置连续内存的申请或释放,实现内存空间在安全内存和普通内存之间的灵活转换,提高内存的利用率。
下面,首先对预置连续内存的配置流程进行说明。具体的,参考图5所示的预置连续内存配置流程的可选示意图,所述预置连续内存的配置流程包括:
步骤S100:安全内存管理模块获取预置连续内存分配信息;
所述预置连续内存分配信息用于指示用于作为预置连续内存的连续内存的大小,以及,该连续内存所在的内存节点(node),从而可以基于该预置连续内存分配信息,确定具体的预置连续内存的分配。
具体的,所述预置连续内存分配信息可以在系统初始化过程中形成。具体的,在系统的初始化过程中,可以参考内核启动参数或默认配置,计算每个内存节点对应的安全页面所有者表格(SPOT表)可覆盖的内存范围,从而确定具体的内存节点(node)以及其对应的用于作为预置连续内存的连续内存的大小。
其中,所述连续内存的大小可以以稀疏内存模型中的内存块(section)为单元进行描述,从而以较大的单位进行内存的管理,降低内存的管理成本。
步骤S110:安全内存管理模块基于所述预置连续内存分配信息申请预置连续内存;
在获取具体的预置连续内存分配信息后,可以基于该预置连续内存分配信息,申请对应的预置连续内存。
在具体的示例中,所述预置连续内存的申请可以在系统初始化过程中执行。所述安全内存管理模块可以通过预置连续内存申请函数(例如cma_declare_contiguous函数),向系统申请指定大小的连续内存作为预置连续内存。
步骤S120:安全内存管理模块发送预置连续内存配置信息至连续内存分配CMA系统;
所述预置连续内存配置信息用于将所述预置连续内存配置至CMA(ContiguousMemory Allocator,连续内存分配)系统,以使CMA系统进行预置连续内存的管理。
其中,所述预置连续内存配置信息中包括所述预置连续内存的地址信息,以基于所述预置连续内存的地址信息进行内存的分配和释放。
相应的,在安全内存管理模块发送所述预置连续内存配置信息后,CMA系统可以获取该预置连续内存配置信息,从而基于该预置连续内存配置信息执行对应的操作。
步骤S130:CMA系统基于所述预置连续内存配置信息,配置所述预置连续内存为CMA内存;
通过将所述预置连续内存配置至CMA系统,以使得CMA系统进行预置连续内存的管理。
具体的,可以将所述预置连续内存的地址信息保存至CMA系统的连续内存smr_area数组中,以将所述预置连续内存作为CMA内存由CMA系统进行预置连续内存的管理。
其中,CMA系统用于分配连续内存,该连续内存可以理解为物理层面上连续的大块内存,其中,连续用于表明内存在物理上为连续的内存区域,在地址上表现为物理地址的连续;大块内存用于表明用于内存管理的基础单元为较大的内存空间,与内存管理系统以基础单元为页面进行管理的方式不同,大块内存在内存管理上具有较大的基础单元,能够在管理层面降低内存管理成本,其中,所述大块内存的基础单元具体可以基于系统配置进行设置,例如可以为128M字节。
CMA系统可以基于设备驱动进行内存的管理。在具体的实现中,CMA系统中的CMA内存的管理遵循以下管理规则:
在预设模块不使用一CMA内存时,系统的内存管理系统将该CMA内存拆分为可移动类型页面(内存页面的一种,用于保存可移动类型的数据)进行分配和管理;在预设模块使用该CMA内存时,将该CMA内存作为连续内存进行分配,其中,已分配的内存页面作为可移动类型页面,其所保存的可移动类型的数据可以迁移至其他内存页面。
基于上述管理规则,CMA系统可以灵活配置其所管理的大块内存(即CMA内存),从而提高内存的利用率。
在具体的实现中,将预置连续内存作为CMA内存进行管理时,可以基于虚拟机模块进行预置连续内存的调取,即,在虚拟机模块不使用作为CMA内存的预置连续内存时,系统的内存管理系统将该CMA内存拆分为可移动类型页面进行分配和管理;在虚拟机模块使用作为CMA内存的预置连续内存时,将该CMA内存对应的预置连续内存作为连续内存分配至虚拟机模块,其中,已分配的内存页面作为可移动类型页面,其所保存的可移动类型的数据可以迁移至其他内存页面。
在可选的示例中,安全内存管理模块可以通过向虚拟机模块提供相应的接口,例如,提供allocate_secure_memory和free_secure_memory接口,其中,allocate_secure_memory接口用于供虚拟机模块申请预置连续内存作为安全内存,free_secure_memory接口用于供虚拟机模块释放安全内存作为预置连续内存。
在本发明实施例中,所述内存管理系统可以包括伙伴系统(Buddy System)。在具体的示例中,CMA系统管理的CMA内存,在预设模块不使用时,CMA内存可以作为可移动类型页面,通过内存管理系统中的伙伴系统进行管理和分配;在预设模块使用时,则基于预设模块所需的内存大小,将CMA内存中符合要求的连续内存分配给设备驱动,其中,若CMA内存中某些内存页面被占用以致无法得到所需内存大小的连续内存时,则通过页面迁移的方式将已占用的内存页面所保存的数据迁移至其他内存页面,以得到所需内存大小的连续内存,并分配给预设模块。
具体在本发明实施例中,在将预置连续内存配置至CMA系统后,所述预置连续内存可以基于安全处理器驱动进行与之相关的安全处理器方的配置,以使得预置连续内存能够作为安全内存进行分配。下面,参考图6所示的预置连续内存配置流程的另一可选示意图,结合安全处理器驱动、安全处理器描述对预置连续内存的配置流程。
步骤S140:安全处理器驱动基于所述预置连续内存的地址信息,生成对应所述预置连续内存的初始化配置请求;
安全处理器驱动可以基于与安全内存管理模块或CMA系统的交互获取预置连续内存的地址信息,例如,发送预置连续内存地址请求至CMA系统,之后,CMA系统响应该预置连续内存地址请求,将预置连续内存的地址信息发送至安全处理器驱动。在其他示例中,安全处理器驱动也可以基于预先配置的信息获取预置连续内存的地址信息,例如,CMA系统或安全内存管理模块可以将预置连续内存的地址信息预先配置至一预设位置,例如,可以将该预置连续内存的地址信息保存至smr_area数组中,并由安全处理器驱动读取该预设位置的地址信息,从而获取预置连续内存的地址信息。
其中,需要说明的是,所述预置连续内存可以包括多个节点的内存,相应的,所述预置连续内存的地址信息可以包括与之对应的多个节点的内存的地址信息。
所述初始化配置请求用于实现对预置连续内存的初始化配置。所述初始化配置例如可以为预置连续内存配置与之对应的安全内存控制区域(Secure Memory ControlRegion,SMCR),所述安全内存控制区域用于存储对应所述预置连续内存的虚拟机控制块。可以理解的是,虚拟机控制块用于存储对应内存的页表的起始地址,通过将SMCR中存储的虚拟机控制块的控制寄存器,指向预置连续内存(也可理解为安全内存)所属的安全虚拟机的页表,从而可以利用该页表管理安全内存的物理地址的映射,实现安全虚拟机的虚拟机物理地址到主机(宿主机)物理地址的映射。
在优选示例中,所述安全处理器驱动的初始化配置请求中还可以进一步包括所述预置连续内存的分割信息。具体的,安全处理器驱动可以在初始化配置前将预置连续内存按照预设大小进行分割,形成多个具有预设大小的预置连续内存块,并将所述预置连续内存的分割信息发送至安全内存管理模块,以使安全内存管理模块基于该分割信息对分割的预置连续内存块进行分配,例如,以预设大小为128M字节为例,安全内存管理模块为安全虚拟机分配安全内存时,可以以预设大小的内存块为单元进行分配,从而基于相应的流程将预设大小的预置连续内存块分配给对应的安全虚拟机,并将该预置连续内存块转换为安全内存块,或者,在安全虚拟机被销毁时,可以将配置至该安全虚拟机的安全内存块释放,进而作为预置连续内存块配置至CMA系统中作为普通内存进行分配。相应的,与预置连续内存对应的安全内存控制区域也可以预置连续内存块为单位进行配置,例如,为一个预设大小的预置连续内存块配置一安全内存控制区域。
所述初始化配置请求用于请求对预置连续内存的初始化配置,从而为所述预置连续内存配置与之对应的安全内存控制区域,所述安全内存控制区域用于存储对应所述预置连续内存的虚拟机控制块。
可以理解的是,在安全处理器驱动对预置连续内存进行分割的示例中,所述初始化配置请求中可以包括对应预置连续内存的分割信息,从而使得安全处理器基于该分割信息确定具体的预置连续内存块,并进一步基于预置连续内存块进行安全内存控制区域的配置。
需要说明的是,对预置连续内存进行分割的步骤可以在安全处理器驱动处执行,也可以在安全处理器处执行,只要相应的分割信息通过对应的交互流程后流转至安全内存管理模块、安全处理器驱动,以及安全处理器即可。
在一个具体的示例中,在进行预置连续内存的分割前,安全处理器驱动还可以首先将预置连续内存的地址信息配置至安全处理器,具体如安全处理器的动态安全内存管理系统,从而使得安全处理器知晓具体的预置连续内存所在的内存区域,进而基于该地址信息,完成具体的安全内存控制区域的配置。
步骤S150:安全处理器基于所述初始化配置请求,为所述预置连续内存配置安全内存控制区域;
安全处理器在获取所述初始化配置请求后,可以控制安全处理器中的动态安全内存管理系统进行安全内存控制区域的配置,从而基于安全内存控制区域存储的虚拟机控制块,指示对应的页表,从而给出对应的内存地址映射关系。
在可选的示例中,所述安全处理器可以针对预置连续内存整体进行安全内存控制区域的配置,也可以对预置连续内存进行分割,并基于所分割得到的预置连续内存块进行安全内存控制区域的配置。其中,在基于所分割得到的预置连续内存块进行虚拟机控制块的配置,可以基于预置连续内存块为单位进行不同的页表指向。
可以理解的是,对应不同的安全虚拟机,对应的页表是不同的,在为预置连续内存块配置具体的安全内存控制区域后,可以为预置连续内存块分配不同的安全虚拟机,相应的,不同预置连续内存块对应的虚拟机控制块可以对应不同的安全虚拟机。
本发明实施例通过配置预置连续内存,使得预置连续内存在未被分配为安全内存时作为普通内存进行分配,而在需要分配为安全内存时,再通过配置所分配的预置连续内存为安全内存,从而提高了内存的利用率。
在一个具体的示例中,安全处理器驱动向安全处理器配置预置连续内存的地址信息,以及,生成初始化配置请求,并由安全处理器配置对应预置连续内存的安全内存控制区域的过程可以理解为预置连续内存的初始化流程,在一个可选示例中,参考图7所示的预置连续内存初始化流程的可选示意图,所述预置连续内存的初始化流程中,安全处理器驱动向安全处理器配置预置连续内存的地址信息可以包括:
步骤S200:安全处理器驱动获取所述预置连续内存的地址信息,并将所述预置连续内存的地址信息发送至安全处理器;
所述安全处理器驱动获取所述预置连续内存的地址信息的过程可以参考步骤S140中的描述,例如可以基于与安全内存管理模块或CMA系统的交互获取预置连续内存的地址信息,或者,基于预先配置的信息获取预置连续内存的地址信息。
在获取所述预置连续内存的地址信息后,安全处理器驱动还可以基于寄存器交互将该地址信息传输至安全处理器,例如通过mailbox寄存器进行通信。在可选示例中,在系统启动时,可以通过配置PROTECT_BASE_ADDRn和PROTECT_LIMIN_REGISTERn寄存器完成预置连续内存的地址信息在安全处理器中的配置。
步骤S210:安全处理器将所述预置连续内存的地址信息配置至预设区域;
所述预设区域可以为安全处理器内部的存储设备中的某一区域,用于记录预置连续内存的地址信息,从而在相应流程中,确定发送至安全处理器的内存地址是否位于预置连续内存的地址范围内,以便于确定所发送的内存地址对应的内存是否为预置连续内存。
其中,安全处理器在配置所述预置连续内存的地址信息后,可以进一步发出响应消息,指示安全处理器驱动相应的配置流程已完成。
接着,执行生成对应所述预置连续内存的初始化配置请求的流程,该流程包括:
步骤S220:安全处理器驱动将预置连续内存按照预设大小进行分割,形成多个具有预设大小的预置连续内存块,并将所述预置连续内存的分割信息发送至安全内存管理模块;
所述预设大小可以基于系统的性能参数,以及硬件的处理能力进行确定,在可选示例中,所述预设大小例如可以为128M字节,也可以为256M字节,64M字节,或者,512M字节等,本发明在此不做具体的限定。
需要说明的是,所述将预置连续内存按照预设大小进行分割,并不是在物理上的分割,而是基于预置连续内存的地址信息,进行不同内存区域的划分,从而表现为不同的内存块,在内存的地址层面,可以理解为将预置连续内存的地址分割为多个不同的对应所述预置连续内存块的地址信息。其中,所述分割信息可以为多个不同的对应所述预置连续内存块的地址信息,也可以为预置连续内存的地址信息(即整体的地址信息,包括起始地址信息和终止地址信息)和所需分割的预设大小的信息,而并不必需为明确的多个不同的对应所述预置连续内存块的地址信息。
所述安全处理器驱动将预置连续内存按照预设大小进行分割,可以作为安全内存管理模块进行预置连续内存块(后期作为安全内存块)分配的基础,也可以作为安全处理器进行预置连续内存块管理控制的基础。
步骤S230:安全内存管理模块接收所述预置连续内存的分割信息;
安全处理器驱动将所述预置连续内存的分割信息发送至安全内存管理模块,相应的,安全内存管理模块可以获取所述预置连续内存的分割信息,并基于所述预置连续内存的分割信息,以预置连续内存块为基础单位进行内存块的分配。
在具体的示例中,所述安全内存管理模块可以在获取该分割信息后,反馈所述安全处理器驱动对应的响应信息,以表明成功接收该分割信息。
步骤S240:安全处理器驱动基于所述预置连续内存的分割信息,生成对应所述预置连续内存的初始化配置请求;
在获取安全内存管理模块的响应信息后,安全处理器驱动可以基于所述预置连续内存的分割信息,生成对应所述预置连续内存的初始化配置请求。其中,所述初始化预置请求包括所述预置连续内存的分割信息。
其中,所述初始化配置请求发送至安全处理器,以实现对所述预置连续内存的初始化配置,为预置连续内存配置对应的安全内存控制区域。在具体的示例中,安全处理器驱动仍可以基于寄存器交互将该地址信息传输至安全处理器,例如通过mailbox寄存器进行通信。在可选示例中,可以在完成预置连续内存的地址信息在安全处理器中的配置后,还可以进一步通过SivSmcrBase和SivSmcrLimit寄存器实现预置连续内存的初始化配置请求信息的传递,并利用SET_SMCR命令,在安全处理器中配置安全内存控制区域。
进一步的,安全处理器配置对应预置连续内存的安全内存控制区域的流程可以具体为:
步骤S250:安全处理器基于所述初始化配置请求中的所述预置连续内存块的分割信息,为预置连续内存块配置与之对应的安全内存控制区域;
可以理解的是,基于所述分割信息,可以确定各预置连续内存块对应地址信息,在配置安全内存控制区域时,可以将不同预置连续内存块的地址信息存储至不同的安全内存控制区域。
其中,不同安全内存控制区域内存储有不同的虚拟机控制块,与之对应的,不同的预置连续内存块对应有不同的虚拟机控制块,基于虚拟机控制块的控制,预置连续内存块可以进行各自所分配的安全虚拟机的页表指向。
在进行预置连续内存的配置之后,可以将未被分配的预置连续内存作为普通内存进行使用,将分配给安全虚拟机的预置连续内存作为安全内存使用,并将自安全虚拟机释放的预置连续内存再次作为普通内存进行使用。在可选实现中,参考图8所示的安全内存分配流程的可选示意图,为安全虚拟机分配预置连续内存作为安全内存的流程可以包括:
步骤S300:虚拟机模块发送安全内存分配请求至安全内存管理模块,所述安全内存分配请求用于请求分配预置连续内存作为安全内存;
所述安全内存分配请求可以包括所请求的安全内存的空间大小,从而基于该安全内存分配请求,申请所需的安全内存。所请求的安全内存的空间大小可以在安全虚拟机的初始镜像被加载时,虚拟机模块可以基于QEMU的请求,通过遍历安全虚拟机的内存资源后计算得到,并通知其内的安全处理器驱动。其中,虚拟机模块具体可以根据虚拟机物理内存的大小,计算内存资源如VMSA(Virtual Machine Save Area,物理内存页面)、SCCS(安全代码控制信息结构)、NPT(Nested Page Table,嵌套页表)等的需求,从而确定所需的安全内存的空间大小。
在具体的示例中,所请求的安全内存的空间大小可以以预置连续内存块(也可称为安全内存块)的大小为基础单位,例如,预置连续内存块为128M字节时,所请求的安全内存为n个预置连续内存块(n为正整数),对应的所请求的安全内存为n*128M字节。
在具体的示例中,虚拟机模块可以基于allocate_secure_memory接口向安全内存管理模块发送安全内存分配请求,以申请对应的预置连续内存作为安全内存。
可以理解的是,所述预置连续内存在未被分配为安全内存时,在CMA系统中作为普通内存进行分配,从而提高内存的利用率。
步骤S310:安全内存管理模块基于安全内存分配请求,向CMA系统申请与之匹配的预置连续内存;
可以理解的是,基于所述安全内存分配请求所请求的安全内存的空间大小,可以自CMA系统申请与之匹配的预置连续内存。在所请求的安全内存的空间大小以预置连续内存块的大小为基础单位时,则向CMA系统申请与之匹配的数量的预置连续内存块。
相应的,CMA系统基于预设的管理规则进行CMA内存的管理,在预置连续内存作为CMA内存时,虚拟机模块可以申请分配作为CMA内存的预置连续内存。
需要说明的是,在CMA系统分配预置连续内存时,若作为CMA内存的预置连续内存中的某些内存页面被占用以致无法得到所需内存大小的连续内存时,则可以通过页面迁移的方式将已占用的内存页面所保存的数据迁移至其他内存页面,以得到所需内存大小的连续的预置连续内存。
其中,在以预置连续内存块为基础单位进行申请时,CMA系统对应分配与之匹配的数量的CMA内存块,可以理解的是,向CMA系统申请的预置连续内存块,一个预置连续内存块为一个连续的具有基础单位大小的预置连续内存,在申请的预置连续内存块为多个时,多个预置连续内存块之间可以连续,也可以不连续,本发明在此不做具体的限定。
在具体的示例中,安全内存管理模块可以基于cma_alloc函数向CMA系统申请CMA内存。
在申请到对应的预置连续内存后,安全内存管理模块可以获取所分配的预置连续内存的地址信息,并将所分配的预置连续内存的地址信息反馈至虚拟机模块。在以预置连续内存块的形式申请预置连续内存时,对应的地址信息可以为与预置连续内存块对应的地址段。
步骤S320:虚拟机模块获取所分配的预置连续内存的地址信息;
在安全内存管理模块将所分配的预置连续内存的地址信息反馈至虚拟机模块后,虚拟机模块可以获取所分配的预置连续内存的地址信息。
步骤S330:虚拟机模块发送安全内存使能请求,所述安全内存使能请求用于基于所述地址信息,请求安全处理器配置所述地址信息对应的预置连续内存为安全内存;
可以理解的是,所述安全内存使能请求中包括所述地址信息,安全处理器可以在获取所述安全内存使能请求后,基于所述安全内存使能请求,配置与地址信息对应的预置连续内存的状态信息,使得预置连续内存可以作为安全内存。例如,可以通过配置预置连续内存的状态为有效,从而使得预置连续内存可以作为安全内存;相应的,在其他示例中,还可以通过配置预置连续内存的状态为无效,以使得预置连续内存不作为安全内存进行使用。
其中,在所述预置连续内存包括多个预置连续内存块时,对应的安全内存使能请求包括所述预置连续内存块的地址信息,相应的,配置与地址信息对应的预置连续内存的状态信息具体为,配置与地址信息对应的预置连续内存块的状态信息,使得预置连续内存块可以作为安全内存块。例如,可以配置预置连续内存块的状态为有效,从而使得预置连续内存块可以作为安全内存块;相应的,在其他示例中,还可以通过配置预置连续内存块的状态为无效,以使得预置连续内存块不作为安全内存块进行使用。
其中,所述安全内存使能请求中还可以进一步包括预置连续内存所分配的安全虚拟机的虚拟机标识,从而可以基于虚拟机标识进行身份验证,避免非本安全虚拟机的用户访问该安全虚拟机的安全内存。
在一个示例中,安全内存使能请求通过SET_SECURE_MEMORY_REGION命令发送。
步骤S340:安全处理器驱动转发所述安全内存使能请求至所述安全处理器;
步骤S350:安全处理器配置所述地址信息对应的预置连续内存为安全内存;
在具体的示例中,所述预置连续内存可以基于由安全处理器维护的安全页面拥有者表格(Secure Page Ownership Table,SPOT)进行控制信息的管理。具体的,在预置连续内存以预置连续内存块的形式进行控制/配置时,安全页面拥有者表格中可以具有多个控制条目(也可以称为SPOT表格项),一个控制条目对应一预置连续内存块。其中,参考图9所示的控制条目的可选结构图,一控制条目中可以记录该预置连续内存块是否作为安全内存块的有效标识位(用于标记预置连续内存块是否为有效的安全内存块,参考图9中的Bit0位,其中Valid意为有效),该预置连续内存块作为安全内存块时的访问权限标识(用于标记安全内存块是否为可写入,参考图9中的Bit1位,其中Writable意为可写入),该预置连续内存块作为安全内存块时所属的安全虚拟机的虚拟机标识VMID(图9中为Bit[11:3]位),以及保留位(图9中为Bit2位)。
在配置对应预置连续内存块的有效标识位为有效时(例如配置为“1”),则该预置连续内存块为安全内存块,在配置对应预置连续内存块的有效标识位为无效时(例如配置为“0”),则该预置连续内存块为非安全内存块。相应的,在配置对应预置连续内存块作为安全内存块时的访问权限标识为可写入时,则该安全内存块为可以写入,在配置对应预置连续内存块作为安全内存块时的访问权限标识为不可写入时,则该安全内存块为不可以写入;该预置连续内存块作为安全内存块时所属的安全虚拟机的虚拟机标识VMID则用于确定访问该安全内存块的虚拟机是否为安全内存块所属的安全虚拟机,若访问请求对应的VMID与该处记录的虚拟机标识VMID一致,则访问该安全内存块的虚拟机为安全内存块所属的安全虚拟机,允许访问,否则,不允许访问。
相应的,在本步骤中,可以配置所述预置连续内存块的有效标识为有效,同时,为该预置连续内存块配置与之对应的虚拟机标识。在进一步的示例中,若所述安全内存使能请求中包括对应的访问权限信息,则可以基于该访问权限信息,配置该预置连续内存块作为安全内存块时的访问权限标识为对应的访问权限,例如可写入或不可写入等。
安全处理器配置完成后,参考图8,还可以进一步反馈响应消息至安全处理器驱动,并进一步由安全处理器驱动将响应消息转发回虚拟机模块,从而指示相关配置已经完成。
基于上述配置,使得安全虚拟机可以在其所分配的安全内存中进行数据的加载和访问。其中,可以理解的是,上述为安全虚拟机分配预置连续内存作为安全内存的流程可以在安全虚拟机的启动(Launch)阶段执行。其中,在分配安全内存后,还可以进一步为安全虚拟机加载加密数据至安全处理器,例如利用函数CSV_CMD_LAUNCH_ENCRYPT_DATA,为安全虚拟机加载初始镜像数据等。
安全虚拟机的启动流程具体可以如下方所示:
1.在接收到安全虚拟机启动命令后,安全处理器准备虚拟机启动资源(该步骤也称为LAUNCH_START);
2.安全处理器为安全虚拟机绑定虚拟机标识(ASID,也称为内存空间标识符)(该步骤也称为ACTIVE);
3.安全处理器配置指定内存为安全内存(该步骤也称为
SET_SECURE_MEMORY_REGION);其中,该步骤中可以基于本申请的安全内存分配方法进行安全内存的分配;
4.安全处理器从安全内存分配安全虚拟机初始化镜像所需内存,并更新安全虚拟机初始化镜像数据(该步骤也称为LAUNCH_UPDATE_ENCRYPT_DATA);
5.安全处理器从安全内存分配安全虚拟机控制块,并更新安全虚拟机控制块VMCB(该步骤也称为LAUNCH_UPDATE_VMCB);
6.度量安全虚拟机启动镜像,执行完整性校验(该步骤也称为LAUNCH_MEASURE);
7.完整性校验通过后,启动结束(该步骤也称为LAUNCH_FINISH:)。
需要说明的是,在进行预置连续内存的配置之后,还可以将已被分配的用于作为安全内存的预置连续内存释放并作为普通内存进行使用。在可选实现中,参考图10所示的预置连续内存释放流程的可选示意图,将已被分配的用于作为安全内存的预置连续内存释放的流程可以包括:
步骤S400:虚拟机模块发送安全内存无效请求至安全处理器驱动,所述安全内存无效请求用于请求安全处理器配置所述安全内存为预置连续内存;
在需要销毁安全虚拟机时,安全处理器驱动可以转发所述安全内存无效请求至安全处理器,从而使得安全处理器将所述安全虚拟机设置为无效,进而使无效的安全内存作为预置连续内存再次由CMA系统作为普通内存进行使用。在具体的示例中,虚拟机模块可以基于QEMU的请求触发安全内存无效请求的发送。
可以理解的是,所述安全内存无效请求可以包括安全内存的地址信息,从而使得安全处理器可以通过配置与地址信息对应的安全内存的状态信息,使得安全内存再次作为预置连续内存。其中,在所述安全内存为多个安全内存块时,所述安全内存无效请求的地址信息可以为多个安全内存块对应的地址段的集合。
所述安全内存无效请求中还可以进一步包括安全内存所属的安全虚拟机的虚拟机标识,从而可以使得安全处理器基于虚拟机标识进行身份验证,避免非本安全虚拟机的用户配置该安全虚拟机的安全内存。
步骤S410:安全处理器驱动转发所述安全内存无效请求至安全处理器,以使得安全处理器配置所述安全内存为预置连续内存;
在安全处理器驱动获取所述安全内存无效请求后,可以将所述安全内存无效请求转发至安全处理器。
步骤S420:安全处理器配置所述地址信息对应的安全内存为预置连续内存;
所述安全内存无效请求包括安全内存的地址信息时,安全处理器可以配置与地址信息对应的安全内存的状态信息为无效,使得安全内存再次作为预置连续内存。其中,在所述安全内存包括多个安全内存块时,所述安全内存无效请求的地址信息可以为多个安全内存块对应的地址段的集合。
在具体的示例中,所述安全虚拟机的安全内存基于安全内存块为基础单位进行控制和管理,所述安全内存块可以基于由安全处理器维护的安全页面拥有者表格(SecurePage Ownership Table,SPOT)进行控制信息的管理。其中,参考图9所示的控制条目的可选结构图,配置安全内存块的有效标识为无效,可以配置与安全内存对应的预置连续内存块的控制条目中的有效标识位为无效,以使得该安全内存块不再处于作为安全内存的状态,例如,可以通过配置安全内存的状态为无效(例如为“0”),使得安全内存作为预置连续内存。
所述安全内存无效请求中进一步包括安全内存所属的安全虚拟机的虚拟机标识时,可以首先基于虚拟机标识进行身份验证,在确定虚拟机标识与安全页面拥有者表格记录的虚拟机标识一致时,在进行安全内存配置为预置连续内存的流程。
可以理解的是,安全处理器配置安全内存为预置连续内存后,可以反馈响应成功消息,以指示虚拟机模块响应的配置已经完成。
步骤S430:虚拟机模块发送预置连续内存释放请求至安全内存管理模块,所述预置连续内存块释放请求用于释放所述预置连续内存;
在获取所述安全内存无效请求响应成功信息后,通过发送预置连续内存释放请求,将预置连续内存释放,进而在CMA系统中作为普通内存进行分配。
其中,所述预置连续内存释放请求中可以包括待释放的预置连续内存的地址信息(也可以理解为安全虚拟机的安全内存的地址信息),从而将所述预置连续内存进行释放。
在具体的示例中,虚拟机模块可以基于free_secure_memory接口向安全内存管理模块发送预置连续内存释放请求,以释放对应的预置连续内存作为CMA内存。
步骤S440:安全内存管理模块基于预置连续内存释放请求,向CMA系统请求释放所述预置连续内存,以使所述预置连续内存作为普通内存进行分配;
可以理解的是,CMA系统获取预置连续内存释放请求后,可以基于预置连续内存释放请求,将所述预置连续内存进行释放,进而使得预置连续内存作为CMA内存,再次进入内存管理系统中作为普通内存进行分配。
在具体的示例中,安全内存管理模块可以基于cma_release函数向CMA系统释放预置连续内存作为CMA内存。
其中,在CMA系统释放所述预置连续内存后,安全内存管理模块可以反馈响应信息,以指示对应预置连续内存已经释放。
本发明实施例还提供一种存储介质,该存储介质存储有实现如本发明实施例提供的安全内存分配方法的程序,或者,如本发明实施例提供的安全内存释放方法的程序,或者,如本发明实施例提供的预置连续内存配置方法的程序。
上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。
虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

Claims (28)

1.一种安全内存分配方法,其特征在于,应用于虚拟机模块,包括:
发送安全内存分配请求,所述安全内存分配请求用于请求分配预置连续内存作为安全内存,所述预置连续内存在未被分配为安全内存时作为普通内存进行分配;
获取所分配的预置连续内存的地址信息;
发送包括所述地址信息的安全内存使能请求,所述安全内存使能请求用于基于所述地址信息,请求安全处理器配置所述地址信息对应的预置连续内存为安全内存。
2.根据权利要求1所述的安全内存分配方法,其特征在于,所述预置连续内存包括多个预置连续内存块,所述安全内存分配请求所请求的安全内存的空间大小以预置连续内存块的大小为基础单位。
3.根据权利要求2所述的安全内存分配方法,其特征在于,所述安全内存使能请求中还包括预置连续内存块所分配的安全虚拟机的虚拟机标识,以使得安全处理器确定访问作为安全内存块的预置连续内存块的虚拟机是否为安全内存块所属的安全虚拟机。
4.根据权利要求1所述的安全内存分配方法,其特征在于,所述安全内存分配请求所请求的安全内存的空间大小在安全虚拟机的初始镜像被加载时,基于处理器模块的请求遍历安全虚拟机的内存资源后计算得到。
5.一种安全内存分配方法,其特征在于,应用于安全内存管理模块,包括:
获取安全内存分配请求,所述安全内存分配请求用于请求分配预置连续内存作为安全内存,所述预置连续内存在未被分配为安全内存时作为普通内存进行分配;
基于所述安全内存分配请求,向连续内存分配CMA系统申请与之匹配的预置连续内存;
获取所分配的预置连续内存的地址信息,将所分配的预置连续内存的地址信息反馈至虚拟机模块,以使虚拟机模块发送包括所述地址信息的安全内存使能请求,以请求安全处理器配置所述地址信息对应的预置连续内存为安全内存。
6.根据权利要求5所述的安全内存分配方法,其特征在于,所述预置连续内存包括多个预置连续内存块,所述安全内存分配请求所请求的安全内存的空间大小以预置连续内存块的大小为基础单位。
7.一种安全内存分配方法,其特征在于,应用于安全处理器,包括:
获取包括所分配的预置连续内存的地址信息的安全内存使能请求,所述预置连续内存在未被分配为安全内存时作为普通内存进行分配;
基于所述安全内存使能请求,配置与所述地址信息对应的预置连续内存的状态信息,使得预置连续内存作为安全内存。
8.根据权利要求7所述的安全内存分配方法,其特征在于,所述配置与所述地址信息对应的预置连续内存的状态信息,包括:
配置预置连续内存的状态为有效,从而使得预置连续内存作为安全内存。
9.根据权利要求8所述的安全内存分配方法,其特征在于,所述预置连续内存包括多个预置连续内存块;安全页面拥有者表格中具有多个控制条目,一个控制条目对应一预置连续内存块,所述配置预置连续内存的状态为有效,包括:
配置对应预置连续内存块的控制条目中的有效标识位为有效,所述有效标识位用于标记预置连续内存块是否为有效的安全内存块。
10.根据权利要求9所述的安全内存分配方法,其特征在于,所述配置与所述地址信息对应的预置连续内存的状态信息,还包括:
配置对应预置连续内存块的控制条目中的访问权限标识,所述访问权限标识用于标记预置连续内存块作为安全内存块时是否为可写入。
11.根据权利要求9所述的安全内存分配方法,其特征在于,所述配置与所述地址信息对应的预置连续内存的状态信息,还包括:
配置对应预置连续内存块的控制条目中,预置连续内存块作为安全内存块时所属的安全虚拟机的虚拟机标识。
12.一种安全内存释放方法,其特征在于,应用于虚拟机模块,包括:
发送安全内存无效请求,所述安全内存无效请求包括安全内存的地址信息,用于请求安全处理器配置所述地址信息对应的安全内存为预置连续内存;
在获取所述安全内存无效请求响应成功信息后,发送预置连续内存释放请求,所述预置连续内存释放请求用于请求连续内存分配CMA系统释放所述预置连续内存,以使所述预置连续内存作为普通内存进行分配。
13.根据权利要求12所述的安全内存释放方法,其特征在于,所述安全内存为多个安全内存块时,所述安全内存无效请求的地址信息为多个安全内存块对应的地址段的集合。
14.根据权利要求12所述的安全内存释放方法,其特征在于,所述安全内存无效请求中还包括安全内存所属的安全虚拟机的虚拟机标识,以使得安全处理器基于所述虚拟机标识进行身份验证。
15.一种安全内存释放方法,其特征在于,应用于安全处理器,包括:
获取安全内存无效请求,所述安全内存无效请求包括安全内存的地址信息;
基于所述安全内存无效请求,配置所述地址信息对应的安全内存为预置连续内存,所述预置连续内存用于在被释放后作为普通内存进行分配。
16.根据权利要求15所述的安全内存释放方法,其特征在于,所述配置所述地址信息对应的安全内存为预置连续内存,包括:
配置与所述地址信息对应的安全内存的状态为无效,以指示该安全内存为预置连续内存。
17.根据权利要求16所述的安全内存释放方法,其特征在于,所述安全内存包括多个安全内存块;安全页面拥有者表格中具有多个控制条目,一个控制条目对应一预置连续内存块,所述配置与地址信息对应的安全内存的状态为无效,包括:
配置与安全内存对应的预置连续内存块的控制条目中的有效标识位为无效,所述有效标识位用于标记预置连续内存块是否为有效的安全内存块。
18.根据权利要求17所述的安全内存释放方法,其特征在于,所述安全内存无效请求中还包括安全内存所属的安全虚拟机的虚拟机标识,所述获取安全内存无效请求之后,所述配置所述地址信息对应的安全内存为预置连续内存之前,还包括:
基于虚拟机标识进行身份验证,在确定所述虚拟机标识与安全页面拥有者表格记录的虚拟机标识一致时,执行所述配置所述地址信息对应的安全内存为预置连续内存的步骤。
19.一种安全内存释放方法,其特征在于,应用于安全内存管理模块,包括:
获取预置连续内存释放请求,所述预置连续内存释放请求包括待释放的预置连续内存的地址信息,所述预置连续内存由安全处理器基于安全内存的地址信息配置得到;
基于预置连续内存释放请求,向连续内存分配CMA系统请求释放所述预置连续内存,以使所述地址信息对应的预置连续内存作为普通内存进行分配。
20.根据权利要求19所述的安全内存释放方法,其特征在于,所述预置连续内存包括多个预置连续内存块,所述安全内存的地址信息为多个安全内存块对应的地址段的集合。
21.一种预置连续内存配置方法,其特征在于,包括:
安全内存管理模块发送预置连续内存配置信息至连续内存分配CMA系统;所述预置连续内存配置信息包括所述预置连续内存的地址信息;所述预置连续内存为安全内存管理模块基于预置连续内存分配信息申请得到的预设数量的连续内存;
所述CMA系统基于所述预置连续内存配置信息,配置预置连续内存为CMA内存;
安全处理器驱动基于所述预置连续内存的地址信息,生成对应所述预置连续内存的初始化配置请求;
安全处理器基于所述初始化配置请求,为所述预置连续内存配置安全内存控制区域,所述安全内存控制区域用于存储对应所述预置连续内存的安全内存控制信息,所述安全内存控制信息用于存储对应所述预置连续内存的虚拟机控制块。
22.根据权利要求21所述的预置连续内存配置方法,其特征在于,所述CMA系统基于所述预置连续内存配置信息,配置所述预置连续内存为CMA内存,包括:
将所述预置连续内存的地址信息保存至CMA系统的连续内存数组中,以将所述预置连续内存作为CMA内存进行管理;
其中,所述预置连续内存在CMA系统中遵循以下管理规则:
在虚拟机模块不使用作为CMA内存的预置连续内存时,系统的内存管理系统将该CMA内存拆分为可移动类型页面进行分配和管理;在虚拟机模块使用作为CMA内存的预置连续内存时,将该CMA内存对应的预置连续内存作为连续内存分配至虚拟机模块,其中,已分配的内存页面所保存的可移动类型的数据可以迁移至其他内存页面。
23.根据权利要求21所述的预置连续内存配置方法,其特征在于,所述预置连续内存包括多个节点的内存,所述预置连续内存的地址信息包括与之对应的多个节点的内存的地址信息。
24.根据权利要求21所述的预置连续内存配置方法,其特征在于,所述安全处理器驱动基于所述预置连续内存的地址信息,生成对应所述预置连续内存的初始化配置请求,包括:
将预置连续内存按照预设大小进行分割,形成多个具有预设大小的预置连续内存块,并将所述预置连续内存的分割信息发送至安全内存管理模块;
在接收到安全内存管理模块用于表明成功接收该分割信息的响应信息后,基于所述预置连续内存的分割信息,生成对应所述预置连续内存的初始化配置请求。
25.根据权利要求24所述的预置连续内存配置方法,其特征在于,所述安全处理器驱动基于所述预置连续内存的地址信息,生成对应所述预置连续内存的初始化配置请求之前,还包括:
获取所述预置连续内存的地址信息,并将所述预置连续内存的地址信息发送至安全处理器;
在接收安全处理器指示配置所述预置连续内存的地址信息已完成的响应信息后,执行所述将预置连续内存按照预设大小进行分割,形成多个具有预设大小的预置连续内存块的步骤。
26.根据权利要求25所述的预置连续内存配置方法,其特征在于,所述安全处理器基于所述初始化配置请求,为所述预置连续内存配置安全内存控制区域,包括:
基于所述初始化配置请求中的所述预置连续内存的分割信息,为预置连续内存块配置与之对应的安全内存控制区域。
27.一种计算设备,其特征在于,包括:处理器核心、内存控制器、内存和安全处理器,所述计算设备用于执行如权利要求1-11任一项所述的安全内存分配方法,或者,如权利要求12-20任一项所述的安全内存释放方法,或者,如权利要求21-26任一项所述的预置连续内存配置方法。
28.一种存储介质,其特征在于,所述存储介质存储有,实现权利要求1-11任一项所述的安全内存分配方法的程序,或者,实现权利要求12-20任一项所述的安全内存释放方法的程序,或者,实现权利要求21-26任一项所述的预置连续内存配置方法的程序。
CN202311415500.7A 2023-10-27 2023-10-27 安全内存分配、释放和相关配置方法、设备 Pending CN117421118A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311415500.7A CN117421118A (zh) 2023-10-27 2023-10-27 安全内存分配、释放和相关配置方法、设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311415500.7A CN117421118A (zh) 2023-10-27 2023-10-27 安全内存分配、释放和相关配置方法、设备

Publications (1)

Publication Number Publication Date
CN117421118A true CN117421118A (zh) 2024-01-19

Family

ID=89524333

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311415500.7A Pending CN117421118A (zh) 2023-10-27 2023-10-27 安全内存分配、释放和相关配置方法、设备

Country Status (1)

Country Link
CN (1) CN117421118A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107220189A (zh) * 2017-03-14 2017-09-29 晨星半导体股份有限公司 内存空间管理及内存访问控制方法及装置
CN107818054A (zh) * 2016-09-12 2018-03-20 联发科技股份有限公司 分配连续物理内存空间到设备的方法及系统
CN109766164A (zh) * 2018-11-22 2019-05-17 海光信息技术有限公司 一种访问控制方法、内存管理方法及相关装置
CN113342711A (zh) * 2021-06-28 2021-09-03 海光信息技术股份有限公司 页表更新方法、装置及相关设备
US20210288943A1 (en) * 2020-03-12 2021-09-16 International Business Machines Corporation Virtual machine perfect forward secrecy
CN113703924A (zh) * 2021-09-22 2021-11-26 上海交通大学 基于可信执行环境的安全虚拟机系统设计方法及系统
CN114880074A (zh) * 2022-05-11 2022-08-09 海光信息技术股份有限公司 一种虚拟机的内存管理方法、装置及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107818054A (zh) * 2016-09-12 2018-03-20 联发科技股份有限公司 分配连续物理内存空间到设备的方法及系统
CN107220189A (zh) * 2017-03-14 2017-09-29 晨星半导体股份有限公司 内存空间管理及内存访问控制方法及装置
CN109766164A (zh) * 2018-11-22 2019-05-17 海光信息技术有限公司 一种访问控制方法、内存管理方法及相关装置
US20210288943A1 (en) * 2020-03-12 2021-09-16 International Business Machines Corporation Virtual machine perfect forward secrecy
CN113342711A (zh) * 2021-06-28 2021-09-03 海光信息技术股份有限公司 页表更新方法、装置及相关设备
CN113703924A (zh) * 2021-09-22 2021-11-26 上海交通大学 基于可信执行环境的安全虚拟机系统设计方法及系统
CN114880074A (zh) * 2022-05-11 2022-08-09 海光信息技术股份有限公司 一种虚拟机的内存管理方法、装置及电子设备

Similar Documents

Publication Publication Date Title
JP5510556B2 (ja) 仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム
EP2930910B1 (en) Method and system for sharing storage resources
US9086907B2 (en) Apparatus and method for managing virtual machine addresses
US9229751B2 (en) Apparatus and method for managing virtual memory
JP5272709B2 (ja) アドレス割当方法、コンピュータ、物理マシン、プログラム、及びシステム
EP3688596B1 (en) Computer program product, system, and method to manage access to storage resources from multiple applications
WO2015180648A1 (zh) 一种资源分配的方法及装置
US20200364145A1 (en) Information processing apparatus and method for controlling storage device
WO2018086437A1 (zh) 一种加速器加载方法、系统和加速器加载装置
CN114424172B (zh) 虚拟存储器元数据管理
JP6464288B2 (ja) クラウドコンピューティング環境においてクラウドホストを削除するプログラム、装置、サーバ及び記憶媒体
JP5381713B2 (ja) 仮想マシン向けデータ格納システム、データ格納方法およびデータ格納用プログラム
CN113342711B (zh) 页表更新方法、装置及相关设备
EP3629160B1 (en) Method and device for managing vnf instantiation
CN114281252A (zh) 非易失性高速传输总线NVMe设备的虚拟化方法及设备
US20150127916A1 (en) Dynamic memory allocation
US20050235005A1 (en) Computer system configuring file system on virtual storage device, virtual storage management apparatus, method and signal-bearing medium thereof
US11036404B2 (en) Devices, systems, and methods for reconfiguring storage devices with applications
CN107577733B (zh) 一种数据复制的加速方法及系统
CN113391925A (zh) 云资源管理方法、系统、介质、计算机设备
JP2012079245A (ja) 仮想計算機のボリューム割当て方法およびその方法を用いた計算機システム
CN117421118A (zh) 安全内存分配、释放和相关配置方法、设备
CN113485789B (zh) 资源配置方法、装置及计算机架构
CN110447019B (zh) 存储器分配管理器及由其执行的用于管理存储器分配的方法
CN111666579B (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