一种虚拟化运行环境下的异常处理方法、装置及系统与流程

文档序号:13136458阅读:216来源:国知局
一种虚拟化运行环境下的异常处理方法、装置及系统与流程

本申请涉及工业互联网操作系统技术领域,尤其涉及一种虚拟化运行环境下的异常处理方法、装置及系统。



背景技术:

虚拟化技术是将物理机的硬件资源,如服务器和内存等,进行抽象后供用户使用,其核心是先在物理机上构建虚拟机管理器(virtualmachinemonitor,vmm),再在vmm上创建多个虚拟机(virtualmachine,vm),这样,原本只能在物理机上运行一个客户操作系统(guestoperatingsystem,guestos),虚拟化后可以在多个vm里并行运行,因此能够最大化地利用物理机的硬件资源。

现有技术中,vmm对guestos的运行过程进行监测,并且将监测到的guestos在运行过程中所产生的异常投递给guestos内部部署的异常处理模块进行处理,其中,异常处理模块处理的异常如除零操作产生的异常、缺页异常、非法指令异常等,这些异常都是由guestos中的软件设计错误产生的。对于为guestos提供虚拟化运行环境的vm,保证vm中内核代码的安全性是guestos和异常处理模块能够正常工作的前提。目前,vm中内核代码的安全性只是简单地由vm上运行的操作系统,如windows,进行安全防护,正常情况下,guestos无法访问到vm中的重要内核代码,一旦操作系统的安全防护被突破,vm中的重要内核代码很容易就会被恶意篡改,这会导致guestos无法正常运行、严重时可能使guestos发生瘫痪,而guestos已位于虚拟化技术中的用户应用层面,保证guestos能够稳健运行对于客户和提供guestos的商家来说都十分重要。

可见,现有技术中运行在虚拟化环境下的guestos存在着稳健性较差的问题。



技术实现要素:

本申请实施例提供一种虚拟化运行环境下的异常处理方法、装置及系统,用以解决现有技术中运行在虚拟化环境下的guestos存在着稳健性较差的问题。

本申请实施例提供的一种虚拟化运行环境下的异常处理方法,包括:

监测在虚拟机上运行的客户操作系统guestos产生的异常;

若根据获取的所述异常的上下文信息,确定所述异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,则拒绝guestos对所述内核代码的越限操作。

可选地,根据以下步骤确定所述异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的:

获取所述异常的上下文信息中的内存页面错误地址;

若所述内存页面错误地址包含在预先保存的操作权限受限的内核代码对应的地址段中、且guestos对该地址段中的内核代码具有访问权限,则确定所述异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的。

可选地,拒绝guestos对所述内核代码的越限操作,包括:

判断是否存在用户自定义的异常处理函数;

若存在,则调用所述异常处理函数对所述越限操作进行处理;

否则,拒绝产生所述异常时guestos执行的操作指令;所述操作指令是从所述异常的上下文信息中获取的。

可选地,所述方法还包括:

监测并处理在调用所述异常处理函数对所述越限操作进行处理的过程中产生的二次异常。

本申请实施例提供的一种虚拟化运行环境下的异常处理装置,包括:

监测模块,用于监测在虚拟机上运行的客户操作系统guestos产生的异常;

处理模块,用于若根据获取的所述异常的上下文信息,确定所述异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,则拒绝guestos对所述内核代码的越限操作。

监测模块,用于监测在虚拟机上运行的客户操作系统guestos产生的异常;

处理模块,用于若根据获取的所述异常的上下文信息,确定所述异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,则拒绝guestos对所述内核代码的越限操作。

可选地,所述处理模块具体用于:

根据以下步骤确定所述异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的:

获取所述异常的上下文信息中的内存页面错误地址;

若所述内存页面错误地址包含在预先保存的操作权限受限的内核代码对应的地址段中、且guestos对该地址段中的内核代码具有访问权限,则确定所述异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的。

可选地,所述处理模块具体用于:

判断是否存在用户自定义的异常处理函数;

若存在,则调用所述异常处理函数对所述越限操作进行处理;

否则,拒绝产生所述异常时guestos执行的操作指令;所述操作指令是从所述异常的上下文信息中获取的。

可选地,所述监测模块,还用于监测在调用所述异常处理函数对所述越限操作进行处理的过程中产生的二次异常;

所述处理模块,还用于对所述二次异常进行处理。

本申请实施例提供的一种虚拟化运行环境下的异常处理系统,包括:虚拟机管理器、至少一个第一虚拟机、以及一个用于对所述至少一个第一虚拟机进行安全防护的第二虚拟机,其中:

所述虚拟机管理器,用于对每个第一虚拟机,监测在该第一虚拟机上运行的客户操作系统guestos产生的异常;将获取的所述异常的上下文信息发送给所述第二虚拟机;

所述第二虚拟机,用于接收所述异常的上下文信息;若根据所述异常的上下文信息,确定所述异常是由guestos对该第一虚拟机中操作权限受限的内核代码的越限操作产生的,则拒绝guestos对所述内核代码的越限操作。

可选地,所述第二虚拟机具体用于:

获取所述异常的上下文信息中的内存页面错误地址;

若所述内存页面错误地址包含在预先保存的操作权限受限的内核代码对应的地址段中、且guestos对该地址段中的内核代码具有访问权限,则确定所述异常是由guestos对第一虚拟机中操作权限受限的内核代码的越限操作产生的。

可选地,所述第二虚拟机具体用于:

判断是否存在用户自定义的异常处理函数;

若存在,则调用所述异常处理函数对所述越限操作进行处理;

否则,拒绝产生所述异常时guestos执行的操作指令;所述操作指令是从所述异常的上下文信息中获取的。

可选地,所述虚拟机管理器还用于:

监测并处理在调用所述异常处理函数对所述越限操作进行处理的过程中产生的二次异常。

本申请实施例提供的一种电子设备,包括至少一个处理单元、以及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行上述虚拟化运行环境下的异常处理方法的步骤。

本申请实施例提供的一种计算机可读存储介质,包括程序代码,当所述程序产品在计算设备上运行时,所述程序代码用于使所述电子设备执行上述虚拟化运行环境下的异常处理方法的步骤。

本申请实施例中,监测在虚拟机上运行的guestos产生的异常,若根据获取的异常的上下文信息,确定该异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,则拒绝guestos对内核代码的越限操作。对于虚拟机中的重要内核代码,相比于现有技术中只是采用vm上运行的操作系统进行安全防护,本申请实施例中还可以增加guestos对重要内核代码的操作权限,相当于对虚拟机中的内核代码多增加一层安全防护,而对内核代码的安全防护能够有效提高虚拟机运行环境的安全性,因此可以增强运行在虚拟机中的guestos的健壮性。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本申请实施例提供的虚拟化运行环境下的异常处理方法流程图;

图2为本申请实施例提供的虚拟化运行环境下的异常处理系统示意图;

图3为本申请实施例提供的又一虚拟化运行环境下的异常处理系统示意图;

图4为本申请实施例提供的健康管理子系统对异常进行处理的流程图;

图5为本申请实施例提供的虚拟化运行环境下的异常处理装置结构图;

图6为本申请实施例提供的虚拟化运行环境下的异常处理装置的硬件结构示意图。

具体实施方式

本申请实施例中,监测在虚拟机上运行的guestos产生的异常,若根据获取的异常的上下文信息,确定该异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,则拒绝guestos对内核代码的越限操作。对于虚拟机中的重要内核代码,相比于现有技术中只是采用vm上运行的操作系统进行安全防护,本申请实施例中还可以增加guestos对重要内核代码的操作权限,相当于对虚拟机中的内核代码多增加一层安全防护,而对内核代码的安全防护能够有效提高虚拟机运行环境的安全性,因此可以增强运行在虚拟机中的guestos的健壮性。

以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。

实施例一

如图1所示,为本申请实施例提供的虚拟化运行环境下的异常处理方法流程图,包括以下步骤:

s101:监测在虚拟机上运行的客户操作系统guestos产生的异常。

其中,guestos产生的异常即包括guestos中软件设计错误产生的异常,也包括非法程序对运行guestos的虚拟机中内核代码的篡改等操作产生的异常。

s102:若根据获取的异常的上下文信息,确定异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,则拒绝guestos对内核代码的越限操作。

可选地,在检测到异常以后,可以获取异常的上下文信息,该上下文信息中包含有产生异常时的操作指令、操作指令的地址、内存页面错误地址、任务栈中的指针信息等。

实际应用中,因为vm上运行的操作系统对内核代码已经起到了一定的安全防护作用,因此正常情况下,guestos是无法访问到vm中的重要内核代码的,如果guestos对vm中的重要内核代码进行了越限操作,说明当前vm的操作系统已经无法保证内核代码的安全性,vm的运行环境可能已经存在安全隐患了,本申请正是为了解决这样的安全隐患。

具体地,可以获取异常的上下文信息中的内存页面错误地址,根据操作系统对内存中地址段的划分规则,确定内存页面错误地址在内存中所属的地址段,若该地址段为预先保存的操作权限受限的内核代码在内存中对应的某一地址段、且guestos对该地址段中的内核代码具有访问权限,则确定vm的运行环境存在安全隐患,异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的。

其中,若guestos对该地址段中的内核代码具有访问权限,则说明该异常不应该在guestos中出现,而现在出现的异常只能是由于程序设计者预先对内核代码设置了访问权限而产生的,因此可以确定该异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的。

进一步地,确定guestos对内核代码的操作为越限操作之后,可以判断系统中对于该异常是否存在用户自定义的异常处理函数,若存在,则可以调用用户自定义的异常处理函数对产生该异常的越限操作进行处理;否则,可以拒绝产生该异常时guestos执行的操作指令;其中,操作指令是从异常的上下文信息中获取的。

比如,系统中对于某异常存在用户自定义的异常处理函数,该异常处理函数除了不响应产生异常时guestos执行的操作指令,还会将用户当前访问的页面跳转到指定页面,而不是直接给用户报错、用户体验较好;如果系统中对于该异常不存在用户自定义的异常处理函数,则可以直接拒绝产生该异常时guestos执行的操作指令。

此外,在上述过程中,还可以监测并处理在调用用户自定义的异常处理函数对越限操作进行处理的过程中产生的二次异常。

比如,在调用用户自定义的异常处理函数对越限操作进行处理的过程中又产生栈溢出异常,此时,可以将处理越限操作的任务挂起,或者将处理越限操作的任务进行重启以解决栈溢出异常。

在具体实施过程中,若根据获取的异常的上下文信息,确定异常不是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,则可以由guestos中的异常处理模块对异常进行处理。

本申请实施例中,监测在虚拟机上运行的guestos产生的异常,若根据获取的异常的上下文信息,确定该异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,则拒绝guestos对内核代码的越限操作。对于虚拟机中的重要内核代码,相比于现有技术中只是采用vm上运行的操作系统进行安全防护,本申请实施例中还可以增加guestos对重要内核代码的操作权限,相当于对虚拟机中的内核代码多增加一层安全防护,而对内核代码的安全防护能够有效提高虚拟机运行环境的安全性,因此可以增强运行在虚拟机中的guestos的健壮性。

实施例二

如图2所示,为本申请实施例提供的虚拟化运行环境下的异常处理系统200示意图,包括:硬件、虚拟机管理器201、至少一个第一虚拟机202、以及一个用于对所述至少一个第一虚拟机进行安全防护的第二虚拟机203,其中:

虚拟机管理器201,用于对每个第一虚拟机202,监测在该第一虚拟机上运行的客户操作系统guestos产生的异常,获取该异常的上下文信息,然后将异常的上下文信息发送给第二虚拟机;

所述第二虚拟机203,用于接收虚拟机管理器发送的异常的上下文信息;若根据异常的上下文信息,确定异常是由guestos对该第一虚拟机中操作权限受限的内核代码的越限操作产生的,则拒绝guestos对内核代码的越限操作。

在具体实施过程中,第二虚拟机具体用于:获取异常的上下文信息中的内存页面错误地址,若内存页面错误地址包含在预先保存的操作权限受限的内核代码对应的地址段中、且guestos对该地址段中的内核代码具有访问权限,则确定异常是由guestos对第一虚拟机中操作权限受限的内核代码的越限操作产生的。

进一步地,第二虚拟机判断是否存在用户自定义的异常处理函数,若存在,则调用异常处理函数对越限操作进行处理;否则,拒绝产生异常时guestos执行的操作指令;所述操作指令是从异常的上下文信息中获取的。

此外,虚拟机管理器还用于:监测并处理在调用异常处理函数对越限操作进行处理的过程中产生的二次异常。

本申请实施例中,虚拟机管理器对每个第一虚拟机,监测在该第一虚拟机上运行的客户操作系统guestos产生的异常,将获取的该异常的上下文信息发送给第二虚拟机;第二虚拟机接收异常的上下文信息之后,若根据异常的上下文信息,确定异常是由guestos对该第一虚拟机中操作权限受限的内核代码的越限操作产生的,则拒绝guestos对内核代码的越限操作。对于第一虚拟机中的重要内核代码,相比于现有技术中只是采用vm上运行的操作系统进行安全防护,本申请实施例中还增加用于对每个第一虚拟机进行安全防护的第二虚拟机,该第二虚拟机可以控制guestos对第一虚拟机中重要内核代码的操作权限,相当于对第一虚拟机中的内核代码多增加了一层安全防护,而对内核代码的安全防护能够有效提高第一虚拟机运行环境的安全性,因此可以增强运行在第一虚拟机中的guestos的健壮性。

实施例三

如图3所示,为本申请实施例提供的虚拟化运行环境下的异常处理系统300示意图,其中,vmm对底层的硬件进行虚拟化后形成多个vm,vmm中包含核心健康管理模块和域间通信管理模块,核心健康管理模块负责第一时间搜集异常的上下文信息并且兼具处理特定异常(健康管理子系统产生的异常)的能力,域间通信管理模块负责多个vm之间的通信;多个vm中一个为健康监控虚拟机,其它的为客户系统虚拟机,健康监控虚拟机中运行有健康管理子系统,客户系统虚拟机中运行有guestos,guestos内又包含有异常处理模块,异常处理模块对guestos在运行过程中由于软件设计错误而产生的异常进行处理,如除零异常、非法指令异常”等。

在具体实施过程中,每一个客户系统虚拟机为guestos提供虚拟化运行环境,客户系统虚拟机上的操作系统对虚拟机中的重要内核代码进行安全防护,为guestos提供安全保障,但对于任意一个客户系统虚拟机来说,如果虚拟机运行环境得不到安全保障,将难以保障guestos的正常运行,为此,本申请在健康监控虚拟机中增加了健康管理子系统,健康管理子系统可以设置在客户系统虚拟机与vmm之间,为各客户系统虚拟机提供另外一层安全保障,对于guestos产生的异常都可以由健康管理子系统进行分析,如果健康管理子系统确定异常是由于guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,则可以拒绝guestos对内核代码的越限操作,从而保证虚拟机中内核代码的安全性,保证guestos的稳健性。

具体地,如图3中的箭头指向所示,guestos中产生的异常首先由cpu获取到,cpu再将异常发送给vmm中的核心健康管理模块,核心健康管理模块获取异常的上下文信息,若核心健康管理模块根据异常上下文信息确定该异常是由健康管理子系统产生的,则可以对健康管理子系统产生的异常进行处理,比如,对于健康管理子系统对越限操作进行处理的过程中产生的栈溢出异常,核心健康管理模块可以将健康管理子系统中处理越限操作的任务挂起,或者将健康管理子系统中处理越限操作的任务进行重启。若核心健康管理模块根据异常上下文信息确定该异常不是由健康管理子系统产生的,则可以将异常的上下文信息发送给健康管理子系统,进一步地,健康管理子系统获取异常上下文信息中的内存页面错误地址,若内存页面错误地址包含在预先保存的操作权限受限的内核代码对应的地址段中、且guestos对该地址段中的内核代码具有访问权限,则确定该异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,这说明guestos的运行环境存在安全隐患,此时可以拒绝guestos对内核代码的越限操作。

可选地,在拒绝guestos对内核代码的越限操作时,健康管理子系统可以判断是否存在用户自定义的异常处理函数,若存在,则可以调用用户自定义的异常处理函数对越限操作进行处理;否则,拒绝产生该异常时guestos执行的操作指令。

此外,在具体实施过程中,若健康管理子系统确定异常不是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,则可以通过vmm中的域间通信管理模块将异常的上下文信息发送给产生异常的guestos,由guestos中的异常处理模块对异常进行处理。

在具体实施过程中,健康管理子系统可以按照图4所示的流程对异常进行处理:

s401:接收核心健康管理模块发送的异常上下文信息。

其中,异常上下文信息是由vmm中的核心健康管理模块在接收到cpu发送的异常之后第一时间搜集的,异常上下文信息中包含有产生异常时的操作指令、操作指令的地址、内存页面错误地址、任务栈中的指针信息等。

s402:判断接收到的异常是否是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,若是,则进入s404;否则,进入s403。

在具体实施过程中,健康管理子系统可以获取异常的上下文信息中的内存页面错误地址,根据操作系统对地址段的划分规则,确定内存页面错误地址所属的地址段,若该地址段为预先保存的操作权限受限的内核代码对应的某一地址段,而guestos对该地址段中的内核代码却具有访问权限,则说明该异常不应该在guestos中出现,而是由于程序设计者预先对内核代码设置了访问权限而产生的,因此可以确定该异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的。

s403:投递异常上下文信息到guestos中的异常处理模块。

其中,可以通过vmm中的域间通信管理模块,将异常的上下文信息投递给guestos中的异常处理模块。

s404:判断是否存在用户自定义的异常处理函数,若是,则进入s405;否则,进入s406。

s405:调用用户自定义的异常处理函数对异常进行处理。

比如,对于某异常系统中存在用户自定义的异常处理函数,该异常处理函数除了不响应产生异常时guestos执行的操作指令,还会将用户当前访问的页面跳转到指定页面,不直接向用户保证、用户体验更好。

s406:拒绝产生异常时guestos对虚拟机执行的操作。

此外,在上述过程中,核心健康管理模块还可以监测并处理健康管理子系统在调用用户自定义的异常处理函数对越限操作进行处理的过程中产生的二次异常,比如,健康管理子系统在调用用户自定义的异常处理函数对越限操作进行处理的过程中又产生栈溢出异常,此时,核心健康管理模块可以将健康管理子系统中处理越限操作的任务挂起,或者将健康管理子系统中处理越限操作的任务进行重启,以保证健康管理子系统能够正常运行。

实施例四

基于同一发明构思,本申请实施例中还提供了一种与虚拟化运行环境下的异常处理方法对应的虚拟化运行环境下的异常处理装置,由于该装置解决问题的原理与本申请实施例虚拟化运行环境下的异常处理方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。

如图5所示,为本申请实施例提供的虚拟化运行环境下的异常处理装置结构图,包括:

监测模块501,用于监测在虚拟机上运行的客户操作系统guestos产生的异常;

处理模块502,用于若根据获取的所述异常的上下文信息,确定所述异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的,则拒绝guestos对所述内核代码的越限操作。

可选地,处理模块502具体用于:

根据以下步骤确定所述异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的:

获取所述异常的上下文信息中的内存页面错误地址;

若所述内存页面错误地址包含在预先保存的操作权限受限的内核代码对应的地址段中、且guestos对该地址段中的内核代码具有访问权限,则确定所述异常是由guestos对虚拟机中操作权限受限的内核代码的越限操作产生的。

可选地,处理模块502具体用于:

判断是否存在用户自定义的异常处理函数;

若存在,则调用所述异常处理函数对所述越限操作进行处理;

否则,拒绝产生所述异常时guestos执行的操作指令;所述操作指令是从所述异常的上下文信息中获取的。

可选地,监测模块501,还用于监测在调用所述异常处理函数对所述越限操作进行处理的过程中产生的二次异常;

处理模块502,还用于对所述二次异常进行处理。

实施例五

如图6所示,为本申请实施例提供的虚拟化运行环境下的异常处理装置的硬件结构示意图,包括至少一个处理单元601、以及至少一个存储单元602,其中,存储单元存储有程序代码,当程序代码被所述处理单元执行时,使得处理单元执行上述虚拟化运行环境下的异常处理方法的步骤。

实施例六

本申请实施例提供的一种计算机可读存储介质,包括程序代码,当程序产品在计算设备上运行时,程序代码用于使电子设备执行上述虚拟化运行环境下的异常处理方法的步骤。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1