CN116225765A - 一种在虚拟机中执行指令的方法和一种虚拟机监视器 - Google Patents

一种在虚拟机中执行指令的方法和一种虚拟机监视器 Download PDF

Info

Publication number
CN116225765A
CN116225765A CN202310227996.9A CN202310227996A CN116225765A CN 116225765 A CN116225765 A CN 116225765A CN 202310227996 A CN202310227996 A CN 202310227996A CN 116225765 A CN116225765 A CN 116225765A
Authority
CN
China
Prior art keywords
virtual machine
instruction
kernel
exception
execution
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
CN202310227996.9A
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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202310227996.9A priority Critical patent/CN116225765A/zh
Publication of CN116225765A publication Critical patent/CN116225765A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

说明书实施例提供了一种在虚拟机中执行指令的方法,该方法包括:截获运行于宿主机用户态的虚拟机内核、或虚拟机中的第一用户进程执行第一指令触发的第一异常,并将第一异常发送到运行于宿主机内核态的虚拟机监视器;虚拟机监视器根据第一异常的触发源,处理第一异常,其中,若第一指令的执行者为虚拟机内核,虚拟机监视器从第一异常的异常信息中,获取第一指令的执行上下文;以及,根据第一指令的执行上下文,模拟第一指令的执行,得到第一执行结果,并将第一执行结果发送给虚拟机内核。

Description

一种在虚拟机中执行指令的方法和一种虚拟机监视器
技术领域
本说明书一个或多个实施例涉及虚拟机领域,尤其涉及一种在虚拟机中执行指令的方法和一种虚拟机监视器。
背景技术
近年来,随着云计算技术的普及,作为其核心技术基石的虚拟化技术得到了越来越多的重视。在实际的生产环境中,出于成本考虑,应用服务提供商常常购买/租用例如公有云云主机用作业务运行环境。目前,云提供商常常通过虚拟机方案提供云主机,并且其虚拟机方案通常基于硬件辅助技术。如果要在云主机中运行虚拟机,需要硬件支持嵌套辅助虚拟化特性,并在虚拟机运行时打开硬件的嵌套辅助虚拟化特性。
但是,在一些场景下,出于性能和安全性考虑,云提供商希望关闭硬件的嵌套辅助虚拟化特性。在此情况下,依赖硬件辅助技术难以提供对于在云主机中运行虚拟机的支持。
发明内容
本说明书中的实施例旨在提供一种在虚拟机中执行指令的方法,利用该方法可以仅通过软件形式的虚拟机监视器接收和处理由虚拟机用户进程或虚拟机内核引起的异常,由虚拟机监视器接收和转发由虚拟机用户进程或虚拟机内核执行的***调用指令,由虚拟机内核处理通常由虚拟机用户进程发起的***调用指令,而无需虚拟化硬件辅助技术的支持。从而,提供了一种新的虚拟化方案,克服了依赖硬件辅助技术的虚拟化方案存在的例如不支持热升级方式、以及消耗大量计算资源的问题。
根据第一方面,提供一种在虚拟机中执行指令的方法,包括:
截获运行于宿主机用户态的虚拟机内核、或虚拟机中的第一用户进程执行第一指令触发的第一异常,并将所述第一异常发送到运行于宿主机内核态的虚拟机监视器;
所述虚拟机监视器根据所述第一异常的触发源,处理所述第一异常,其中,若所述第一异常的触发源为所述虚拟机内核,所述虚拟机监视器从所述第一异常的异常信息中,获取所述第一指令的执行上下文;以及,根据所述第一指令的执行上下文,模拟第一指令的执行,得到第一执行结果,并将所述第一执行结果发送给所述虚拟机内核。
在一种可能的实施方式中,所述方法还包括:
若所述第一异常的触发源为所述第一用户进程,所述虚拟机监视器将所述第一异常转发给所述虚拟机内核。
在一种可能的实施方式中,所述第一指令为内核态特权指令。
在一种可能的实施方式中,根据所述第一指令的执行上下文,模拟第一指令的执行,得到第一执行结果,包括:
将所述第一指令的执行上下文,发送给运行于宿主机内核态的宿主机内核,并从宿主机内核得到所述第一执行结果。
在一种可能的实施方式中,所述方法还包括:
截获虚拟机中的第二用户进程调用宿主机内核的***调用指令,并将所述***调用指令发送到所述虚拟机监视器;
所述虚拟机监视器将***调用指令转发给所述虚拟机内核,并接收所述虚拟机内核返回的针对所述***调用指令的第二执行结果,并将所述第二执行结果返回给所述用户进程。
在一种可能的实施方式中,所述方法还包括:
响应于所述虚拟机内核执行的指向虚拟机监视器的超级调用指令,将所述超级调用指令发送到虚拟机监视器,所述超级调用指令用于指示第二指令;
虚拟机监视器模拟所述第二指令的执行,得到第三执行结果,并将所述第三执行结果返回给所述虚拟机内核。
在一种可能的实施方式中,所述虚拟机监视器模拟所述第二指令的执行,得到第三执行结果,包括:
所述虚拟机监视器将第二指令发送给运行于宿主机内核态的宿主机内核,并从宿主机内核得到第三执行结果。
在一种可能的实施方式中,所述第二指令包括,敏感非特权指令。
在一种可能的实施方式中,所述敏感非特权指令包括标志传送指令POPF。
在一种可能的实施方式中,所述第二指令包括:敏感非特权指令以外的其它指令。
在一种可能的实施方式中,所述其它指令包括:***寄存器写入指令WRMSR、或***寄存器读取指令RDMSR中的一种。
根据第二方面,提供一种虚拟机监视器,包括:
接收单元,配置为,接收运行于宿主机用户态的虚拟机内核、或虚拟机中的第一用户进程执行第一指令触发的第一异常;
处理单元,配置为,所述虚拟机监视器根据所述第一异常的触发源,处理所述第一异常,其中,若所述第一异常的触发源为所述虚拟机内核,所述虚拟机监视器从所述第一异常的异常信息中,获取所述第一指令的执行上下文;以及,根据所述第一指令的执行上下文,模拟第一指令的执行,得到第一执行结果,并将所述第一执行结果发送给所述虚拟机内核。
在一种可能的实施方式中,所述接收单元,进一步配置为,接收虚拟机中的第二用户进程调用宿主机内核的***调用指令;
所述处理单元,进一步配置为,将所述***调用指令转发给所述虚拟机内核,并接收所述虚拟机内核返回的针对所述***调用指令的第二执行结果,以及将所述第二执行结果返回给所述用户进程。
在一种可能的实施方式中,所述接收单元,进一步配置为,接收所述虚拟机内核执行的指向虚拟机监视器的超级调用指令,所述超级调用指令用于指示第二指令;
所述处理单元,进一步配置为,模拟所述第二指令的执行,得到第三执行结果,并第三执行结果返回给所述虚拟机内核。
在一种可能的实施方式中,所述第二指令包括,敏感非特权指令。
根据第三方面,提供一种虚拟机***,其中包括有第二方面所述的虚拟机监视器。
根据第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求第一方面所述的方法。
根据第五方面,提供一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面所述的方法。
利用以上各个方面中的方法、虚拟机监视器、***、设备和介质中的一个或多个,可以通过软件形式的虚拟机监视器接收、转发或处理由虚拟机用户进程或虚拟机内核执行的***调用指令或引起的异常,由虚拟机内核处理通常由虚拟机用户进程发起的***调用指令。从而,提供了一种新的无需虚拟化硬件辅助技术支持的虚拟化方案,克服了依赖硬件辅助技术的虚拟化方案存在的例如不支持热升级方式、以及消耗大量计算资源的问题。
附图说明
为了更清楚说明本发明实施例的技术方案,下面将对实施例描述中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出根据本说明书实施例的一种在虚拟机中执行指令的方法的原理示意图;
图2示出根据本说明书实施例的一种在虚拟机中执行指令的方法的流程图;
图3示出根据本说明书一个实施例的一种在虚拟机中执行指令的方法的示意图;
图4示出根据本说明书另一实施例的一种在虚拟机中执行指令的方法的示意图;
图5示出根据本说明书又一实施例的一种在虚拟机中执行指令的方法的示意图;
图6示出根据本说明书再一实施例的一种在虚拟机中执行指令的方法的示意图;
图7示出根据本说明书实施例的一种虚拟机监视器的结构图。
具体实施方式
下面将结合附图,对本发明书提供的方案进行描述。
如前所述,近年来,随着云计算计算的普及,作为核心技术基石的虚拟化技术得到了越来越多的运用。在实际的生产环境中,出于成本考虑,应用服务提供厂商常常通过购买/租用云机器作为业务运行环境。而目前的云供应商常常依赖于基于硬件辅助技术的虚拟机方案,提供云主机服务。如果要云主机中嵌套运行虚拟机,需要硬件支持嵌套辅助虚拟化特性,并在虚拟机运行时打开硬件的嵌套辅助虚拟化特性。但是,基于硬件辅助技术的虚拟化方案,常常也存在如下问题:一方面,基于硬件辅助技术的嵌套虚拟化实现方案,由于云主机本身可以是虚拟机,而云主机内的嵌套虚拟机的异常导致直接退出到宿主机,再经过宿主机模拟注入到云主机,整个异常处理路径过长,性能较低。第二方面,例如公有云场景下,开启嵌套虚拟化会影响无需嵌套虚拟化支持的云主机的性能,进而影响了云服务的整体性能。第三方面,当硬件辅助技术出现硬件安全漏洞时,或者需要通过更新硬件来修复,或者需要通过执行指令微码来修复。无论是更新硬件或是通过指令微码来修复(即便只通过指令微码来修复,也需要重启硬件***),均不能通过仅更新虚拟机软件的热升级方式进行修复,因此对于云服务安全性的维护较为困难。所以,一些云提供商出于服务性能和安全维护的因素,希望关闭硬件的嵌套辅助虚拟化特性。在这种情况下,这种基于硬件辅助技术的虚拟化方案难以提供虚拟化支持。例如,KVM(Kernel-based Virtual Machine)是Linux***内核原生的虚拟化实现方案,可以作为内核模块在***运行时被载入。其架构精简,与内核紧密结合,并可以通过重用Linux内核中的子***(比如调度子***和内存管理子***),获得较高的性能。但是,KVM方案依赖于硬件辅助技术提供例如宿主机和客户机(虚拟机)之间的隔离和切换,从而无法满足云服务提供商对于虚拟化的上述要求。
为了解决上述技术问题,本说明书的实施例提供了一种在虚拟机中执行指令的方法。为了更清楚的说明本说明书的实施例提供的在虚拟机中执行指令的方案,下面先对常规的虚拟机化方案进行说明。常规的,操作***内核管理硬件资源,可以运行在内核态并执行内核态特权指令。如果让虚拟机内核也直接运行在宿主机内核态的话,那么虚拟机内核可以直接执行特权指令,从而产生可以破坏宿主机、导致宿主机安全问题的可能性。硬件辅助技术通过增加一个宿主机的的状态维度,来解决这个问题。常规的,宿主机的状态只有一个维度,即处于内核态或用户态(或者说宿主机CPU的状态只有内核态或用户态,为方便描述,可以简称宿主机状态为内核态或用户态)。硬件辅助技术增加了另一个状态维度,即客户(guest)态或宿主(host)态。即宿主机可以处于以下四种状态之一,guest用户态、host用户态,guest内核态、host内核态。并使得虚拟机内核运行在guest内核态,并无法直接执行例如可以导致宿主机安全问题的特权指令。然后,如果基于上述服务性能和安全维护的因素,关闭硬件的嵌套辅助虚拟化特性。在没有硬件辅助支持下,为了保证宿主机的安全,如果让虚拟机内核运行在用户态,在用户态运行虚拟机内核又会导致例如执行内核态特权指令失败的问题。
图2示出根据本说明书实施例的一种在虚拟机中执行指令的方法的原理示意图。如图2所示,该方法的核心思想是,在宿主机用户态,运行一个虚拟机操作***内核,为方便描述,简称虚拟机内核。截获用户进程或虚拟机内核在例如运行内核特权指令时产生的异常(例如内部异常(exception)或外部中断(interrupt)),并通过运行在宿主机内核态的虚拟机监视器处理这些异常(具体的,在一个例子中,还可以例如通过异常返回指令(iret)将处理结果返回给用户进程或虚拟机内核)。在一个实施例中,还可以截获用户进程通过***调用指令(syscall)对于宿主机内核的调用,并将该调用发送到虚拟机监视器,由虚拟机监视器转发给虚拟机内核进行处理,并将处理结果通过虚拟机监视器返回给用户进程(具体的,例如通过sysret指令将处理结果返回给用户进程)。在一个实施例中,还可以响应于虚拟机内核执行的指向虚拟机监视器的超级调用指令(hypercall),由虚拟机监视器执行该超级调用指令指示的操作,并将操作结果返回给虚拟机内核。通过上述方法,可以仅通过软件形式的虚拟机监视器接收和处理由虚拟机用户进程/虚拟机引起的异常,可以克服在用户态运行虚拟机内核会导致例如执行内核态特权指令失败的问题。以及,通过虚拟机监视器接收和转发由虚拟机用户进程执行的***调用指令,由虚拟机内核处理上述***调用指令,并不是通过常规的宿主机内核***处理。进而,在无需硬件辅助技术的支持,提供了一种新的运行效率高的虚拟化方案。也因此,克服了依赖硬件辅助技术的虚拟化方案的例如不支持热升级方式、以及消耗大量计算资源的问题。
下面进一步阐述该方法的具体过程。
图2示出根据本说明书实施例的一种在虚拟机中执行指令的方法的流程图。如图3所示,该方法至少包括如下步骤:
步骤S21,截获运行于宿主机用户态的虚拟机内核、或虚拟机中的第一用户进程执行第一指令触发的第一异常,并将所述第一异常发送到运行于宿主机内核态的虚拟机监视器;
步骤S23,所述虚拟机监视器根据所述第一异常的触发源,处理所述第一异常;若所述第一异常的触发源为所述虚拟机内核,虚拟机监视器从所述第一异常的异常信息中,获取所述第一指令的执行上下文,以及,根据所述第一指令的执行上下文,模拟第一指令的执行,得到第一执行结果,并将所述第一执行结果发送给所述虚拟机内核。
首先,在步骤S21,截获运行于宿主机用户态的虚拟机内核、或虚拟机中的第一用户进程执行第一指令触发的第一异常,并将所述第一异常发送到运行于宿主机内核态的虚拟机监视器。
虚拟机(Virtual Machine),通常是指一种通过软件模拟的仿真计算机***。例如,可以是通过软件模拟的具有完整硬件***功能的、运行在一个完全隔离环境中的计算机***,在该计算机***中支持执行操作***(OS)。安装在虚拟机上的操作***称为虚拟机操作***,虚拟机操作***的内核即为虚拟机内核。通常,虚拟机可以安装于物理机之上,该物理机也称之为宿主机。虚拟机监视器(Virtual Machine Monitor,VMM)是安装在物理机(宿主机)上的软件层,可以通过虚拟机监视器在物理机上运行和管理多个虚拟机。
操作***(Operating System,OS)内核,通常是指一个操作***的核心,是基于硬件的首层软件扩充,提供操作***的最基本的功能,一般而言,它例如负责管理***的进程、内存、设备驱动程序、文件和网络***等。通常,OS内核运行于宿主机CPU的内核态(Kernel Mode),或简称,运行于宿主机内核态。普通应用程序则运行于宿主机CPU的用户态(User Mode),或简称,运行于宿主机用户态。与此不同的是,该步骤中的虚拟机内核,并不是运行于宿主机内核态的、宿主机操作***本身的内核,而是一个运行在宿主机用户态的、且不依赖于硬件虚拟化技术的操作***内核,该内核不一定实现宿主机本身内核的全部功能,可以只实现宿主机本身内核的部分功能。
该步骤中,可以截获虚拟机中的虚拟机内核或用户进程(例如,第一用户进程)执行指令时触发的异常(例如,第一异常),并将其转发到虚拟机监视器。其中,虚拟机内核或用户进程运行于宿主机的用户态,虚拟机监视器运行于宿主机的内核态。在一个实施例中,异常可以包括内部异常(exception)。内部异常,通常是由CPU内部事件引起,例如可以由指令执行错误、访存错误等引起。在一个实施例中,异常还可以包括外部中断(interrupt),外部中断通常是由外部硬件事件引起的程度控制中断,外部通常是指CPU外部。在不同的例子中,外部中断例如可以来自不同的外部设备,例如定时器芯片、***设备(键盘、鼠标等)、I/O端口(串行、并行等)、磁盘驱动器、CMOS时钟、扩展卡(声卡、视频卡等)中的一种。常规的,无论是内部异常还是外部中断,通常都会打断处理器当前指令的执行,跳转到例如宿主机OS内核的异常处理程序,并在异常处理后返回到原来的指令流中继续进行。与此不同,本步骤中截获异常并将其发送到运行于宿主机内核态的虚拟机监视器。
由于用户进程和虚拟机内核均运行在宿主机用户态,如果虚拟机内核或用户进程执行了只可以在宿主机内核态执行成功的指令,即内核态特权指令,将导致抛出异常。因此,在一个实施例中,第一指令可以为内核态特权指令。在不同的具体实施例中,内核态特权指令可以为不同的具体指令,本说明书对此不作限制。
在不同的实施例中,可以通过不同的具体方式截获虚拟机内核或用户进程触发的异常,本说明书对此也不做限制。在一个实施例中,例如可以通过钩子函数截获虚拟机内核或用户进程触发的异常。
其后,在步骤S23,虚拟机监视器根据第一异常的触发源,处理所述第一异常。
该步骤中,虚拟机监视器根据其在步骤S31接收的第一异常的触发源(例如为虚拟机内核或用户进程),确定处理第一异常的方式。具体的,若所述第一异常的触发源为所述虚拟机内核,则从所述第一异常的异常信息中,获取所述第一指令的执行上下文。然后,根据第一指令的执行上下文,模拟第一指令的执行,得到模拟的执行结果(例如,为第一执行结果),并将第一执行结果发送给所述虚拟机内核。图3示出根据本说明书一个实施例的一种在虚拟机中执行指令的方法的示意图。如图3所示,对于虚拟机内核抛出的异常(exception1/interrupt1),虚拟机监视器可以通过异常返回指令iret将异常处理结果(第一执行结果)发送给所述虚拟机内核。图4示出根据本说明书一个实施例的一种在虚拟机中执行指令的方法的示意图。在一个实施例中,若所述第一异常的触发源为所述第一用户进程,所述虚拟机监视器可以将所述第一异常转发给所述虚拟机内核。如图3所示,对于用户进程抛出的异常(exception2/interrupt2),虚拟机监视器可以将该异常转发给虚拟机内核进行处理。在不同的具体实施例中,虚拟机内核通过不同的具体方式,处理接收到的转发异常。在一个例子中,虚拟机内核例如可以终止所述用户进程。
由于虚拟机监视器运行于宿主机内核态,在上述第一指令为内核态特权指令的实施例中,虚拟机监视器本身可以模拟例如内核态特权指令的执行。在一个例子中,虚拟机监视器还可以将所述第一指令的执行上下文,发送给运行于宿主机内核态的宿主机内核,并从宿主机内核得到所述第一执行结果。
在一些场景中,由于没有硬件辅助支持,例如虚拟机中的用户进程还可以执行调用宿主机内核的***调用(syscall)指令。可以截获***调用指令,并将其发送到虚拟机监视器,由虚拟机监视器转发到运行在宿主机用户态的虚拟机内核进行执行,并得到对应的执行结果。因此,在一个实施例中,可以截获虚拟机中的第二用户进程调用宿主机内核的***调用指令,并将所述***调用指令发送到所述虚拟机监视器;所述虚拟机监视器将***调用指令转发给所述虚拟机内核,并接收所述虚拟机内核返回的针对所述***调用指令的第二执行结果,并将所述第二执行结果返回给所述用户进程。图4示出根据本说明书另一实施例的一种在虚拟机中执行指令的方法的示意图。如图4所示,可以截获虚拟机中的用户进程调用宿主机内核的syscall指令并发送到虚拟机监视器,虚拟机监视器将syscall指令转发虚拟机内核,并接收指示执行结果的***返回指令(sysret)指令,将sysret指令转发给用户进程。
在另一些场景中,当虚拟机内核执行敏感非特权指令时,并不会引发异常,但是敏感非特权指令在用户态(宿主机)运行的结果与在内核态的期望运行结果不同,即在用户态运行的结果可以出错。可以由虚拟机内核执行直接指向虚拟机监视器的超级调用指令,超级调用指令可以用于指示例如预定的第二指令。在一个例子中,第二指令例如可以指示敏感非特权指令。虚拟机内核通过执行超级调用指令,本身不用执行第二指令,而是指示虚拟机监视器模拟执行第二指令。由于虚拟机监视器运行在内核态,虚拟机监视器在接收到超级调用指令的调用后,可以模拟执行第二指令,得到并返回正确的执行结果(例如,第三执行结果)给虚拟机内核。图5示出根据本说明书又一实施例的一种在虚拟机中执行指令的方法的示意图。在如图5所示的实施例中,虚拟机监视器接收虚拟机内核发起的超级调用指令(hypercall指令),可以在执行超级调用指令指示的指令后,将执行结果例如通过超级返回指令(hret指令)发送给虚拟机内核。在不同的实施例中,敏感非特权指令包括的具体指令可以不同。在一个例子中,例如可以包括标志传送指令(POPF指令,或称标志位出栈指令),POPF指令在用户态和内核态中均可以执行,只有在内核态可以得到正确的执行结果。类似于内核态特权指令的模拟执行,在一个实施例中,虚拟机监视器也可以将所述敏感非特权指令发送给运行于宿主机内核态的宿主机内核,并从宿主机内核得到第三执行结果。
除了敏感非特权指令,超级调用指令也可以用于指示其它指令。例如,在一些场景中,为了提高运行效率,减少截获指令带来的计算资源消耗。也可以由虚拟机内核执行指示其它指令的超级调用指令,由虚拟机监视器执行超级调用指令指示的其它指令,并返回操作结果。在不同的实施例中,超级调用指示指令的其它指令可以不同,在一个例子中,例如可以包括***寄存器写入指令WRMSR、或***寄存器读取指令RDMSR中的一种。
综上所述,利用本说明书实施例提供的在虚拟机中执行指令的方法。一方面,可以通过虚拟机监视器处理虚拟机程序或内核抛出的异常。以及,由虚拟机监视器转发虚拟机用户进程执行的***调用指令,由虚拟机内核处理上述***调用指令,提供了一种无需硬件辅助技术支持的、运行效率高的虚拟机化方案。进而,该方案相比于依赖硬件辅助技术的虚拟化方案,可以大大减少消耗计算资源。此外,依赖硬件辅助技术的虚拟化方案,无法对硬件通过微代码执行的对用户态和内核态的状态转换中所常常保存的冗余状态信息(例如,与当前执行程序无关的寄存器信息)进行控制。由于不依赖于硬件辅助技术的支持,该方案在用户态和内核态的状态转换中,无需保留例如与当前执行程序无关的冗余状态信,进一步减少了计算资源的消耗的效果。第二方面,还可以通过虚拟机监视器模拟执行敏感非特权指令,从而防止用户态下执行敏感非特权指令导致的执行错误,提高虚拟机运行的安全性。以及,通过虚拟机监视器执行超级调用指令,提高虚拟机的运行效率。第三方面,该方案是软件化虚拟化方案,可以通过软件热升级方式修复虚拟机故障,而无需通过例如硬件更新、或更新修复硬件微代码后重启硬件***的方式。并且,可以重用操作***内核功能,无需对操作***内核施加补丁。
根据另一部分的实施例,还提供一种虚拟机监视器。图7示出根据本说明书实施例的一种虚拟机监视器的结构图,如图7所示,该装置700包括:
接收单元701,配置为,接收运行于宿主机用户态的虚拟机内核、或虚拟机中的第一用户进程执行第一指令触发的第一异常;
处理单元702,配置为,根据所述第一异常的触发源,处理所述第一异常,其中,若所述第一异常的触发源为所述虚拟机内核,所述虚拟机监视器从所述第一异常的异常信息中,获取所述第一指令的执行上下文,以及,根据所述第一指令的执行上下文,模拟第一指令的执行,得到第一执行结果,并将所述第一执行结果发送给所述虚拟机内核。
在一个实施例中,所述接收单元701,可以进一步配置为,接收虚拟机中的第二用户进程调用宿主机内核的***调用指令;所述处理单元702,可以进一步配置为,将所述***调用指令转发给所述虚拟机内核,并接收所述虚拟机内核返回的针对所述***调用指令的第二执行结果,以及将所述第二执行结果返回给所述用户进程。
在一个实施例中,所述接收单元701,可以进一步配置为,接收所述虚拟机内核执行的指向虚拟机监视器的超级调用指令,所述超级调用指令用于指示第二指令;所述处理单元702,可以进一步配置为,模拟所述第二指令的执行,得到第三执行结果,并第三执行结果返回给所述虚拟机内核。
在一个实施例中,所述第二指令可以包括,敏感非特权指令。
根据另一部分的实施例,还提供一种虚拟机***,其中包括有上述的虚拟机监视器。
本说明书另一方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述任一项方法。
本说明书另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项方法。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

Claims (18)

1.一种在虚拟机中执行指令的方法,包括:
截获运行于宿主机用户态的虚拟机内核、或虚拟机中的第一用户进程执行第一指令触发的第一异常,并将所述第一异常发送到运行于宿主机内核态的虚拟机监视器;
所述虚拟机监视器根据所述第一异常的触发源,处理所述第一异常,其中,若所述第一异常的触发源为所述虚拟机内核,所述虚拟机监视器从所述第一异常的异常信息中,获取所述第一指令的执行上下文,以及,根据所述第一指令的执行上下文,模拟第一指令的执行,得到第一执行结果,并将所述第一执行结果发送给所述虚拟机内核。
2.根据权利要求1所述的方法,还包括:
若所述第一异常的触发源为所述第一用户进程,所述虚拟机监视器将所述第一异常转发给所述虚拟机内核。
3.根据权利要求1或2所述的方法,其中,所述第一指令为内核态特权指令。
4.根据权利要求1所述的方法,其中,根据所述第一指令的执行上下文,模拟第一指令的执行,得到第一执行结果,包括:
将所述第一指令的执行上下文,发送给运行于宿主机内核态的宿主机内核,并从宿主机内核得到所述第一执行结果。
5.根据权利要求1所述的方法,还包括:
截获虚拟机中的第二用户进程调用宿主机内核的***调用指令,并将所述***调用指令发送到所述虚拟机监视器;
所述虚拟机监视器将***调用指令转发给所述虚拟机内核,并接收所述虚拟机内核返回的针对所述***调用指令的第二执行结果,并将所述第二执行结果返回给所述用户进程。
6.根据权利要求1所述的方法,还包括:
响应于所述虚拟机内核执行的指向虚拟机监视器的超级调用指令,将所述超级调用指令发送到虚拟机监视器,所述超级调用指令用于指示第二指令;
虚拟机监视器模拟所述第二指令的执行,得到第三执行结果,并将所述第三执行结果返回给所述虚拟机内核。
7.根据权利要求6所述的方法,其中,所述虚拟机监视器模拟所述第二指令的执行,得到第三执行结果,包括:
所述虚拟机监视器将第二指令发送给运行于宿主机内核态的宿主机内核,并从宿主机内核得到第三执行结果。
8.根据权利要求7所述的方法,其中,所述第二指令包括,敏感非特权指令。
9.根据权利要求8所述的方法,其中,所述敏感非特权指令包括标志传送指令POPF。
10.根据权利要求6所述的方法,其中,所述第二指令包括:敏感非特权指令以外的其它指令。
11.根据权利要求10所述的方法,其中,所述其它指令包括:***寄存器写入指令WRMSR、或***寄存器读取指令RDMSR中的一种。
12.一种虚拟机监视器,包括:
接收单元,配置为,接收运行于宿主机用户态的虚拟机内核、或虚拟机中的第一用户进程执行第一指令触发的第一异常;
处理单元,配置为,根据所述第一异常的触发源,处理所述第一异常,其中,若所述第一异常的触发源为所述虚拟机内核,所述虚拟机监视器从所述第一异常的异常信息中,获取所述第一指令的执行上下文,以及,根据所述第一指令的执行上下文,模拟第一指令的执行,得到第一执行结果,并将所述第一执行结果发送给所述虚拟机内核。
13.根据权利要求12所述的虚拟机监视器,其中,
所述接收单元,进一步配置为,接收虚拟机中的第二用户进程调用宿主机内核的***调用指令;
所述处理单元,进一步配置为,将所述***调用指令转发给所述虚拟机内核,并接收所述虚拟机内核返回的针对所述***调用指令的第二执行结果,以及将所述第二执行结果返回给所述用户进程。
14.根据权利要求12所述的虚拟机监视器,其中,
所述接收单元,进一步配置为,接收所述虚拟机内核执行的指向虚拟机监视器的超级调用指令,所述超级调用指令用于指示第二指令;
所述处理单元,进一步配置为,模拟所述第二指令的执行,得到第三执行结果,并第三执行结果返回给所述虚拟机内核。
15.根据权利要求14所述的虚拟机监视器,其中,所述第二指令包括,敏感非特权指令。
16.一种虚拟机***,其中包括有权利要求12~15中任一项的所述的虚拟机监视器。
17.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-11中任一项的所述的方法。
18.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-11任一项的所述的方法。
CN202310227996.9A 2023-03-06 2023-03-06 一种在虚拟机中执行指令的方法和一种虚拟机监视器 Pending CN116225765A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310227996.9A CN116225765A (zh) 2023-03-06 2023-03-06 一种在虚拟机中执行指令的方法和一种虚拟机监视器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310227996.9A CN116225765A (zh) 2023-03-06 2023-03-06 一种在虚拟机中执行指令的方法和一种虚拟机监视器

Publications (1)

Publication Number Publication Date
CN116225765A true CN116225765A (zh) 2023-06-06

Family

ID=86585505

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310227996.9A Pending CN116225765A (zh) 2023-03-06 2023-03-06 一种在虚拟机中执行指令的方法和一种虚拟机监视器

Country Status (1)

Country Link
CN (1) CN116225765A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573419A (zh) * 2024-01-16 2024-02-20 上海芯联芯智能科技有限公司 一种页面异常处理方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573419A (zh) * 2024-01-16 2024-02-20 上海芯联芯智能科技有限公司 一种页面异常处理方法及装置
CN117573419B (zh) * 2024-01-16 2024-04-26 上海芯联芯智能科技有限公司 一种页面异常处理方法及装置

Similar Documents

Publication Publication Date Title
CN108475217B (zh) 用于审计虚拟机的***及方法
US8387046B1 (en) Security driver for hypervisors and operating systems of virtualized datacenters
US10509686B2 (en) Distributable computational units in a continuous computing fabric environment
US9009701B2 (en) Method for controlling a virtual machine and a virtual machine system
US8789049B2 (en) Offloading operations to a replicate virtual machine
KR101019937B1 (ko) 보안 운영 시스템 스위칭
US9323563B2 (en) Determining virtual machine migration in view of a migration rule
US8151263B1 (en) Real time cloning of a virtual machine
US7356735B2 (en) Providing support for single stepping a virtual machine in a virtual machine environment
US9946870B2 (en) Apparatus and method thereof for efficient execution of a guest in a virtualized enviroment
US10866824B2 (en) Continuous uptime of guest virtual machines during upgrade of a virtualization host device
Iqbal et al. An overview of microkernel, hypervisor and microvisor virtualization approaches for embedded systems
Fattori et al. Dynamic and transparent analysis of commodity production systems
US20160371105A1 (en) Deployment and installation of updates in a virtual environment
KR101733903B1 (ko) 피어 모니터에서 신뢰성, 이용 가능성 및 서비스 가능성(ras) 흐름들을 지원하기 위한 메커니즘
US9164784B2 (en) Signalizing an external event using a dedicated virtual central processing unit
US20040205755A1 (en) Operating systems
US8910155B1 (en) Methods and systems for injecting endpoint management agents into virtual machines
WO2022135429A1 (zh) 快速启动方法
US20140143372A1 (en) System and method of constructing a memory-based interconnect between multiple partitions
CN112199165B (zh) 用于热升级安全容器的虚拟机监控程序的方法及装置
WO2020063432A1 (zh) 一种升级虚拟化模拟器的方法和装置
CN116225765A (zh) 一种在虚拟机中执行指令的方法和一种虚拟机监视器
Im et al. On-Demand Virtualization for Post-Copy OS Migration in Bare-Metal Cloud
CN114115703A (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