一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

运行在宿主模式用户态的虚拟机管理方法及系统

2022-05-18 04:40:34 来源:中国专利 TAG:


1.本发明涉及处理器架构与虚拟化技术,具体地,涉及运行在宿主模式用户态的虚拟机管理方法及系统,更为具体地,涉及一种运行在宿主模式用户态的虚拟机监控器的软硬件系统方案。


背景技术:

2.当前的虚拟化技术可以在单个物理机上构建出多个虚拟机以供不同云租户同时使用,可以有效整合云厂商的计算资源并向用户提供计算能力。近年来,虚拟化技术依靠越来越多的硬件支持来提高性能,是云计算产业最重要的基础支撑技术之一。
3.从系统架构方面来看,虚拟化技术主要分为两类。第一类以xen项目为典型例子。该虚拟机管理软件直接运行在系统的内核态,掌控着所有硬件,并通过硬件虚拟化支持在内核态为用户的虚拟机提供服务。该方案由于整个内核软件都是为虚拟化功能定制的,因此有着极佳的性能,但缺点是对硬件驱动支持的工作量大,难以适配各类硬件,存在兼容性问题。第二类以kvm项目为代表。该类虚拟机管理软件作为linux等内核的一部分运行。依靠成熟的宿主内核来减小工作量并能获得更好的硬件兼容性。但是由于其大量功能依赖宿主内核提供的现有接口,因此对虚拟化场景的性能优化不足。
4.由于需要直接与不可信的用户虚拟机进行复杂的逻辑交互并提供日益繁多的虚拟设备功能,因此虚拟机管理软件面临着很大的安全风险,并不断被曝出安全漏洞。更严重的是由于当前的两类虚拟机管理软件都运行在内核态,因此一旦被攻击成功,攻击者可以获取整个物理设备的控制权并进一步侵害其他用户的虚拟机数据。
5.尽管目前的虚拟机管理软件为减小内核模块代码量而将部分功能组件转移到用户态以减少内核的安全风险,但是它们依然在内核态保留大部分核心功能代码,使得安全风险并未根本消除。同时虚拟机管理软件用户态与内核态分离的结构在运行过程中会引入更多模式切换,从而进一步拖慢了虚拟化的性能。
6.然而,当前的硬件架构(如x86和arm架构)由于缺乏将虚拟机下陷控制流直接转入宿主模式用户态(x86在root模式下的ring 3,arm的el0)的机制,而仅仅局限于将虚拟机下陷控制流转移至宿主系统的内核态模式(x86在root模式下的ring 0,arm的el2),从而使得宿主软件只能在内核态中对虚拟机进行管理与控制。
7.这样的硬件限制使得当前的硬件架构难以支持在宿主系统用户态的软件去高效地直接管理与控制部分或全部的虚拟机行为。而是只能通过宿主系统内核态去间接地控制与管理虚拟机的部分或全部行为。
8.专利文献cn102819712b(申请号:201210271625.2)公开了一种保证虚拟机操作系统安全性的方法及装置。该方法包括:步骤a,将虚拟机操作系统编译在管理态下能访问而用户态下不能访问的地址;步骤b,设置虚拟机监视器vmm,使宿主机在陷入虚拟机时,判断虚拟机的状态;步骤c,所述虚拟机在运行虚拟机操作系统的状态下,虚拟机运行于管理态。本方法不需要修改硬件,仅需要重新编译虚拟机操作系统和适当修改虚拟机监视器vmm便
可以在mips架构安全的使用虚拟机操作系统。


技术实现要素:

9.针对现有技术中的缺陷,本发明的目的是提供一种运行在宿主模式用户态的虚拟机管理方法及系统。
10.根据本发明提供的一种运行在宿主模式用户态的虚拟机管理方法,包括:
11.步骤s1:对所需服务的虚拟机以及虚拟机管理系统进行初始化;
12.步骤s2:用户态通过虚拟机指令进入虚拟机开始执行虚拟机的代码直至虚拟机产生下陷;
13.步骤s3:当下陷类型符合预设要求时,则将控制流引入位于宿主模式用户态的下陷处理函数进行处理;当下陷不符合虚拟机运行结束条件时,则重复触发步骤s2至步骤s3,直至下陷类型符合虚拟机结束运行条件;
14.步骤s4:当虚拟机运行结束则回收虚拟机所占用资源并结束虚拟机与自身所在用户态进程。
15.优选地,管理虚拟机的各类资源,包括宿主系统分配给该虚拟机的内存、虚拟机的二级页表、虚拟cpu状态、虚拟机状态以及i/o设备。
16.优选地,所述步骤s1采用:
17.步骤s1.1:向宿主系统申请虚拟机所需的资源,包括内存资源、cpu资源和i/o资源;
18.步骤s1.2:初始化虚拟机所需内存并加载虚拟机运行所需镜像文件至内存;
19.步骤s1.3:在用户态直接初始化并配置虚拟机的二级页表;
20.步骤s1.4:为虚拟机的每个虚拟处理器创建相应的虚拟处理器线程;
21.步骤s1.5:配置在用户态处理虚拟机下陷的处理函数;
22.步骤s1.6:使用系统调用方式通过宿主内核配置需要被托管至用户态进行处理的虚拟机下陷种类。
23.优选地,所述步骤s2采用:用户态为宿主模式用户态提供直接进入虚拟机的虚拟机指令,并从可控制的地址开始执行虚拟机。
24.优选地,在宿主内核态中新增虚拟机下陷托管寄存器,宿主系统通过对虚拟机下陷托管寄存器的配置,将虚拟机下陷托管至用户态直接处理。
25.优选地,所述步骤s3采用:用户态通过使用分配给虚拟机的软硬件资源根据下陷类型以及虚拟机信息对虚拟机下陷进行处理;
26.所述软硬件资源包括cpu计算资源、内存资源以及设备资源;
27.下陷处理还需要使用宿主模式用户态所提供的可以直接访问的虚拟机控制寄存器;所述虚拟机控制寄存器包括:提供虚拟机二级页表缺页地址信息的寄存器、控制虚拟机内部虚拟中断的控制寄存器以及虚拟机下陷程序计数寄存器。
28.优选地,所述下陷类型包括:二级页表缺页处理、特权指令模拟处理、对虚拟机监控器的调用处理hypercall以及对存储器映射输入输出操作处理;
29.优选地,通过被增强后的risc-v处理器能够为宿主内核态新增虚拟机下陷托管寄存器,使虚拟机部分或全部直接下陷至宿主用户态模式直接处理、为宿主用户态模式提供
进入虚拟模式的指令、为宿主用户态模式提供可直接访问的虚拟机控制寄存器。
30.根据本发明提供的一种运行在宿主模式用户态的虚拟机管理系统,包括:
31.模块m1:对所需服务的虚拟机以及虚拟机管理系统进行初始化;
32.模块m2:用户态通过虚拟机指令进入虚拟机开始执行虚拟机的代码直至虚拟机产生下陷;
33.模块m3:当下陷类型符合预设要求时,则将控制流引入位于宿主模式用户态的下陷处理函数进行处理;当下陷不符合虚拟机运行结束条件时,则重复触发模块m2至模块m3,直至下陷类型符合虚拟机结束运行条件;
34.模块m4:当虚拟机运行结束则回收虚拟机所占用资源并结束虚拟机与自身所在用户态进程。
35.优选地,所述模块m1采用:
36.模块m1.1:向宿主系统申请虚拟机所需的资源,包括内存资源、cpu资源和i/o资源;
37.模块m1.2:初始化虚拟机所需内存并加载虚拟机运行所需镜像文件至内存;
38.模块m1.3:在用户态直接初始化并配置虚拟机的二级页表;
39.模块m1.4:为虚拟机的每个虚拟处理器创建相应的虚拟处理器线程;
40.模块m1.5:配置在用户态处理虚拟机下陷的处理函数;
41.模块m1.6:使用系统调用方式通过宿主内核配置需要被托管至用户态进行处理的虚拟机下陷种类;
42.所述模块m2采用:用户态为宿主模式用户态提供直接进入虚拟机的虚拟机指令,并从可控制的地址开始执行虚拟机;
43.在宿主内核态中新增虚拟机下陷托管寄存器,宿主系统通过对虚拟机下陷托管寄存器的配置,将虚拟机下陷托管至用户态直接处理;
44.所述模块m3采用:用户态通过使用分配给虚拟机的软硬件资源根据下陷类型以及虚拟机信息对虚拟机下陷进行处理;
45.所述软硬件资源包括cpu计算资源、内存资源以及设备资源;
46.下陷处理还需要使用宿主模式用户态所提供的可以直接访问的虚拟机控制寄存器;所述虚拟机控制寄存器包括:提供虚拟机二级页表缺页地址信息的寄存器、控制虚拟机内部虚拟中断的控制寄存器以及虚拟机下陷程序计数寄存器;
47.所述下陷类型包括:二级页表缺页处理、特权指令模拟处理、对虚拟机监控器的调用处理hypercall以及对存储器映射输入输出操作处理;
48.通过被增强后的risc-v处理器能够为宿主内核态新增虚拟机下陷托管寄存器,使虚拟机部分或全部直接下陷至宿主用户态模式直接处理、为宿主用户态模式提供进入虚拟模式的指令、为宿主用户态模式提供可直接访问的虚拟机控制寄存器。
49.与现有技术相比,本发明具有如下的有益效果:
50.1、将虚拟机管理软件从内核态移出,由此恶意用户在攻占虚拟机管理软件后无法直接控制整个系统,而仅仅局限在一个用户态进程中,依然会受到系统内核的权限限制。
51.2、采用虚拟机管理软件与用户虚拟机一对一的服务模式,消除了各个用户虚拟机共享同一个内核虚拟机管理模块的运行场景。有效隔离了各个用户虚拟机,使得恶意用户
无法通过攻占虚拟机管理软件来侵害别的用户虚拟机数据。
52.3、在用户态中构建一个完整的虚拟机管理软件,摈弃了传统方法中为了安全性而妥协性能采用的分离式结构。在这个完整的虚拟机管理软件中将原先方案中的模式切换转化成了开销低的函数调用,同时也避免了宿主内核功能的约束,针对虚拟机场景做出更多性能优化。
53.4、本方法可利用用户态丰富的软件生态与调试工具加快虚拟机管理软件的开发与更新。相比传统方法能够更快开发出适应新场景或硬件特性的功能。同时更易于部署与更新。
54.5、对于现有的虚拟机管理软件,本发明的硬件设计部分也能够帮助其加速部分场景下(如虚拟机使用用户态进程中的模拟设备)的虚拟机下陷处理过程,使其可以直接进入用户态组件中进行处理。
附图说明
55.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
56.图1为处理器硬件架构示意图。
57.图2为当前硬件架构对虚拟机管理支持的架构图。
58.图3为硬件架构对虚拟机管理支持的架构图。
59.图4为软件运行时的架构图。
60.图5为软件流程图。
具体实施方式
61.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
62.本发明涉及一种运行在宿主模式用户态的虚拟机监控器,该方法采用软硬件协同设计的方式,首先让处理器硬件架构支持虚拟机直接下陷到宿主系统用户态。具体来说,本方案中虚拟机下陷处理流程不再局限于宿主系统特权级(用户态)的介入,而是可由宿主系统配置,将部分或全部虚拟机下陷的控制流直接引入宿主系统用户态代码中。
63.基于该硬件设计,本发明进一步设计出一种运行在宿主模式用户态的虚拟机管理软件(hypervisor)方案。该方案能够在宿主系统的用户态运行虚拟机管理软件并直接对虚拟机的部分或全部行为进行管理与控制。在宿主系统的用户态中,每个虚拟机都有各自专属的运行着本软件的用户态进程,本软件会管理相应虚拟机的各类资源,包括但不限于内存资源、cpu计算资源和设备资源。同时,本软件可支持多个虚拟机同时运行在同一个宿主系统上共用计算资源。与现有技术相比,本发明在获得强隔离性与高安全性的同时还能获得性能上的提升。
64.实施例1
65.根据本发明提供的一种运行在宿主模式用户态的虚拟机管理方法,如图1至5所
示,包括:
66.步骤s1:对所需服务的虚拟机以及虚拟机管理系统进行初始化;具体地,包括:向宿主系统申请虚拟机所需的资源,包括内存资源、cpu资源和i/o资源;初始化虚拟机所需内存并加载虚拟机运行所需镜像文件至内存;在用户态直接初始化并配置虚拟机的二级页表;为虚拟机的每个虚拟处理器创建相应的虚拟处理器线程;配置在用户态处理虚拟机下陷的处理函数;使用系统调用方式通过宿主内核配置需要被托管至用户态进行处理的虚拟机下陷种类。
67.步骤s2:用户态通过虚拟机指令进入虚拟机开始执行虚拟机的代码直至虚拟机产生下陷;其中,用户态为宿主模式用户态提供直接进入虚拟机的虚拟机指令,并从可控制的地址开始执行虚拟机。
68.进一步地,在宿主内核态中新增虚拟机下陷托管寄存器,宿主系统通过对虚拟机下陷托管寄存器的配置,将虚拟机下陷托管至用户态直接处理。
69.步骤s3:当下陷类型符合预设要求时,则将控制流引入位于宿主模式用户态的下陷处理函数进行处理;当下陷不符合虚拟机运行结束条件时,则重复触发步骤s2至步骤s3,直至下陷类型符合虚拟机结束运行条件;
70.用户态通过使用分配给虚拟机的软硬件资源(cpu计算资源、内存资源以及设备资源;)根据下陷类型以及虚拟机信息对虚拟机下陷进行处理;下陷处理还需要使用宿主模式用户态所提供的可以直接访问的虚拟机控制寄存器;所述虚拟机控制寄存器包括:提供虚拟机二级页表缺页地址信息的寄存器、控制虚拟机内部虚拟中断的控制寄存器以及虚拟机下陷程序计数寄存器。
71.具体地,所述下陷类型包括:二级页表缺页处理、特权指令模拟处理、对虚拟机监控器的调用处理hypercall以及对存储器映射输入输出操作处理;
72.进一步地,可以通过被增强后的risc-v处理器能够为宿主内核态新增虚拟机下陷托管寄存器,使虚拟机部分或全部直接下陷至宿主用户态模式直接处理、为宿主用户态模式提供进入虚拟模式的指令、为宿主用户态模式提供可直接访问的虚拟机控制寄存器。
73.步骤s4:当虚拟机运行结束则回收虚拟机所占用资源并结束虚拟机与自身所在用户态进程。
74.具体地,管理虚拟机的各类资源,包括宿主系统分配给该虚拟机的内存、虚拟机的二级页表、虚拟cpu状态、虚拟机状态以及i/o设备。
75.根据本发明提供的一种运行在宿主模式用户态的虚拟机管理系统,包括:
76.模块m1:对所需服务的虚拟机以及虚拟机管理系统进行初始化;具体地,包括:向宿主系统申请虚拟机所需的资源,包括内存资源、cpu资源和i/o资源;初始化虚拟机所需内存并加载虚拟机运行所需镜像文件至内存;在用户态直接初始化并配置虚拟机的二级页表;为虚拟机的每个虚拟处理器创建相应的虚拟处理器线程;配置在用户态处理虚拟机下陷的处理函数;使用系统调用方式通过宿主内核配置需要被托管至用户态进行处理的虚拟机下陷种类。
77.模块m2:用户态通过虚拟机指令进入虚拟机开始执行虚拟机的代码直至虚拟机产生下陷;其中,用户态为宿主模式用户态提供直接进入虚拟机的虚拟机指令,并从可控制的地址开始执行虚拟机。
78.进一步地,在宿主内核态中新增虚拟机下陷托管寄存器,宿主系统通过对虚拟机下陷托管寄存器的配置,将虚拟机下陷托管至用户态直接处理。
79.模块m3:当下陷类型符合预设要求时,则将控制流引入位于宿主模式用户态的下陷处理函数进行处理;当下陷不符合虚拟机运行结束条件时,则重复触发模块m2至模块m3,直至下陷类型符合虚拟机结束运行条件;
80.用户态通过使用分配给虚拟机的软硬件资源(cpu计算资源、内存资源以及设备资源;)根据下陷类型以及虚拟机信息对虚拟机下陷进行处理;下陷处理还需要使用宿主模式用户态所提供的可以直接访问的虚拟机控制寄存器;所述虚拟机控制寄存器包括:提供虚拟机二级页表缺页地址信息的寄存器、控制虚拟机内部虚拟中断的控制寄存器以及虚拟机下陷程序计数寄存器。
81.具体地,所述下陷类型包括:二级页表缺页处理、特权指令模拟处理、对虚拟机监控器的调用处理hypercall以及对存储器映射输入输出操作处理;
82.进一步地,可以通过被增强后的risc-v处理器能够为宿主内核态新增虚拟机下陷托管寄存器,使虚拟机部分或全部直接下陷至宿主用户态模式直接处理、为宿主用户态模式提供进入虚拟模式的指令、为宿主用户态模式提供可直接访问的虚拟机控制寄存器。
83.模块m4:当虚拟机运行结束则回收虚拟机所占用资源并结束虚拟机与自身所在用户态进程。
84.具体地,管理虚拟机的各类资源,包括宿主系统分配给该虚拟机的内存、虚拟机的二级页表、虚拟cpu状态、虚拟机状态以及i/o设备。
85.实施例2
86.实施例2是实施例1的优选例
87.本发明涉及一种运行在宿主模式用户态的虚拟机监控器的软硬件系统方案,该方法采用软硬件协同设计的方式,基于将部分或全部虚拟化支持引入宿主模式用户态的硬件来开发出一套运行在宿主模式用户态的虚拟机监控器软件。
88.本发明能够在宿主系统的用户态运行虚拟机监控器软件并直接对虚拟机的部分或全部行为进行管理与控制。在宿主系统的用户态中,每个虚拟机都有各自专属的运行着本软件的用户态进程,本软件会管理相应虚拟机的各类资源,包括但不限于内存资源、cpu计算资源和设备资源。同时,本软件支持在多个用户态进程内“一对一”同时支撑多个虚拟机运行在同一个宿主系统上共用计算资源。本发明设计运行效果包括如下步骤:
89.步骤(1):本虚拟机监控器软件对所需服务的虚拟机进行初始化,初始化过程包括但不限于本软件需要先向宿主系统申请虚拟机所需的资源,包括但不限于内存资源,cpu资源和i/o设备资源;申请虚拟机所需内存并加载虚拟机运行所需镜像文件至内存;配置虚拟机的二级页表;为虚拟机的每个虚拟处理器创建相应的虚拟处理器线程;配置虚拟机下陷处理函数;利用系统调用让宿主系统内核去配置可以被托管至用户态的虚拟机下陷种类,而宿主内核是通过本发明硬件架构为宿主内核态新增的一类虚拟机下陷托管寄存器来完成这个配置操作;然后执行步骤(2)。
90.步骤(2):本虚拟机监控器软件使用本发明中硬件架构(被增强过的risc-v处理器)为宿主用户态模式提供的可以进入虚拟模式的指令直接从用户态进入虚拟机开始执行虚拟机的代码,并根据所述的虚拟机下陷程序计数器寄存器或是其它寄存器与操作数来设
置虚拟机程序计数器。然后执行步骤(3)。其中,本软件使用硬件架构提供的支持,执行相应指令直接进入虚拟模式从可控制的地址开始运行虚拟机。
91.步骤(3):运行至虚拟机产生下陷后,如果下陷类型符合步骤(1)中初始化时利用宿主内核配置的可以直接下陷至用户态的下陷类型,则本发明所设计的硬件架构会将控制流引入本软件初始化阶段配置的宿主模式用户态软件中的下陷处理函数进行下陷处理,然后执行步骤(4)。其中,虚拟机下陷至用户态的过程不会被宿主系统内核介入,而是直接交由本软件配置的下陷处理函数进行处理。
92.步骤(4):本软件在用户态通过使用分配给虚拟机的软硬件资源(包括但不限于cpu计算资源,内存资源和设备资源)对虚拟机下陷进行处理,此外,下陷处理还需要使用本发明的硬件架构为宿主模式用户态所提供的一系列可以直接访问的虚拟机控制寄存器。这些寄存器会为本虚拟机监控器软件提供下陷处理的必要信息,包括但不限于提供虚拟机二级页表缺页地址信息的寄存器,控制虚拟机内部虚拟中断的控制寄存器,虚拟机下陷程序计数寄存器等,然后执行步骤(5)。其中,本软件利用硬件提供的特性直接在用户态获取虚拟机下陷处理所需的部分或全部必要信息,如果部分信息硬件未在用户态提供,则本软件可通过系统调用从宿主系统内核态获取。同时,本软件可管理的虚拟机资源包括但不限于宿主系统分配给该虚拟机的内存、虚拟机的二级页表、虚拟cpu状态、虚拟机状态以及i/o设备等。具体管理方式可以是本软件自行操控此类资源,也可以通过请求系统服务来间接控制。
93.步骤(5):本软件判断是否还要继续虚拟机的执行,如果继续执行虚拟机则执行步骤(2);如果不继续虚拟机的运行,则执行步骤(6)。
94.步骤(6):本软件回收虚拟机所占用资源并结束虚拟机与自身所在用户态进程。其中,本软件将对虚拟机进行必要的退出操作,包括保存部分数据并释放虚拟机占用的资源,随后退出结束本用户态进程。
95.具体地,可支持部分或全部种类的虚拟机下陷直接交由宿主模式用户态中的软件逻辑进行处理,具体下陷处理包括二级页表缺页处理、特权指令模拟处理、对虚拟机监控器的调用hypercall处理以及对存储器映射输入输出(也称为mmio)操作的处理,可以包含这些下陷处理的全部或部分。虚拟机下陷是直接交给宿主模式用户态软件的,此过程中控制流无需被宿主模式内核态的软件介入;而用户态软件对下陷的处理过程中可以自行选择是否使用宿主内核态软件的部分或全部功能,此阶段对宿主模式内核态的介入不做限制。。
96.具体地,可支持部分或全部种类的虚拟机下陷直接交由宿主模式用户态中的软件逻辑进行处理,硬件会为宿主内核态新增一类虚拟机下陷托管寄存器,宿主系统通过对该类寄存器的配置可以将部分或全部原本下陷进内核态的虚拟机下陷托管给用户态直接处理。
97.如图5所示,为本发明一种运行在用户态的虚拟机管理方案软件设计部分的具体流程。结合图4对以下步骤进行详细描述:
98.在步骤401中,本软件对所需服务的虚拟机进行初始化。然后执行步骤402。
99.在步骤402中,本软件直接从用户态进入虚拟机开始运行,然后执行步骤403。
100.在步骤403中,运行至虚拟机产生下陷并进入本软件初始化阶段配置的下陷处理函数进行下陷处理,然后执行步骤404。
101.在步骤404中,本软件在用户态对虚拟机下陷进行处理,然后执行步骤405。
102.在步骤405中,本软件判断是否还要继续虚拟机的执行,如果继续执行虚拟机则执行步骤402;如果不继续虚拟机的运行,则执行步骤406。
103.在步骤406中,本软件结束虚拟机与本进程。
104.如图2所示,本发明在用户态采用一对一的服务模式,各个虚拟机和其专属虚拟机管理器运行在独立用户态进程中,与其它虚拟机和系统内核隔离。因此以上步骤可以同时在多个用户态进程中进行,从而使得多个虚拟机能同时共用宿主系统的计算资源。
105.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
106.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献