虚拟化系统中关闭中断的方法和装置的制作方法

文档序号:6371867阅读:138来源:国知局
专利名称:虚拟化系统中关闭中断的方法和装置的制作方法
技术领域
本发明涉及计算机领域,尤其涉及虚拟化系统中关闭中断的方法和装置。
背景技术
为了防止重要的系统程序代码执行时不被打断或者为了保证数据一致性,操作系统(Operating System, OS)需要执行关闭中断的操作。在非虚拟化的环境下,OS可直接关物理硬件中断。然而,一旦部署了实时嵌入式虚拟化构件即Hypervisor,中断的分发便由Hypervisor统一管理,OS并不能直接去关闭物理硬件中断。例如,在虚拟化系统,多个客户操作系统(Guest OS)会运行在单个物理中央处理器(Central Processing Unit,CPU)上,单个Guest OS执行关闭中断时不能影响同一个物理CPU上其他Guest OS的运行,这就需要由Hypervisor统一协调处理关闭中断这一操作。在部署了 Hypervisor的虚拟化系统中,现有技术提供的一种关闭中断方法是Hypervisor和Guest OS独立编译、链接映像,通过引导程序(BootLoader)将Hypervisor和Guest OS的映像加载到内存,BootLoader启动Hypervisor, Hypervisor再分别启动各个Guest OS。由于在虚拟化系统中,中断是由Hypervisor统一分发,因此,需要Hypervisor提供中断通知(Hyper Call)的通讯方式,即,Guest OS通过Hyper Call向Hypervisor发送关闭中断的请求。Hypervisor收到关闭中断的请求后,再设置禁止向相关Guest OS内核分发中断,即关闭中断。Hyper Call—般应用在不共享一个代码段的跨映像接口调用的场景(例如,XEN提供的跨映像接口调用)以及不同特权级模式之间的接口调用的场景(例如,Linux提供的syscall调用)等,目前,在上述应用场景下,Hyper Call存在多种实现方式,例如,通过消息通讯、通过中断通讯或通过实现跨模式间的接口调用功能等。由于Hyper Call的实现方式一般都涉及对内存和队列等通用通讯机制的应用,因此,如果Guest OS需要频繁地执行打开或关闭中断这一操作,则上述现有技术提供的关闭中断方法使得系统运行效率较低。

发明内容
本发明实施例提供虚拟化系统中关闭中断的方法和装置,以更好地支持Guest OS开/关中断,同时降低对系统运行效率的影响。本发明实施例提供一种虚拟化系统中关闭中断的方法,所述方法包括向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口将共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志,所述共享内存为实时嵌入式虚拟化构件Hypervisor与至少一个Guest OS共享并用于记录中断标志的物理内存,所述共享内存中不同的Guest OS与所述Hypervisor共享的内存空间互相隔离;检查所述中断标志位寄存器;若所述中断标志位寄存器表明所述Guest OS需要关闭中断,则禁止向所述Guest OS发送虚拟中断。
本发明实施例提供一种虚拟化系统中关闭中断的装置,所述装置包括接口提供模块,用于向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口将共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志,所述共享内存为实时嵌入式虚拟化构件Hypervisor与至少一个Guest OS共享并用于记录中断标志的物理内存,所述共享内存中不同的Guest OS与所述Hypervisor共享的内存空间互相隔离;标志位检查模块,用于检查所述中断标志位寄存器;中断截止发送模块,用于若所述标志位检查模块检查所述中断标志位寄存器表明所述Guest OS需要关闭中断,则禁止向所述Guest OS发送虚拟中断。从上述本发明实施例可知,由于实时嵌入式虚拟化构件Hypervisor向虚拟化操作系统Guest OS提供接口,所述Guest OS可以将Hypervisor与至少一个Guest OS共享并用于记录中断标志的物理内存即共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志。与现有技术通过提供中断通知的通讯方式关闭中断的方法相比,本发明实施 例提供的方法不依赖Hypervisor与Guest OS共同编译,Hypervisor不需与Guest OS共享代码段;由于虚拟化层与Guest OS映像分离,对共享内存的访问通过虚拟地址进行,因此,在关闭/打开中断时速度快,系统运行效率高。


为了更清楚地说明本发明实施例的技术方案,下面将对现有技术或实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,还可以如这些附图获得其他的附图。图I是本发明实施例提供的虚拟化系统中关闭中断的方法流程示意图;图2是本发明实施例提供的单个物理CPU上运行多个Guest OS和单个Guest OS运行于多个物理CPU上的场景示意图;图3是本发明实施例提供的虚拟化系统中关闭中断的装置结构示意图;图4是本发明另一实施例提供的虚拟化系统中关闭中断的装置结构示意图;图5是本发明另一实施例提供的虚拟化系统中关闭中断的装置结构示意图;图6a是本发明另一实施例提供的虚拟化系统中关闭中断的装置结构示意图;图6b是本发明另一实施例提供的虚拟化系统中关闭中断的装置结构示意图;图7是本发明另一实施例提供的虚拟化系统中关闭中断的装置结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员所获得的所有其他实施例,都属于本发明保护的范围。请参阅附图1,是本发明实施例提供的虚拟化系统中关闭中断的方法流程示意图,主要包括步骤S101、步骤S102和步骤S103 S101,向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口将共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志,所述共享内存为实时嵌入式虚拟化构件Hypervisor与至少一个Guest OS共享并用于记录中断标志的物理内存。
在本发明实施例中,Guest OS是一种虚拟化操作系统,这类操作系统与一般操作系统不同之处在于,不是单个物理CPU上只运行一个这样的虚拟化操作系统或者一个这样的虚拟化操作系统只运行在单个物理CPU上,即不是直接运行于硬件层(Hardware)之上,而是运行于硬件层之上的实时嵌入式虚拟化构件Hypervisor,如附图2所示,是单个物理CPU上运行多个Guest OS和单个Guest OS运行于多个物理CPU上的场景示意图。例如,Guest OS0 和 Guest OS1 通过 Hypervisor 运行于物理 CPU。(Core。)上,而 Guest OSn 通过Hypervisor 运行于物理 CPU1 (Core1)、物理 CPU2 (Core2)和物理 CPUn (Coren)上。与现有技术通过中断通知(Hyper Cal I)的通讯方式关闭中断不同,在本发明实施例中,实时嵌入式虚拟化构件Hypervisor提供一层中间地址,这种中间地址以影子页表来管理;由Guest OS建立Guest OS至中间地址的映射以及Hypervisor建立中间地址至物理内存地址的映射,这里将Guest OS至中间地址的映射称为第一层地址映射,将中间地址至物理内存地址的映射称为第二层地址映射。第一层地址映射的作用在于实时嵌入式虚拟化构件Hypervisor可以感知实时嵌入式虚拟化构件Hypervisor之上所有Guest OS对物理内存的需求并统一管理,第二层地址映射的作用在于实时嵌入式虚拟化构件Hypervisor可以根据Guest OS对物理内存的需求,有规划性地划分物理内存资源。建立了第一层地址映射和第二层地址映射之后,可以建立实时嵌入式虚拟化构件Hypervisor与至少一个Guest OS共享并用于记录中断标志的物理内存。在以下的说明中,为了描述的方便,将实时嵌入式虚拟化构件Hypervisor与至少一个Guest OS共享并用于记录中断标志的物理内存简称为“共享内存”,显然,共享内存是物理内存的一部分。如附图3所示,是本发明实施例提供的方法中在物理内存建立了共享内存的示意图。共享内存可以被Hypervisor以及至少一个Guest OS共同访问,并且,所述共享内存中不同的Guest OS与所述Hypervisor共享的内存空间互相隔离,即共享内存中任意一个Guest OS与Hypervisor共享的内存空间和另一个Guest OS与Hypervisor共享的内存空间是互相隔离的。例如,在附图3中,Guest OStl与Hypervisor共享并用于记录中断标志的物理内存即共享内存中的“VMd中断标志位空间”、Guest OS1与Hypervisor共享并用于记录中断标志的物理内存即共享内存中的“VMi中断标志位空间”以及Guest OS2与Hypervisor共享并用于记录中断标志的物理内存即共享内存中的“ VM2中断标志位空间”是互相隔离的。作为本发明一个实施例,向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口将共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志可以是实时嵌入式虚拟化构件Hypervisor向Guest OS提供接口以使所述Guest OS调用所述接口,根据所述接口提供的中间地址信息,通过第一层地址映射访问中间地址,根据所述中间地址并通过第二层地址映射访问所述共享内存,将与所述Guest OS对应的中断标志位寄存器设置中断标志,例如,使用逻辑“0”表示关闭中断,使用逻辑“I”表示打开中断。需要说明的是,由于实时嵌入式虚拟化构件Hypervisor建立了第一层地址映射和第二层地址映射,因此,Guest OS在设置中断标志时,虽然是通过前述第一层地址映射和实时嵌入式虚拟化构件Hypervisor提供的接口访问中间地址,然后,通过第二层地址映射最终访问到共享内存,但在系统运行过程中,对Guest OS而言,与直接访问共享内存并没有不同,即GuestOS认为是直接访问共享内存,将与该Guest OS对应的中断标志位寄存器设置中断标志。S102,检查所述中断标志位寄存器。作为本发明一个实施例,检查所述中断标志位寄存器时,可以是执行异常向量指定的异常处理函数以检查所述中断标志位寄存器。具体地,硬件产生的物理中断,例如,通用物理中断或快速物理中断等首先通过GIC路由到物理核,物理核上运行Hypervisor程序,然后进入到Hypervisor的异常向量表,并跳转到Hypervisor的异常向量指定的异常处理函数,在Hypervisor的中断处理过程中检查中断标志位寄存器的内容。
在上述检查中断标志位寄存器的实施例中,可以是按照实时嵌入式虚拟化构件Hypervisor提供的时钟,周期性地轮询所述中断标志位寄存器,即主动检查所述中断标志位寄存器,也可以是在硬件产生的物理中断的触发下,检查所述中断标志位寄存器,即被动检查所述中断标志位寄存器。S103,若所述中断标志位寄存器表明所述Guest OS需要关闭中断,则禁止向所述Guest OS发送虚拟中断。例如,若使用逻辑“0”表示关闭中断,使用逻辑“I”表示打开中断,则检查到中断标志位寄存器的内容为逻辑“0”,则禁止向所述Guest OS发送硬件产生的物理中断。从上述本发明实施例提供的虚拟化系统中关闭中断的方法可知,由于实时嵌入式虚拟化构件Hypervisor向虚拟化操作系统Guest OS提供接口,所述Guest OS可以将Hypervisor与至少一个Guest OS共享并用于记录中断标志的物理内存即共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志。与现有技术通过提供中断通知的通讯方式关闭中断的方法相比,本发明实施例提供的方法不依赖Hypervisor与Guest OS共同编译,Hypervisor不需与Guest OS共享代码段;由于虚拟化层与Guest OS映像分离,对共享内存的访问通过虚拟地址进行,因此,在关闭/打开中断时速度快,系统运行效率高。请参阅附图4,是本发明实施例提供的虚拟化系统中关闭中断的装置结构示意图。为了便于说明,仅仅示出了与本发明实施例相关的部分。附图4示例的虚拟化系统中关闭中断的装置包括接口提供模块401、标志位检查模块402和中断截止发送模块403,其中接口提供模块401,用于向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口将共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志,所述共享内存为实时嵌入式虚拟化构件Hypervisor与至少一个Guest OS共享并用于记录中断标志的物理内存,其中,所述共享内存中不同的Guest OS与所述Hypervisor共享的内存空间互相隔离。标志位检查模块402,用检查所述中断标志位寄存器。中断截止发送模块403,用于若所述标志位检查模块402检查所述中断标志位寄存器表明所述Guest OS需要关闭中断,则禁止向所述Guest OS发送虚拟中断。需要说明的是,以上虚拟化系统中关闭中断的装置的实施方式中,各功能模块的划分仅是举例说明,实际应用中可以根据需要,例如相应硬件的配置要求或者软件的实现的便利考虑,而将上述功能分配由不同的功能模块完成,即将所述电缆调制解调器上线装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。而且,实际应用中,本实施例中的相应的功能模块可以是由相应的硬件实现,也可以由相应的硬件执行相应的软件完成,例如,前述的接口提供模块,可以是具有执行前述向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口将共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志的硬件,例如接口提供器,也可以是能够执行相应计算机程序从而完成前述功能的一般处理器或者其他硬件设备;再如前述的标志位检查模块,可以是具有执行前述检查所述中断标志位寄存器功能的硬件,例如标志位检查器,也可以是能够执行相应计算机程序从而完成前述功能的一般处理器或者其他硬件设备(本说明书提供的各个实施例都可应用上述描述原则)。附图4示例的接口提供模块401可以包括接口调用单元501和中断标志设置单元502,如附图5所示本发明另一实施例提供的虚拟化系统中关闭中断的装置,其中接口调用单元501,用于向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口;
中断标志设置单元502,用于根据所述接口提供的中间地址信息,通过第一层地址映射访问中间地址,根据所述中间地址并通过第二层地址映射,将与所述Guest OS对应的中断标志位寄存器设置中断标志,所述第一层地址映射为所述Guest OS至中间地址的映射,所述第二层地址映射是所述中间地址至物理内存地址的映射,所述物理内存包括所述共享内存。附图4或附图5示例的虚拟化系统中关闭中断的装置还可以包括映射建立模块601和共享内存建立模块602,如附图6a或附图6b所示本发明另一实施例提供的虚拟化系统中关闭中断的装置,其中映射建立模块601,用于建立Guest OS至中间地址的映射以及所述中间地址至物理内存地址的映射。共享内存建立模块602,用于建立所述共享内存,所述共享内存中不同的Guest OS与所述Hypervisor共享的内存空间互相隔离。附图4示例的标志位检查模块402可以按照实时嵌入式虚拟化构件Hypervisor提供的时钟,周期性地轮询所述中断标志位寄存器,也可以在硬件产生的物理中断的触发下,检查所述中断标志位寄存器。标志位检查模块402可以包括第一执行单元701,如附图7所示本发明另一实施例提供的虚拟化系统中关闭中断的装置,执行单元701,用于执行异常向量指定的异常处理函数以检查所述中断标志位寄存器。具体地,硬件产生的物理中断,例如,通用物理中断或快速物理中断等首先通过GIC路由到物理核,物理核上运行Hypervisor程序,然后进入到Hypervisor的异常向量表,并跳转到Hypervisor的异常向量指定的异常处理函数,在Hypervisor的中断处理过程中执行单元701执行异常向量表中异常向量指定的异常处理函数以检查中断标志位寄存器的内容。需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,比如以下各种方法的一种或多种或全部向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口将共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志,所述共享内存为实时嵌入式虚拟化构件Hypervisor与至少一个Guest OS共享并用于记录中断标志的物理内存;检查所述中断标志位寄存器;若所述中断标志位寄存器表明所述Guest OS需要关闭中断,则禁止向所述GuestOS发送虚拟中断。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。 以上对本发明实施例提供的虚拟化系统中关闭中断的方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种虚拟化系统中关闭中断的方法,其特征在于,所述方法包括 向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口将共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志,所述共享内存为实时嵌入式虚拟化构件Hypervisor与至少一个Guest OS共享并用于记录中断标志的物理内存,且所述共享内存中不同的Guest OS与所述Hypervisor共享的内存空间互相隔离; 检查所述中断标志位寄存器; 若所述中断标志位寄存器表明所述Guest OS需要关闭中断,则禁止向所述Guest OS发送虚拟中断。
2.如权利要求I所述的方法,其特征在于,所述向虚拟化操作系统GuestOS提供接口以使所述Guest OS调用所述接口将共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志,包括 向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口 ; 根据所述接口提供的中间地址信息,通过第一层地址映射访问中间地址,根据所述中间地址并通过第二层地址映射访问所述共享内存,将与所述Guest OS对应的中断标志位寄存器设置中断标志。
3.如权利要求2所述的方法,其特征在于,所述向虚拟化操作系统GuestOS提供接口以使所述Guest OS将共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志之前还包括 建立Guest OS至中间地址的映射及所述中间地址至物理内存地址的映射; 建立所述共享内存。
4.如权利要求I所述的方法,其特征在于,所述检查所述中断标志位寄存器包括 按照所述Hypervisor提供的时钟,周期性地轮询所述中断标志位寄存器;或者 在硬件产生的物理中断的触发下,检查所述中断标志位寄存器。
5.如权利要求4所述的方法,其特征在于,所述检查所述中断标志位寄存器包括 执行异常向量指定的异常处理函数以检查所述中断标志位寄存器。
6.一种虚拟化系统中关闭中断的装置,其特征在于,所述装置包括接口提供模块,用于向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口将共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志,所述共享内存为实时嵌入式虚拟化构件Hypervisor与至少一个Guest OS共享并用于记录中断标志的物理内存,所述共享内存中不同的Guest OS与所述Hypervisor共享的内存空间互相隔离;标志位检查模块,用于检查所述中断标志位寄存器; 中断截止发送模块,用于若所述标志位检查模块检查所述中断标志位寄存器表明所述Guest OS需要关闭中断,贝U禁止向所述Guest OS发送虚拟中断。
7.如权利要求6所述的装置,其特征在于,所述接口提供模块包括 接口调用单元,用于向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口 ; 中断标志设置单元,用于根据所述接口提供的中间地址信息,通过第一层地址映射访问中间地址,根据所述中间地址并通过第二层地址映射访问所述共享内存,将与所述GuestOS对应的中断标志位寄存器设置中断标志。
8.如权利要求6或7所述的装置,其特征在于,所述装置还包括 映射建立模块,用于建立Guest OS至中间地址的映射以及所述中间地址至物理内存地址的映射; 共享内存建立模块,用于建立所述共享内存。
9.如权利要求6所述的装置,其特征在于,所述标志位检查模块按照所述Hypervisor提供的时钟,周期性地轮询所述中断标志位寄存器;或者 标志位检查模块在硬件产生的物理中断的触发下,检查所述中断标志位寄存器。
10.如权利要求9所述的装置,其特征在于,所述标志位检查模块包括 执行单元,用于执行异常向量指定的异常处理函数以检查所述中断标志位寄存器。
全文摘要
本发明提供虚拟化系统中关闭中断的方法和装置,更好地支持Guest OS开/关中断,降低对系统运行效率的影响。所述方法包括向虚拟化操作系统Guest OS提供接口以使所述Guest OS调用所述接口将共享内存中与所述Guest OS对应的中断标志位寄存器设置中断标志;检查所述中断标志位寄存器;若所述中断标志位寄存器表明所述Guest OS需要关闭中断,则禁止向所述Guest OS发送虚拟中断。本发明提供的方法不依赖Hypervisor与Guest OS共同编译,Hypervisor不需与Guest OS共享代码段,对共享内存的访问通过虚拟地址进行,在关闭/打开中断时速度快,系统运行效率高。
文档编号G06F9/48GK102799480SQ20121020713
公开日2012年11月28日 申请日期2012年6月21日 优先权日2012年6月21日
发明者马彬, 郑章孝, 白云鹏 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1