实现虚拟机自省的方法和装置、电子设备及存储介质与流程
未命名
07-15
阅读:90
评论:0

1.本公开涉及数据安全领域,尤其涉及一种实现虚拟机自省的方法和装置、电子设备及存储介质。
背景技术:
2.虚拟机自省(virtualmachineintrospection,vmi)技术是一种在虚拟机监视器(hypervisor)层面监控虚拟机(virtualmachine,vm)运行时状态的技术。由于该技术能够通过分析虚拟机操作系统运行时的活动来检测和防止异常入侵等,因而该技术在计算机安全领域研究有很高的关注度。
3.由于vmi具备可以监控和分析虚拟机运行时状态的特点,因此可以用来提高产品可维护性,例如,在虚拟机出现异常,任务无法正常运行时,可以通过vmi技术获取当前vm内部的状态信息进而进行进一步的分析;也可以通过结合从虚拟机获取的信息实现虚拟机监视器自身机制的优化,例如结合vm状态的vcpu调度策略优化等。由于虚拟机监视器具有超级权限访问虚拟机的所有硬件资源(例如处理器寄存器、内存以及设备等),因此,虚拟机监视器对运行在虚拟机上的操作系统访问的资源拥有完整的视图。
4.然而,从虚拟机监视器的视角来看,得到虚拟机的数据只是原始的位或字节数据,缺少更高层的操作系统抽象或语义信息,这个问题也被称作语义鸿沟(semanticgap)。因此,vmi技术需要克服语义鸿沟问题,重建对虚拟机操作系统的数据结构及高层语义信息的抽象。
技术实现要素:
5.根据本公开实施例的第一方面,提供了一种实现虚拟机自省vmi的方法,包括:接收通过虚拟机监视器访问虚拟机内存区域以进行数据读取的读请求;虚拟机监视器根据所述读请求访问虚拟机内存区域进行数据读操作,并返回操作结果;在虚拟机监视器所属的虚拟化系统外部的设备上,基于所述操作结果进行语义信息重建。
6.可选地,在虚拟机监视器所属的虚拟化系统外部的设备上基于所述操作结果进行语义信息重建的步骤包括:通过使用虚拟机操作系统的符号表信息和源码对所述操作结果中包含的元数据进行解析;根据解析的元数据,重建虚拟机操作系统的数据结构和高层语义信息。
7.可选地,在所述语音信息重建以后,所述方法还包括:接收通过虚拟机监视器访问虚拟机内存区域以进行数据写入的写请求,并且虚拟机监视器根据所述写请求访问虚拟机内存区域进行数据写操作;和/或接收在虚拟机监视器中调度虚拟机操作系统中的虚拟机程序的程序调度请求,并且虚拟机监视器根据所述程序调度请求调度所述虚拟机程序执行操作,其中,所述写请求和所述程序调度请求符合通过所述语义信息重建而获得的虚拟机操作系统的数据结构和高层语义信息。
8.可选地,所述读请求、所述写请求和所述程序调度请求中的每一个请求是从所述
设备接收的,并且至少包括虚拟机id、操作类型和符号的虚拟地址,其中,所述符号是函数名或变量名。
9.可选地,所述数据读操作/数据写操作的步骤包括:根据读请求/写请求中包含的虚拟机id,确定对应的虚拟机;根据所述虚拟机以及读请求/写请求中包含的所述符号的虚拟地址,确定待访问的所述虚拟机内存区域;对所述虚拟机内存区域进行读操作/写操作。
10.可选地,所述调度所述虚拟机程序执行操作的步骤是在虚拟化系统的硬件支持虚拟化主机扩展特性的情况下,在异常级别2中,在所述虚拟机监视器中执行的。
11.可选地,所述调度所述虚拟机程序执行操作的步骤包括:根据所述程序调度请求中包含的虚拟机id,确定对应的虚拟机;根据所述虚拟机以及所述程序调度请求中包含的所述符号的虚拟地址,确定所述虚拟机操作系统中的所述虚拟机程序;在所述虚拟机监视器中调度所述虚拟机程序执行操作。
12.根据本公开实施例的第二方面,提供了一种实现虚拟机自省vmi的装置,包括:vmi消息处理模块,被配置为接收通过虚拟机监视器访问虚拟机内存区域以进行数据读取的读请求;数据探测模块,被配置为:在虚拟化系统的虚拟机监视器中根据所述读请求访问虚拟机内存区域进行数据读操作,并返回操作结果;语义信息重建模块,被配置为:在虚拟机监视器所属的虚拟化系统外部的设备上,基于所述操作结果进行语义信息重建。
13.可选地,语义信息重建模块通过以下操作进行语义信息重建:通过使用虚拟机操作系统的符号表信息和源码对所述操作结果中包含的元数据进行解析;根据解析的元数据,重建虚拟机操作系统的数据结构和高层语义信息。
14.可选地,vmi消息处理模块还被配置为接收通过虚拟机监视器访问虚拟机内存区域以进行数据写入的写请求,并且,数据探测模块还被配置为在虚拟机监视器中根据所述写请求访问虚拟机内存区域进行数据写操作,和/或vmi消息处理模块还被配置为接收在虚拟机监视器中调度虚拟机操作系统中的虚拟机程序的程序调度请求,并且,所述装置还包括:操作系统os例程执行模块,被配置为在虚拟机监视器中根据所述程序调度请求调度所述虚拟机程序执行操作,其中,所述写请求和所述程序调度请求符合通过所述语义信息重建而获得的虚拟机操作系统的数据结构和高层语义信息。
15.可选地,所述读请求、所述写请求和所述程序调度请求中的每一个请求是从所述设备接收的,并且至少包括:虚拟机id、操作类型和符号的虚拟地址,其中,所述符号是函数名或变量名。
16.可选地,数据探测模块通过以下操作进行数据读操作/数据写操作:根据所述读请求/写请求中包含的虚拟机id,确定对应的虚拟机;根据所述虚拟机以及所述读请求/写请求中包含的所述符号的虚拟地址,确定待访问的所述虚拟机内存区域;对所述虚拟机内存区域进行读操作/写操作。
17.可选地,os例程执行模块在虚拟化系统的硬件支持虚拟化主机扩展特性的情况下,在异常级别2中,在所述虚拟机监视器中调度所述虚拟机程序执行操作。
18.可选地,os例程执行模块通过以下操作调度所述虚拟机程序执行操作:根据所述程序调度请求中包含的虚拟机id,确定对应的虚拟机;根据所述虚拟机以及所述程序调度请求中包含的所述符号的虚拟地址,确定所述虚拟机操作系统中的所述虚拟机程序;在所述虚拟机监视器中调度所述虚拟机程序执行操作。
19.根据本公开实施例的第三方面,提供了一种电子设备,包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行如上所述的实现vmi的方法。
20.根据本公开实施例的第四方面,提供了一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个处理器运行时,促使所述至少一个处理器执行如上所述的实现vmi的方法。
21.本公开的实施例提供的技术方案至少带来以下有益效果:根据本公开实施例的实现vmi的方法和装置,不需要在虚拟机操作系统中做任何修改或增加任何模块,完全消除了新增模块会对虚拟机操作系统带来的性能开销,并且通过只在虚拟机监视器中添加轻量模块(例如,vmi消息处理模块、数据探测和例程执行模块(即数据探测模块和os例程执行模块)),达到监视虚拟机的运行状态的效果。此外,还能够在虚拟机监视器侧访问并修改虚拟机操作系统的指定运行参数(如通过写操作执行运行参数,进行任务调度机制),优化操作系统的运行策略。进一步地,在硬件支持vhe的虚拟化系统中,通过在虚拟机监视器侧运行指定的虚拟机程序,改变客户虚拟机函数执行的时机和顺序,达到提升系统运行效率的目的(如虚拟机操作系统启动阶段的初始化函数)。另外,根据本公开实施例的实现vmi的方法和装置可通过设置在虚拟化系统外的pc端的语义信息重建模块进行语义重建,能够较大程度减轻虚拟机监视器的负担,同理,减少了对整个系统带来的性能开销。
22.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
23.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的示例实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
24.图1是示出现有技术的不同类型的虚拟化系统的示图;
25.图2是示出本发明构思的示例性框架;
26.图3是示出根据本公开示例性实施例的实现vmi的方法的流程图;
27.图4是示出根据本公开实施例的实现vmi的装置的框图;
28.图5是示出根据本公开实施例的电子设备的框图。
具体实施方式
29.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
30.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
31.在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该
若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括a和b之中的至少一个”即包括如下三种并列的情况:(1)包括a;(2)包括b;(3)包括a和b。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
32.如在背景技术中所提及的,vmi技术面临语义鸿沟问题。在现有技术中,为了在虚拟机监视器一侧解决语义鸿沟问题,提出了如下的很多相关技术。
33.(1)基于在虚拟机操作系统中新增代理(agent)的vmi方法
34.方法(1)通过在虚拟机操作系统中对感兴趣的系统调用(systemcall)添加钩子函数。在这种情况下,当执行到添加钩子函数的系统调用时,钩子函数显式地将虚拟机的运行活动通过超级调用(hypercall)发送给虚拟机监视器,从而使得虚拟机监视器可以监视感兴趣的活动。
35.然而,该vmi方法由于需要在虚拟机操作系统中新增钩子函数及相关hypercall,会对系统性能带来开销,同时也增加了恶意软件攻击的可能性。
36.(2)基于陷入(trap)异常的vmi方法
37.在硬件支持的虚拟化系统中,方法(2)会主动或被动的触发陷入事件。示例性的,虚拟机访问敏感资源,或者硬件资源产生的状态和事件时会触发陷入事件,例如vm切换,中断及异常等。当虚拟机监视器接收并处理陷入事件时,可以获取虚拟机运行的上下文信息,达到监视虚拟机的目的。
38.然而,方法(2)仅局限于观察指定事件,很多的系统调用和内存访问并不会自动陷入到虚拟机监视器。因此,该vmi方法获取的上下文信息也主要局限在处理器寄存器中的信息,而对于操作系统中的主要数据结构,却很难获取。
39.(3)基于操作系统源码(ossourcecode)分析的vmi方法
40.方法(3)主要使用公开发布的操作系统信息来解决语义鸿沟问题。例如,使用客户机操作系统(guest os)的符号表信息定位到相应内存区域中的数据,再结合操作系统源码来解析内存区域中的数据,便可以定位到具体的虚拟操作系统中的数据结构信息,从而达到监视虚拟机的效果。
41.然而,如图1的(b)所示,方法(3)主要使用在宿主客户机(type-2)虚拟化系统中,其利用宿主机操作系统(hostos)的先天优势来对客户机vm(guestvm)的内存等信息直接进行访问。但是,该方法并不适用于如图1的(a)中所示的裸金属(type-1)虚拟化系统。
42.为此,本公开提出一种针对type-1虚拟化系统实现vmi的方法,其可在不需要对客户操作系统进行任何修改(例如增加任何代理模块或钩子函数)仅通过修改虚拟机监视器的情况下实现虚拟机自省,可在虚拟化系统外部的设备上通过虚拟机监视器从虚拟机内存区域读取元数据,并对元数据进行解析来重建虚拟机操作系统的高层语义信息和操作系统数据结构的抽象,这样不但减轻了虚拟机监视器侧的负担,还可以在很大程度上减少了对整个虚拟机系统性能的影响。此外,在语义信息重建后,可通过虚拟机监视器根据接收的写请求访问虚拟机内存区域进行数据写操作,优化操作系统的运行策略,并且可通过虚拟机监视器根据接收的程序调度请求调度虚拟机操作系统中的虚拟机程序,改变客户虚拟机函数执行的时机和顺序,达到提升系统运行效率的目的。下面,将参照图2至图5对本公开的发明构思进行描述。
43.图2是示出本发明构思的示例性框架。
44.如图2中所示,虚拟化系统包括图2中右侧所示的虚拟机os、虚拟机监视器和硬件。本发明的所有修改均不涉及到虚拟机操作系统(即客户机操作系统),换句话说,所有修改均集中在虚拟化系统内的虚拟机监视器中,或者集中在虚拟化系统内的虚拟机监视器以及位于虚拟化系统外部的外部设备(例如pc端)中,而虚拟机操作系统不做任何修改。例如,可将以下的vmi消息处理模块、数据探测和例程执行模块(包括数据探测模块和os例程执行模块)设置在虚拟机监视器中,并将语义信息重建模块设置在pc端:
45.1.语义信息重建模块
46.该模块可被部署在pc端,但是本发明不限于此,该模块同样也可以被部署在虚拟机监视器中,但是为了减轻虚拟机监视器的负担,优选将该模块部署在pc端。该模块可作为与用户之间交互的接口,将用户需要监视的虚拟机信息或需要执行的虚拟机程序信息等作为用户请求消息发送给虚拟机监视器中的vmi消息处理模块,同时该模块能够接收vmi消息处理模块所输出的结果数据,对结果数据中的元数据进行语义信息重建并反馈给用户。
47.2.vmi消息处理模块
48.该模块在接收到语义信息重建模块传送到虚拟机监视器中的用户请求消息后,对该用户请求消息进行解析,并将解析结果传送给数据探测和例程执行模块,此外,该模块还可以将从数据探测和例程执行模块反馈的结果进行封装,并将封装结果传送给语义信息重建模块。
49.3.数据探测和例程执行模块
50.如图2中所示,该模块包含数据探测模块和os例程执行模块。
51.当根据从vmi消息处理模块接收到的解析结果确定用户想要进行操作的操作类型是读/写操作时,由数据探测模块根据解析结果在所述虚拟机监视器中访问虚拟机系统资源(例如虚拟机内存区域)以进行数据读/写操作,并将处理结果返回给vmi消息处理模块。
52.当根据解析结果确定用户想要进行操作的操作类型是调度虚拟机操作系统中的虚拟机程序时,由os例程执行模块在虚拟机监视器中调度所述虚拟机程序,并将处理结果返回给vmi消息处理模块,具体地,os例程执行模块实现以上处理时需要满足当前虚拟化系统的硬件能够支持虚拟化主机扩展(virtualization host extension,vhe),在这种情况下,根据解析结果,在异常级别2(exceptionlevel 2,el2)中,在虚拟机监视器中调度用户指定的虚拟机操作系统中的虚拟机程序,控制虚拟机操作系统的策略或运行状态等,并返回处理结果。
53.需要说明的是,图2中所示出的示例中,在虚拟机监视器中还包括数据通信模块,该模块用于实现虚拟机监视器与硬件资源之间的交互,例如,可将通过硬件资源从外部的pc端接收的用户请求消息传送给vmi消息处理模块,并且可将vmi消息处理模块输出的封装结果通过硬件资源传送给pc端。此外,该数据通信模块可属于虚拟机监视器本身固有的模块,并不属于本发明所添加的模块。此外,对虚拟机监视器的修改不限于以上示例,也就是说,以上模块可以被合并或组合,只要能够执行以下将描述的实现虚拟机自省的方法即可。
54.图3是示出根据本公开示例性实施例的实现虚拟机自省vmi的方法的流程图。
55.在步骤s310,接收通过虚拟机监视器访问虚拟机内存区域以进行数据读取的读请求。
56.用户首先通过虚拟机操作系统的内核符号表信息获取与每个符号相应的虚拟地址,其中,所述符号表示函数名或变量名,然后用户根据需求输入通过虚拟机监视器访问虚拟机内存区域以进行数据读取的读请求,也就是说,读请求可以是从外部设备接收的。之后由图2中的语义信息重建模块将该读请求传送给虚拟机监视器中的vmi消息处理模块,该读请求至少包含虚拟机id、操作类型和符号的虚拟地址,其中,对于读请求,操作类型可以指示读操作类型;虚拟机id表示在虚拟化系统(例如图1的(a)中所示的type-1虚拟化系统)上安装的虚拟机的标识号,其中,在虚拟化系统上可安装一个或更多个虚拟机,每个虚拟机有一个虚拟机id,虚拟机监视器根据虚拟机id就可以确定对应的虚拟机以及运行在该虚拟机上的虚拟机操作系统(例如linux操作系统、android操作系统或qnx操作系统等)。在获得来自语义信息重建模块的读请求以后,对该读请求进行解析来获得该读请求中包含的信息,例如虚拟机id、操作类型、符号的虚拟地址。
57.在步骤s320,虚拟机监视器根据接收的读请求访问虚拟机内存区域进行数据读操作,并返回操作结果。
58.具体地讲,当根据所述解析结果确定操作类型是读/写操作时,在所述虚拟机监视器中访问虚拟机内存区域以进行数据读/写操作,并返回处理结果。换句话说,在确定执行读/写操作时,由图2中的数据探测模块访问虚拟机内存区域以进行数据读/写操作。
59.具体地讲,可通过以下操作来实现数据读操作:根据读请求中包含的虚拟机id,确定对应的虚拟机(例如图2中的虚拟机操作系统1所对应的虚拟机),根据所述虚拟机以及读请求中包含的所述符号的虚拟地址,确定待访问的所述虚拟机内存区域,并对所述虚拟机内存区域执行读操作以获取元数据,此外,所述元数据以及执行结果(例如读取成功或失败)作为操作结果返回。
60.在步骤s330,在虚拟机监视器所属的虚拟化系统外部的设备上,基于操作结果进行语义信息重建。
61.具体地讲,在虚拟机监视器所属的虚拟化系统外部的设备上基于所述操作结果进行语义信息重建的步骤包括:通过使用虚拟机操作系统的符号表信息和源码对所述操作结果中包含的元数据进行解析;根据解析的元数据,重建虚拟操作系统的数据结构和高层语义信息。通过语义信息重建,可以获取虚拟机的运行状态,从而得到虚拟机操作系统运行时的快照。本发明通过在虚拟化系统外部的设备(例如pc端)上进行语义重建,能够较大程度减轻虚拟机监视器的负担,同理,减少了对整个系统带来的性能开销。
62.本发明通过以上操作,不需要在虚拟机操作系统中做任何修改或增加任何模块,完全消除了新增模块会对虚拟机操作系统带来的性能开销,并且通过只在虚拟机监视器中添加轻量模块(例如,vmi消息处理模块、数据探测模块),达到监视虚拟机的运行状态的效果。
63.在以上通过步骤s330进行语义信息重建以后,所述方法还可包括:接收通过虚拟机监视器访问虚拟机内存区域以进行数据写入的写请求,并且虚拟机监视器根据所述写请求访问虚拟机内存区域进行数据写操作,其中,所述写请求符合通过所述语义信息重建而获得的虚拟机操作系统的数据结构和高层语义信息。
64.具体地讲,与在步骤s310描述的关于读请求的内容类似,用户首先通过虚拟机操作系统的内核符号表信息获取与每个符号相应的虚拟地址,然后根据需求输入通过虚拟机
监视器访问虚拟机内存区域以进行数据写入的写请求,也就是说,写请求可以是从外部设备接收的。之后由语义信息重建模块将该写请求传送给vmi消息处理模块,该写请求除了包含虚拟机id、操作类型和符号的虚拟地址之外,还包含待写入的数据,其中,对于写请求,操作类型可以指示写操作类型。在获得来自语义信息重建模块的写请求以后,对该写请求进行解析来获得该写请求中包含上述信息。
65.所述数据写操作的步骤可包括:根据写请求中包含的虚拟机id,确定对应的虚拟机(例如图2中的虚拟机操作系统1所对应的虚拟机),根据所述虚拟机以及写请求中包含的所述符号的虚拟地址,确定待访问的所述虚拟机内存区域,并对上述虚拟机内存区域进行写操作以将写请求中包含的数据写入到该虚拟机内存区域。此外,对于写操作,还返回操作结果(例如写入成功或失败)。
66.在以上根据读请求/写请求执行读操作/写操作的过程中,在访问虚拟机内存区域时,例如可通过使用地址转换(at,address translation)指令将所述符号的虚拟地址转换为物理地址并根据该物理地址确定待访问的虚拟机内存区域,或者在不进行虚拟地址到物理地址的转换的情况下使用虚拟机主机扩展特性(vhe)直接进行虚拟机内存区域的访问。
67.此外,在语义信息重建以后,所述方法还可包括:接收在虚拟机监视器中调度虚拟机操作系统中的虚拟机程序的程序调度请求,并且虚拟机监视器根据所述程序调度请求调度所述虚拟机程序执行操作,其中,所述程序调度请求符合通过所述语义信息重建而获得的虚拟机操作系统的数据结构和高层语义信息,其中,程序调度请求可以是从外部设备接收的。
68.具体地讲,在接收到程序调度请求时,由图2中的os例程执行模块在虚拟机监视器中根据程序调度请求调度虚拟机操作系统中的虚拟机程序执行操作。调度虚拟机程序执行操作的步骤是在虚拟化系统的硬件支持vhe的情况下,在异常级别2中,在所述虚拟机监视器中执行的。具体地讲,调度虚拟机程序执行操作的步骤包括:根据程序调度请求中包含的虚拟机id确定对应的虚拟机,根据该虚拟机以及程序调度请求中包含的所述符号的虚拟地址确定虚拟机操作系统中的虚拟机程序,并在虚拟机监视器中调度虚拟机程序执行操作。
69.本发明可通过以上操作,在硬件支持vhe的虚拟化系统中,通过在虚拟机监视器侧调度指定的虚拟机程序,改变客户虚拟机函数执行的时机和顺序,达到提升系统运行效率的目的(如虚拟机操作系统启动阶段的初始化函数)。
70.此外,本发明可以应用在基于各种片上系统(soc)的type-1虚拟化系统中,并且可在虚拟机操作系统不感知的情况下,监视及改变其运行策略,达到提升系统性能的效果。此外,本发明还可以用于在虚拟机处于异常状态时收集虚拟机信息,利用收集的信息进行问题分析以提升系统的可维护性,例如,在基于各种片上系统(soc)的虚拟化系统(包含例如qnx操作系统、linux操作系统和android操作系统等)中,当linux的vm出现异常(例如某些高优先级的任务一直占用cpu,导致低优先级任务无法获得cpu调度)时,无法通过串口等方式登录到linux操作系统获取更多的信息进一步分析,但是使用以上描述的本发明的方法,可以通过vmi由虚拟机监视器获取linux的vm的全部任务(task)信息,从而获得一直占用cpu的task及其调用信息。
71.图4是示出根据本公开实施例的实现vmi的装置400的框图。
72.参照图4,装置400包括vmi消息处理模块410、数据探测模块420和语义信息重建模
块430。
73.vmi消息处理模块410可被配置为接收通过虚拟机监视器访问虚拟机内存区域以进行数据读取的读请求。
74.数据探测模块420可被配置为:在虚拟机监视器中根据读请求访问虚拟机内存区域进行数据读操作,并返回操作结果。
75.语义信息重建模块430可被配置为在虚拟机监视器所属的虚拟化系统外部的设备上,基于所述操作结果进行语义信息重建。具体地,语义信息重建模块430通过以下操作进行语义信息重建:通过使用虚拟机操作系统的符号表信息和源码对所述操作结果中包含的元数据进行解析;根据解析的元数据,重建虚拟机操作系统的数据结构和高层语义信息。
76.根据本公开的示例性实施例,vmi消息处理模块410还被配置为接收通过虚拟机监视器访问虚拟机内存区域以进行数据写入的写请求,并且,数据探测模块420还被配置为在虚拟机监视器中根据所述写请求访问虚拟机内存区域进行数据写操作。vmi消息处理模块还被配置为接收在虚拟机监视器中调度虚拟机操作系统中的虚拟机程序的程序调度请求,并且,装置400还包括:操作系统os例程执行模块440,被配置为在虚拟机监视器中根据所述程序调度请求调度所述虚拟机程序执行操作,所述写请求和所述程序调度请求符合通过所述语义信息重建而获得的虚拟机操作系统的数据结构和高层语义信息。其中,数据探测模块420和os例程执行模块440被包括在数据探测和例程执行模块中。
77.此外,图4中的vmi消息处理模块410、数据探测模块420、语义信息重建模块430和os例程执行模块440分别表示与以上图2中示出的vmi消息处理模块、数据探测模块、语义信息重建模块和os例程执行模块相同的模块。vmi消息处理模块410、数据探测模块420和os例程执行模块440被布置在虚拟机监视器中。语义信息重建模块430被布置在虚拟化系统外部的设备上,但是本发明不限于此,在对虚拟机监视器的性能影响不大的情况下,语义信息重建模块430同样可被布置在虚拟机监视器中。
78.由于在以上参照图2和图3描述的方法中,已经对vmi消息处理模块410、数据探测模块420、语义信息重建模块430和os例程执行模块440执行的具体操作所涉及的细节进行过描述,因此,这里不再赘述。关于以上提及的各单元所执行的操作中涉及的任何相关细节均可参见上文中提供的关于图2至图3的相应描述。
79.此外,需要说明的是,尽管以上在介绍装置400时将其划分为用于分别执行相应处理的单元,然而,本领域技术人员清楚的是,上述各单元执行的处理也可以在装置400不进行任何具体单元划分或者各单元之间并无明确划界的情况下执行。此外,装置400的单元划分方式也不限于图4的示例,例如,也可采用任何其他合理的划分方式。本公开对装置400的单元或模块划分方式并无任何限制,只要其能够执行图3所示的方法即可。此外,装置400还可包括其他单元,例如,存储单元等。
80.还应理解,各种单元可以被实现为一个或多个电子电路,并且上述各种单元中的一个或多个也可以实现为单个电子电路。
81.根据本公开实施例的实现vmi的装置,不需要在虚拟机操作系统中做任何修改或增加任何模块,完全消除了新增模块会对虚拟机操作系统带来的性能开销,并且通过只在虚拟机监视器中添加轻量模块(例如,vmi消息处理模块、数据探测和例程执行模块(即数据探测模块和os例程执行模块)),达到监视虚拟机的运行状态的效果。此外,还能够在虚拟机
监视器侧访问并修改虚拟机操作系统的指定运行参数(如通过写操作执行运行参数,进行任务调度机制),优化操作系统的运行策略。进一步地,在硬件支持vhe的虚拟化系统中,通过在虚拟机监视器侧调度指定的虚拟机程序,改变客户虚拟机函数执行的时机和顺序,达到提升系统运行效率的目的(如虚拟机操作系统启动阶段的初始化函数)。另外,根据本公开实施例的实现vmi的装置可通过设置在虚拟化系统外的pc端的语义信息重建模块进行语义重建,能够较大程度减轻虚拟机监视器的负担,同理,减少了对整个系统带来的性能开销。
82.图5是示出根据本公开实施例的电子设备500的框图。
83.参照图5,电子设备500可包括至少一个存储器510和至少一个处理器520,所述至少一个存储器510存储计算机可执行指令,计算机可执行指令在被至少一个处理器520执行时,促使至少一个处理器520执行根据本公开实施例的实现vmi的方法。
84.作为示例,电子设备500可以是pc计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置(例如,可连接到无线lan的任何电子装置)。这里,电子设备并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。
85.在电子设备中,处理器520可包括中央处理器(cpu)、图形处理器(gpu)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例,处理器还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
86.处理器520可运行存储在存储器510中的指令或代码,其中,存储器510还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
87.存储器510可与处理器520集成为一体,例如,将ram或闪存布置在集成电路微处理器等之内。此外,存储器901可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器510和处理器520可在操作上进行耦合,或者可例如通过i/o端口、网络连接等互相通信,使得处理器520能够读取存储在存储器510中的文件。
88.此外,电子设备还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备的所有组件可经由总线和/或网络而彼此连接。
89.根据本公开的实施例,还可提供一种存储指令的计算机可读存储介质,其中,当所述指令由至少一个处理器执行时,促使所述至少一个处理器执行根据本公开实施例的实现vmi的方法。这里的计算机可读存储介质的示例包括:只读存储器(rom)、随机存取可编程只读存储器(prom)、电可擦除可编程只读存储器(eeprom)、随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、闪存、非易失性存储器、cd-rom、cd-r、cd+r、cd-rw、cd+rw、dvd-rom、dvd-r、dvd+r、dvd-rw、dvd+rw、dvd-ram、bd-rom、bd-r、bd-r lth、bd-re、蓝光或光盘存储器、硬盘驱动器(hdd)、固态硬盘(ssd)、卡式存储器(诸如,多媒体卡、安全数字(sd)卡或极速数字(xd)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算
机程序。上述计算机可读存储介质中的指令或计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
90.本领域技术人员将理解,在不脱离本公开的范围的情况下,可以根据已经描述的内容修改公开的实施例。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理。
技术特征:
1.一种实现虚拟机自省vmi的方法,包括:接收通过虚拟机监视器访问虚拟机内存区域以进行数据读取的读请求;虚拟机监视器根据所述读请求访问虚拟机内存区域进行数据读操作,并返回操作结果;在虚拟机监视器所属的虚拟化系统外部的设备上,基于所述操作结果进行语义信息重建。2.如权利要求1所述的方法,其中,在虚拟机监视器所属的虚拟化系统外部的设备上基于所述操作结果进行语义信息重建的步骤包括:通过使用虚拟机操作系统的符号表信息和源码对所述操作结果中包含的元数据进行解析;根据解析的元数据,重建虚拟机操作系统的数据结构和高层语义信息。3.如权利要求1或2所述的方法,其中,在所述语音信息重建以后,所述方法还包括:接收通过虚拟机监视器访问虚拟机内存区域以进行数据写入的写请求,并且虚拟机监视器根据所述写请求访问虚拟机内存区域进行数据写操作;和/或接收在虚拟机监视器中调度虚拟机操作系统中的虚拟机程序的程序调度请求,并且虚拟机监视器根据所述程序调度请求调度所述虚拟机程序执行操作,其中,所述写请求和所述程序调度请求符合通过所述语义信息重建而获得的虚拟机操作系统的数据结构和高层语义信息。4.如权利要求3所述的方法,其中,所述读请求、所述写请求和所述程序调度请求中的每一个请求是从所述设备接收的,并且至少包括虚拟机id、操作类型和符号的虚拟地址,其中,所述符号是函数名或变量名。5.如权利要求4所述的方法,其中,所述数据读操作/数据写操作的步骤包括:根据读请求/写请求中包含的虚拟机id,确定对应的虚拟机;根据所述虚拟机以及读请求/写请求中包含的所述符号的虚拟地址,确定待访问的所述虚拟机内存区域;对所述虚拟机内存区域进行读操作/写操作。6.如权利要求3所述的方法,其中,所述调度所述虚拟机程序执行操作的步骤是在虚拟化系统的硬件支持虚拟化主机扩展特性的情况下,在异常级别2中,在所述虚拟机监视器中执行的。7.如权利要求4所述的方法,其中,所述调度所述虚拟机程序执行操作的步骤包括:根据所述程序调度请求中包含的虚拟机id,确定对应的虚拟机;根据所述虚拟机以及所述程序调度请求中包含的所述符号的虚拟地址,确定所述虚拟机操作系统中的所述虚拟机程序;在所述虚拟机监视器中调度所述虚拟机程序执行操作。8.一种实现虚拟机自省vmi的装置,包括:vmi消息处理模块,被配置为接收通过虚拟机监视器访问虚拟机内存区域以进行数据读取的读请求;数据探测模块,被配置为:在虚拟机监视器中根据所述读请求访问虚拟机内存区域进行数据读操作,并返回操作结果;
语义信息重建模块,被配置为:在虚拟机监视器所属的虚拟化系统外部的设备上,基于所述操作结果进行语义信息重建。9.一种电子设备,包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1到7中的任一权利要求所述的方法。10.一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1到7中的任一权利要求所述的方法。
技术总结
本公开关于一种实现虚拟机自省的方法和装置、电子设备及存储介质,所述方法包括:接收通过虚拟机监视器访问虚拟机内存区域以进行数据读取的读请求;虚拟机监视器根据所述读请求访问虚拟机内存区域进行数据读操作,并返回操作结果;在虚拟机监视器所属的虚拟化系统外部的设备上,基于所述操作结果进行语义信息重建。建。建。
技术研发人员:赵民栋 寇栋 赵天杰
受保护的技术使用者:三星电子株式会社
技术研发日:2023.03.30
技术公布日:2023/7/12
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/