首页 / 专利库 / 软件 / 虚拟机监控器 / 中断信息的处理方法、虚拟机监控器及中断控制器

中断信息的处理方法、虚拟机监控器及中断控制器

阅读:544发布:2020-05-17

专利汇可以提供中断信息的处理方法、虚拟机监控器及中断控制器专利检索,专利查询,专利分析的服务。并且本 发明 实施例 提供了一种中断信息的处理方法、 虚拟机 监控器及中断 控制器 ,该方法包括: 虚拟机监控器 接收Q个第一中断信息,依据每个第一中断信息的中断号,从特定寄存器中获得对应的中断处理函数;调用获得的中断处理函数,以获得M个第二中断信息,M个第二中断信息为Q个第一中断信息中需要发送给虚拟机对应的处理器的中断信息;获得M个第二中断信息对应的虚拟机的标识;向虚拟CPU中断 接口 写入M个第二中断信息以及M个第二中断信息对应的虚拟机的标识,以便于虚拟CPU中断接口在确定M个第二中断信息对应的虚拟机运行后,向M个第二中断信息对应的虚拟机对应的处理器发送M个第二中断信息。本发明实施例提供的技术方案用以实现提高中断信息的处理效率。,下面是中断信息的处理方法、虚拟机监控器及中断控制器专利的具体信息内容。

1.一种中断信息的处理方法,其特征在于,所述方法应用于包括中断控制器虚拟机监控器、特定寄存器和至少一个虚拟机的系统,其中,所述中断控制器包括至少一个虚拟CPU中断接口,所述特定寄存器中存储虚拟机监控器中断向量表,所述虚拟机监控器中断向量表包括用于虚拟机监控器调用的中断处理函数,所述中断处理函数中包含中断号;所述方法包括:
所述虚拟机监控器接收Q个第一中断信息,Q为大于或者等于1的整数;
所述虚拟机监控器依据每个所述第一中断信息的中断号,从所述特定寄存器中获得对应的中断处理函数;
所述虚拟机监控器调用获得的所述中断处理函数,以获得M个第二中断信息,所述M个第二中断信息为所述Q个第一中断信息中需要发送给虚拟机对应的处理器的中断信息;M为小于或者等于Q的正整数;
所述虚拟机监控器获得所述M个第二中断信息对应的虚拟机的标识;
所述虚拟机监控器向所述虚拟CPU中断接口写入所述M个第二中断信息以及所述M个第二中断信息对应的虚拟机的标识,以便于所述虚拟CPU中断接口在确定所述M个第二中断信息对应的虚拟机运行后,向所述M个第二中断信息对应的虚拟机对应的处理器发送所述M个第二中断信息。
2.根据权利要求1所述的方法,其特征在于,所述虚拟机监控器向所述虚拟CPU中断接口写入所述M个第二中断信息以及所述M个第二中断信息对应的虚拟机的标识,包括:
所述虚拟机监控器对所述M个第二中断信息进行缓存;
所述虚拟机监控器检测所述虚拟CPU中断接口中当前存储的第三中断信息的数目K,K为大于或等于0的整数;
所述虚拟机监控器依据所述第三中断信息的数目K和预设的所述虚拟CPU中断接口的中断数目阈值P,从所述M个第二中断信息中获得优先级最高的N个第二中断信息,P为大于或等于1的整数,N小于或等于P与K的差值;
所述虚拟机监控器向所述虚拟CPU中断接口写入所述N个第二中断信息和所述N个第二中断信息对应的虚拟机的标识,N小于或等于P与K的差值。
3.根据权利要求2所述的方法,其特征在于,每个所述虚拟CPU中断接口包括第一寄存器和第二寄存器;所述虚拟机监控器向所述虚拟CPU中断接口写入所述N个第二中断信息和所述N个第二中断信息对应的虚拟机的标识,包括:
所述虚拟机监控器向所述第一寄存器写入所述N个第二中断信息,以使得所述第一寄存器按照优先级由高到低的顺序对所述N个第二中断信息进行排序,以获得排序结果,以及依据所述排序结果,将所述N个第二中断信息中优先级最高的R个第二中断信息写入所述第二寄存器,所述R个第二中断信息用于所述虚拟CPU中断接口在确定所述虚拟机的标识对应的虚拟机运行后,向所述虚拟机对应的处理器发送所述R个第二中断信息,R为小于或等于N的正整数。
4.根据权利要求1所述的方法,其特征在于,所述虚拟机监控器调用获得的所述中断处理函数,以获得M个第二中断信息,包括:
所述虚拟机监控器调用获得的所述中断处理函数,以使得被调用的所述中断处理函数开始运行,以及检测每个所述第一中断信息对应的操作位置和每个所述虚拟机的位置信息,以获得所述操作位置位于所述虚拟机的位置信息内的M个所述第一中断信息;
所述虚拟机监控器将获得的M个所述第一中断信息作为所述M个第二中断信息。
5.一种虚拟机监控器,其特征在于,应用于包括中断控制器、所述虚拟机监控器、特定寄存器和至少一个虚拟机的系统,其中,所述中断控制器包括至少一个虚拟CPU中断接口,所述特定寄存器中存储虚拟机监控器中断向量表,所述虚拟机监控器中断向量表包括用于虚拟机监控器调用的中断处理函数,所述中断处理函数中包含中断号;所述虚拟机监控器包括:
接收器,用于接收Q个第一中断信息,Q为大于或者等于1的整数;
虚拟中断控制器,用于依据每个所述第一中断信息的中断号,从所述特定寄存器中获得对应的中断处理函数;
所述虚拟中断控制器,还用于调用获得的所述中断处理函数,以获得M个第二中断信息,所述M个第二中断信息为所述Q个第一中断信息中需要发送给虚拟机对应的处理器的中断信息;M为小于或者等于Q的正整数;
所述虚拟中断控制器,还用于获得所述M个第二中断信息对应的虚拟机的标识;
所述虚拟中断控制器,还用于向所述虚拟CPU中断接口写入所述M个第二中断信息以及所述M个第二中断信息对应的虚拟机的标识,以便于所述虚拟CPU中断接口在确定所述M个第二中断信息对应的虚拟机运行后,向所述M个第二中断信息对应的虚拟机对应的处理器发送所述M个第二中断信息。
6.根据权利要求5所述的虚拟机监控器,其特征在于,所述虚拟中断控制器具体用于:
对所述M个第二中断信息进行缓存;
检测所述虚拟CPU中断接口中当前存储的第三中断信息的数目K,K为大于或等于0的整数;
依据所述第三中断信息的数目K和预设的所述虚拟CPU中断接口的中断数目阈值P,从所述M个第二中断信息中获得优先级最高的N个第二中断信息,P为大于或等于1的整数,N小于或等于P与K的差值;
向所述虚拟CPU中断接口写入所述N个第二中断信息和所述N个第二中断信息对应的虚拟机的标识,N小于或等于P与K的差值。
7.根据权利要求6所述的虚拟机监控器,其特征在于,每个所述虚拟CPU中断接口包括第一寄存器和第二寄存器;所述向所述虚拟CPU中断接口写入所述N个第二中断信息和所述N个第二中断信息对应的虚拟机的标识,具体包括:
向所述第一寄存器写入所述N个第二中断信息,以使得所述第一寄存器按照优先级由高到低的顺序对所述N个第二中断信息进行排序,以获得排序结果,以及依据所述排序结果,将所述N个第二中断信息中优先级最高的R个第二中断信息写入所述第二寄存器,所述R个第二中断信息用于所述虚拟CPU中断接口在确定所述虚拟机的标识对应的虚拟机运行后,向所述虚拟机对应的处理器发送所述R个第二中断信息,R为小于或等于N的正整数。
8.根据权利要求5所述的虚拟机监控器,其特征在于,所述虚拟中断控制器,具体用于:
调用获得的所述中断处理函数,以使得被调用的所述中断处理函数开始运行,以及检测每个所述第一中断信息对应的操作位置和每个所述虚拟机的位置信息,以获得所述操作位置位于所述虚拟机的位置信息内的M个所述第一中断信息;将获得的M个所述第一中断信息作为所述M个第二中断信息。

说明书全文

中断信息的处理方法、虚拟机监控器及中断控制器

【技术领域】

[0001] 本发明涉及信息处理技术,尤其涉及一种中断信息的处理方法、虚拟机监控器及中断控制器。【背景技术】
[0002] 现有技术中,计算机的中央处理器(Central Processing Unit,CPU)在虚拟机监控器模式下,该CPU作为虚拟机监控器向虚拟机注入中断信息的方法是:寄存器的指针可以指向不同的中断向量表的地址,若该指针指向虚拟机监控器对应的中断向量表的地址,则虚拟机监控器可以使用该中断向量表中包含的中断处理函数,若该指针指向虚拟机对应的中断向量表的地址,则虚拟机可以使用该中断向量表中包含的中断处理函数,若该指针指向计算机的操作系统对应的中断向量表的地址,则计算机的操作系统可以使用该中断向量表中包含的中断处理函数。当虚拟机正在运行时,虚拟机调用中断向量表中的中断处理函数对中断信息进行处理,若虚拟机监控器需要向该虚拟机注入中断信息,虚拟机需要先停止运行,退出调用中断向量表中的中断处理函数,然后寄存器的指针指向虚拟机监控器对应的中断向量表的地址,使得虚拟机监控器可以调用该中断向量表中的中断处理函数,以实现向虚拟机注入中断信息。
[0003] 然而,由于虚拟机控制器每次向虚拟机注入一个中断信息,都要发生上述虚拟机的退出事件,因此,虚拟机控制器一次只能向虚拟机注入一个中断信息,当中断信息数量较大时,将引发过多的虚拟机退出事件,增加了额外的性能开销,导致中断信息的处理效率较低。【发明内容】
[0004] 本发明实施例提供了一种中断信息的处理方法、虚拟机监控器及中断控制器,以实现提高中断信息的处理效率。
[0005] 第一方面,本发明实施例提供了一种中断信息的处理方法,所述方法应用于包括中断控制器、虚拟机监控器、特定寄存器和至少一个虚拟机的系统,其中,所述中断控制器包括至少一个虚拟CPU中断接口,所述特定寄存器中存储虚拟机监控器中断向量表,所述虚拟机监控器中断向量表包括用于虚拟机监控器调用的中断处理函数,所述中断处理函数中包含中断号;包括:
[0006] 所述虚拟机监控器接收Q个第一中断信息,Q为大于或者等于1的整数;
[0007] 所述虚拟机监控器依据每个所述第一中断信息的中断号,从所述特定寄存器中获得对应的中断处理函数;
[0008] 所述虚拟机监控器调用获得的所述中断处理函数,以获得M个第二中断信息,所述M个第二中断信息为所述Q个第一中断信息中需要发送给虚拟机对应的处理器的中断信息;M为小于或者等于Q的正整数;
[0009] 所述虚拟机监控器获得所述M个第二中断信息对应的虚拟机的标识;
[0010] 所述虚拟机监控器向所述虚拟CPU中断接口写入所述M个第二中断信息以及所述M个第二中断信息对应的虚拟机的标识,以便于所述虚拟CPU中断接口在确定所述M个第二中断信息对应的虚拟机运行后,向所述M个第二中断信息对应的虚拟机对应的处理器发送所述M个第二中断信息。
[0011] 在第一方面的第一种可能的实现方式中,所述虚拟机监控器向所述虚拟CPU中断接口写入所述M个第二中断信息以及所述M个第二中断信息对应的虚拟机的标识,包括:
[0012] 所述虚拟机监控器对所述M个第二中断信息进行缓存;
[0013] 所述虚拟机监控器检测所述虚拟CPU中断接口中当前存储的第三中断信息的数目K,K为大于或等于0的整数;
[0014] 所述虚拟机监控器依据所述第三中断信息的数目K和预设的所述虚拟CPU中断接口的中断数目阈值P,从所述M个第二中断信息中获得优先级最高的N个第二中断信息,P为大于或等于1的整数,N小于或等于P与K的差值;
[0015] 所述虚拟机监控器向所述虚拟CPU中断接口写入所述N个第二中断信息和所述N个第二中断信息对应的虚拟机的标识,N小于或等于P与K的差值。
[0016] 结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,每个所述虚拟CPU中断接口包括第一寄存器和第二寄存器;所述虚拟机监控器向所述虚拟CPU中断接口写入所述N个第二中断信息和所述N个第二中断信息对应的虚拟机的标识,包括:
[0017] 所述虚拟机监控器向所述第一寄存器写入所述N个第二中断信息,以使得所述第一寄存器按照优先级由高到低的顺序对所述N个第二中断信息进行排序,以获得排序结果,以及依据所述排序结果,将所述N个第二中断信息中优先级最高的R个第二中断信息写入所述第二寄存器,所述R个第二中断信息用于所述虚拟CPU中断接口在确定所述虚拟机的标识对应的虚拟机运行后,向所述虚拟机对应的处理器发送所述R个第二中断信息,R为小于或等于N的正整数。
[0018] 在第一方面的第三种可能的实现方式中,所述虚拟机监控器调用获得的所述中断处理函数,以获得M个第二中断信息,包括:
[0019] 所述虚拟机监控器调用获得的所述中断处理函数,以使得被调用的所述中断处理函数开始运行,以及检测每个所述第一中断信息对应的操作位置和每个所述虚拟机的位置信息,以获得所述操作位置位于所述虚拟机的位置信息内的M个所述第一中断信息;
[0020] 所述虚拟机监控器将获得的M个所述第一中断信息作为所述M个第二中断信息。
[0021] 第二方面,本发明实施例还提供了一种中断信息的处理方法,所述方法应用于包括中断控制器和一个虚拟机的系统,其中,所述中断控制器包括一个虚拟CPU中断接口和中断响应单元;包括:
[0022] 所述中断响应单元接收物理设备发送的Q个第一中断信息,Q为大于或者等于1的整数;
[0023] 所述中断响应单元向所述虚拟CPU中断接口写入所述Q个中断信息,以使得所述虚拟CPU中断接口在确定所述虚拟机运行后,向所述虚拟机对应的处理器发送所述Q个中断信息。
[0024] 在第二方面的第一种可能的实现方式中,所述虚拟CPU中断接口包括第一寄存器和第二寄存器;所述中断响应单元向所述虚拟CPU中断接口写入所述Q个中断信息,包括:
[0025] 所述中断响应单元向所述第一寄存器写入所述Q个中断信息,以使得所述第一寄存器按照优先级由高到低的顺序对所述Q个中断信息进行排序,以获得排序结果,以及依据所述排序结果,将所述Q个中断信息中优先级最高的R个中断信息写入所述第二寄存器,所述R个中断信息用于所述虚拟CPU中断接口在确定所述虚拟机运行后,向所述虚拟机对应的处理器发送所述R个中断信息,R为小于或等于N的正整数。
[0026] 第三方面,本发明实施例提供了一种虚拟机监控器,应用于包括中断控制器、所述虚拟机监控器、特定寄存器和至少一个虚拟机的系统,其中,所述中断控制器包括至少一个虚拟CPU中断接口,所述特定寄存器中存储虚拟机监控器中断向量表,所述虚拟机监控器中断向量表包括用于虚拟机监控器调用的中断处理函数,所述中断处理函数中包含中断号;包括:
[0027] 接收器,用于接收Q个第一中断信息,Q为大于或者等于1的整数;
[0028] 虚拟中断控制器,用于依据每个所述第一中断信息的中断号,从所述特定寄存器中获得对应的中断处理函数;
[0029] 所述虚拟中断控制器,还用于调用获得的所述中断处理函数,以获得M个第二中断信息,所述M个第二中断信息为所述Q个第一中断信息中需要发送给虚拟机对应的处理器的中断信息;M为小于或者等于Q的正整数;
[0030] 所述虚拟中断控制器,还用于获得所述M个第二中断信息对应的虚拟机的标识;
[0031] 所述虚拟中断控制器,还用于向所述虚拟CPU中断接口写入所述M个第二中断信息以及所述M个第二中断信息对应的虚拟机的标识,以便于所述虚拟CPU中断接口在确定所述M个第二中断信息对应的虚拟机运行后,向所述M个第二中断信息对应的虚拟机对应的处理器发送所述M个第二中断信息。
[0032] 在第三方面的第一种可能的实现方式中,所述虚拟中断控制器具体用于:
[0033] 对所述M个第二中断信息进行缓存;
[0034] 检测所述虚拟CPU中断接口中当前存储的第三中断信息的数目K,K为大于或等于0的整数;
[0035] 依据所述第三中断信息的数目K和预设的所述虚拟CPU中断接口的中断数目阈值P,从所述M个第二中断信息中获得优先级最高的N个第二中断信息,P为大于或等于1的整数,N小于或等于P与K的差值;
[0036] 向所述虚拟CPU中断接口写入所述N个第二中断信息和所述N个第二中断信息对应的虚拟机的标识,N小于或等于P与K的差值。
[0037] 结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,每个所述虚拟CPU中断接口包括第一寄存器和第二寄存器;所述向所述虚拟CPU中断接口写入所述N个第二中断信息和所述N个第二中断信息对应的虚拟机的标识,具体包括:
[0038] 向所述第一寄存器写入所述N个第二中断信息,以使得所述第一寄存器按照优先级由高到低的顺序对所述N个第二中断信息进行排序,以获得排序结果,以及依据所述排序结果,将所述N个第二中断信息中优先级最高的R个第二中断信息写入所述第二寄存器,所述R个第二中断信息用于所述虚拟CPU中断接口在确定所述虚拟机的标识对应的虚拟机运行后,向所述虚拟机对应的处理器发送所述R个第二中断信息,R为小于或等于N的正整数。
[0039] 在第三方面的第三种可能的实现方式中,所述虚拟中断控制器,具体用于:
[0040] 调用获得的所述中断处理函数,以使得被调用的所述中断处理函数开始运行,以及检测每个所述第一中断信息对应的操作位置和每个所述虚拟机的位置信息,以获得所述操作位置位于所述虚拟机的位置信息内的M个所述第一中断信息;
[0041] 将获得的M个所述第一中断信息作为所述M个第二中断信息。
[0042] 第四方面,本发明实施例还提供了一种中断控制器,其特征在于,应用于包括所述中断控制器和一个虚拟机的系统,所述中断控制器包括一个虚拟CPU中断接口和中断响应单元;其中,
[0043] 所述中断响应单元,用于接收物理设备发送的Q个第一中断信息,Q为大于或者等于1的整数;
[0044] 所述中断响应单元,还用于向所述虚拟CPU中断接口写入所述Q个中断信息,以使得所述虚拟CPU中断接口在确定所述虚拟机运行后,向所述虚拟机对应的处理器发送所述Q个中断信息。
[0045] 在第四方面的第一种可能的实现方式中,所述虚拟CPU中断接口包括第一寄存器和第二寄存器;所述中断响应单元具体用于:
[0046] 向所述第一寄存器写入所述Q个中断信息,以使得所述第一寄存器按照优先级由高到低的顺序对所述Q个中断信息进行排序,以获得排序结果,以及依据所述排序结果,将所述Q个中断信息中优先级最高的R个中断信息写入所述第二寄存器,所述R个中断信息用于所述虚拟CPU中断接口在确定所述虚拟机运行后,向所述虚拟机对应的处理器发送所述R个中断信息,R为小于或等于N的正整数。
[0047] 由以上技术方案可以看出,本发明实施例具有以下有益效果:
[0048] 虚拟机监控器可以直接调用特定寄存器中的中断处理函数,不需要等待虚拟机退出后,使用共用的中断向量表中的中断处理函数,虚拟机监控器可以通过中断控制器的虚拟CPU中断接口向虚拟机注入中断信息,与现有技术中每注入一个中断信息都要引发虚拟机退出事件相比,本实施例的方法可以批量地向虚拟机注入中断信息,因此,能够降低额外的性能开销,简化中断信息的处理流程,从而提高中断信息的处理效率。【附图说明】
[0049] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
[0050] 图1是本发明实施例所提供的中断信息的处理方法的实施例一的流程示意图;
[0051] 图2是本发明实施例所提供的中断信息的处理方法的实施例一所应用的系统的结构示意图;
[0052] 图3是本发明实施例所提供的中断信息的处理方法的实施例二的流程示意图;
[0053] 图4是本发明实施例所提供的中断信息的处理方法的实施例二所应用的系统的结构示意图;
[0054] 图5是本发明实施例所提供的虚拟机监控器的功能方图;
[0055] 图6是本发明实施例所提供的虚拟机监控器的结构示意图;
[0056] 图7是本发明实施例所提供的中断控制器的功能方块图;
[0057] 图8是本发明实施例所提供的中断控制器的结构示意图。【具体实施方式】
[0058] 为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
[0059] 应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0060] 本发明实施例给出一种中断信息的处理方法,所述方法应用于包括中断控制器、虚拟机监控器、特定寄存器和至少一个虚拟机的系统,所述中断控制器包括至少一个虚拟CPU中断接口,所述特定寄存器中存储虚拟机监控器中断向量表,所述虚拟机监控器中断向量表包括用于虚拟机监控器调用的中断处理函数,所述中断处理函数中包含中断号。
[0061] 请参考图1,其为本发明实施例所提供的中断信息的处理方法的实施例一的流程示意图,如图所示,该方法包括以下步骤:
[0062] 步骤101,所述虚拟机监控器接收Q个第一中断信息,Q为大于或者等于1的整数。
[0063] 具体的,请参考图2,其为本发明实施例所提供的中断信息的处理方法的实施例一所应用的系统的结构示意图,如图2所示,虚拟机监控器包括一个虚拟中断控制器和中断响应单元;本实施例中,虚拟机监控器接收的Q个第一中断信息可以包括:虚拟设备产生的虚拟中断信息和/或物理设备产生的物理中断信息。
[0064] 举例说明,虚拟机监控器接收虚拟设备产生的虚拟中断信息的方法可以包括:如图2所示,虚拟设备产生虚拟中断信息,然后虚拟设备调用虚拟机监控器中的虚拟中断控制器的接口,将虚拟设备产生的虚拟中断信息直接发送到虚拟中断控制器,这样,虚拟中断控制器就可以从虚拟设备接收虚拟中断信息。
[0065] 举例说明,虚拟机监控器接收物理设备产生的物理中断信息的方法可以包括:如图2所示,物理设备产生物理中断信息,然后将物理中断信息发送给中断控制器;该中断控制器除了包含上述虚拟CPU中断接口外,还包含中断响应单元和CPU中断接口,中断控制器的中断响应单元首先判断预设的控制寄存器的中断屏蔽优先控制(Interrupt masking override,IMO)位的值,若控制寄存器的IMO位的值等于1(即HCR.IMO=1),则表示当前模式为监控器模式(Hyp模式),则物理中断信息需要陷入虚拟机监控器,那么中断控制器的中断响应单元就通过中断控制器的CPU中断接口,将收到的物理中断信息发送给虚拟机监控器的中断响应单元,虚拟机监控器的中断响应单元调用虚拟中断控制器接口,将收到的物理中断信息发送到虚拟机监控器的虚拟中断控制器,这样虚拟中断控制器就可以接收到从物理设备发来的物理中断信息。
[0066] 步骤102,所述虚拟机监控器依据每个所述第一中断信息的中断号,从所述特定寄存器中获得对应的中断处理函数。
[0067] 具体的,本发明实施例中,在操作系统中增加一个特定寄存器,该特定寄存器只存储虚拟机监控器中断向量表,不存储计算机的操作系统的中断向量表和虚拟机的中断向量表;该虚拟机监控器中断向量表指的是仅用于虚拟机监控器使用的中断向量表。
[0068] 所述虚拟机监控器中断向量表中包括用于虚拟机监控器调用的至少一个中断处理函数,每个中断处理函数对应一个中断号。其中,中断处理函数与中断号对应的方法是:每个中断处理函数中包含对应的中断号。
[0069] 当虚拟机监控器的虚拟中断控制器接收到Q个第一中断信息后,依据每个第一中断信息的中断号,在特定寄存器中存储的虚拟机监控器中断向量表中,查找每个第一中断信息的中断号所对应的中断处理函数;例如,虚拟中断控制器对中断处理函数进行遍历,当发现遍历到的中断处理函数中包含某第一中断信息的中断号时,则确定该中断处理函数是该第一中断信息对应的中断处理函数。
[0070] 步骤103,所述虚拟机监控器调用获得的所述中断处理函数,以获得M个第二中断信息,所述M个第二中断信息为所述Q个第一中断信息中需要发送给虚拟机对应的处理器的中断信息;M为小于或者等于Q的正整数。
[0071] 具体的,所述虚拟机监控器调用获得的所述中断处理函数,以使得被调用的所述中断处理函数开始运行,中断处理函数运行后,自动检测第一中断信息对应的操作位置、当前运行的虚拟机以及每个所述虚拟机的位置信息,判断第一中断信息对应的操作位置是否属于某个虚拟机的位置信息内,如果某第一中断信息对应的操作位置属于某虚拟机的位置范围内,则确定该第一中断信息是发送给该虚拟机进行处理的,因此,中断处理函数自动检测后,可以获得操作位置位于虚拟机的位置信息内的M个所述第一中断信息。反之,如果某第一中断信息对应的操作位置不属于某虚拟机的位置范围,则确定该第一中断信息是发送给计算机的操作系统的进行处理的。
[0072] 所述虚拟机监控器将获得的M个所述第一中断信息作为所述M个第二中断信息,也就是说,所述M个第二中断信息是所述Q个第一中断信息中需要发送给虚拟机对应的处理器的中断信息。
[0073] 步骤104,所述虚拟机监控器获得所述M个第二中断信息对应的虚拟机的标识。
[0074] 具体的,由于所述虚拟机监控器中的虚拟中断控制器调用的中断处理函数运行后,可以自动检测出某第一中断信息是发送给哪个虚拟机进行处理的,因此,虚拟中断控制器可以依据虚拟机与标识的对应关系,获得该第一中断信息需要发往的虚拟机的标识,例如,所述虚拟机的标识可以是虚拟机的ID。
[0075] 步骤105,所述虚拟机监控器向所述虚拟CPU中断接口写入所述M个第二中断信息以及所述M个第二中断信息对应的虚拟机的标识,以便于所述虚拟CPU中断接口在确定所述M个第二中断信息对应的虚拟机运行后,向所述M个第二中断信息对应的虚拟机对应的处理器发送所述M个第二中断信息。
[0076] 具体的,本发明实施例中,所述虚拟机监控器向所述虚拟CPU中断接口写入所述M个第二中断信息以及所述M个第二中断信息对应的虚拟机的标识的方法可以是:
[0077] 所述虚拟机监控器对获得的M个第二中断信息进行缓存,然后检测虚拟CPU中断接口中当前存储的第三中断信息的数目K,K为大于或等于0的整数。虚拟机监控器依据所述第三中断信息的数目K和预设的所述虚拟CPU中断接口的中断数目阈值P,从所述M个第二中断信息中获得优先级最高的N个第二中断信息,P为大于或等于1的整数,N小于或等于P与K的差值;所述虚拟机监控器向所述虚拟CPU中断接口写入所述N个第二中断信息和所述N个第二中断信息对应的虚拟机的标识,N小于或等于P与K的差值。
[0078] 优选的,对于虚拟中断控制器获得的M个第二中断信息,虚拟中断控制器第一次向中断控制器的虚拟CPU中断接口写入第二中断信息时,按照优先级由高到低的顺序对M个中断信息进行排序,然后依据预设的虚拟CPU中断接口的中断数目阈值P,从M个第二中断信息中获得优先级最高的P个第二中断信息,向中断控制器的虚拟CPU中断接口写入获得的P个第二中断信息以及P个第二中断信息对应的虚拟机的标识,以使得虚拟CPU中断接口存储的第二中断信息的数目K等于虚拟CPU中断接口的中断数目阈值P。
[0079] 举例说明,虚拟CPU中断接口可以由第一寄存器和第二寄存器维持当前的第二中断信息,两个寄存器仅能够存储64个第二中断信息,两个寄存器存储的第二中断信息包括处于等待处理状态(如Pending状态)的第二中断信息和处于正在处理状态(如Active状态)的第二中断信息,则虚拟CPU中断接口的中断数目阈值P等于64。
[0080] 由于虚拟机监控器可以同时启动多台虚拟机,因此,会有许多第二中断信息不能被及时处理,因此,若虚拟中断控制器收到的第二中断信息的数目M大于虚拟CPU中断接口的中断数目阈值P时,需要由虚拟中断控制器缓存部分的第二中断信息,以便于可以快速的向虚拟CPU中断接口写入第二中断信息。
[0081] 举例说明,虚拟中断控制器可以维护两个有序队列,即第一中断队列和第二中断队列,其中,第一中断队列中存储处于等待处理状态的中断信息,第二中断队列中存储处于正在处理状态的中断信息,这两个队列中每个元素都记录相应的应当写入虚拟CPU中断接口的第二中断信息以及该第二中断信息在虚拟CPU中断接口中的位置,该位置用于标识第二中断信息在虚拟CPU中断接口中的优先级;虚拟中断控制器每次与虚拟CPU中断接口交互后,都会更新第一中断队列和第二中断队列。
[0082] 从虚拟中断控制器第二次向中断控制器的虚拟CPU中断接口写入第二中断信息开始,在写入第二中断信息之前,虚拟中断控制器都需要检测所述虚拟CPU中断接口当前存储的第三中断信息的数目K。
[0083] 若虚拟中断控制器检测到所述第三中断信息的数目K等于虚拟CPU中断接口的中断数目阈值P,且有新的优先级更高的第二中断信息需要写入,则虚拟中断控制器先从K个第三中断信息中取出优先级最低的S个第三中断信息,取出的第三中断信息可以是处于等待处理状态的第三中断信息,也可以使处于正在处理状态的第三中断信息;然后,虚拟中断控制器向所述虚拟CPU中断接口写入所述M个第二中断信息中优先级最高的S个第二中断信息;S为大于或者等于1的整数,且S小于或者等于K;也就是说,从所述K个第三中断信息中取出的第三中断信息的数目等于写入的第二中断信息的数目;当虚拟CPU中断接口的两个寄存器写满中断信息后,从两个寄存器取出多少第三中断信息,就需要向两个寄存器再写入多少第二中断信息,以充分利用寄存器的存储空间。优选的,虚拟中断控制器从所述中断信息中取出优先级最低的S个第三中断信息时,尽量保证取出第三中断信息后,两个寄存器中处于等待处理状态的第三中断信息的数目与处于正在处理状态的第三中断信息的数目相等。
[0084] 若虚拟中断控制器检测到所述第三中断信息的数目K小于P,那么可以直接向所述虚拟CPU中断接口写入所述M个第二中断信息中优先级最高的N个第二中断信息;N小于或等于P与K之差。例如,若虚拟CPU中断接口的寄存器中的第三中断信息处理完,那么该第三中断信息将被清除,这样,虚拟中断控制器就可以将第一中断队列或第二中断队列中优先级最高的第二中断信息写入虚拟CPU中断接口。
[0085] 举例说明,若每个所述虚拟CPU中断接口可以包括第一寄存器和第二寄存器;所述虚拟机监控器向所述虚拟CPU中断接口写入所述N个第二中断信息和所述N个第二中断信息对应的虚拟机的标识的方法可以是:
[0086] 所述虚拟机监控器向所述第一寄存器写入所述N个第二中断信息,以使得所述第一寄存器按照优先级由高到低的顺序对所述N个第二中断信息进行排序,以获得排序结果,以及依据所述排序结果,将所述N个第二中断信息中优先级最高的R个第二中断信息写入所述第二寄存器,所述R个第二中断信息用于所述虚拟CPU中断接口在确定所述虚拟机的标识对应的虚拟机运行后,向所述虚拟机对应的处理器发送所述R个第二中断信息,R为小于或等于N的正整数。
[0087] 本发明实施例中,所述虚拟机监控器向所述虚拟CPU中断接口写入所述M个第二中断信息以及所述M个第二中断信息对应的虚拟机的标识之后,所述虚拟CPU中断接口在确定所述M个第二中断信息对应的虚拟机运行后,可以向所述M个第二中断信息对应的虚拟机对应的处理器发送所述M个第二中断信息。
[0088] 寄存器中预先存储有中断向量表,且寄存器的指针可以指向不同的中断向量表的地址,当该指针指向虚拟机对应的中断向量表的地址时,虚拟机可以使用该中断向量表中包含的中断处理函数,该中断向量表中保存中断信息的标识与中断处理函数的对应关系,虚拟机可以依据该对应关系,获得中断信息对应的中断处理函数,然后调用该中断处理函数处理从虚拟CPU中断接口获得的中断信息。虚拟机处理完中断信息后,清除虚拟CPU中断接口中存储的该中断信息,中断信息的处理流程结束。
[0089] 本实施例中,虚拟机监控器可以直接调用特定寄存器中的中断处理函数,不需要等待虚拟机退出后,使用公用的中断向量表中的中断处理函数,虚拟机监控器可以通过中断控制器的虚拟CPU中断接口向虚拟机注入中断信息,与现有技术中每注入一个中断信息都要引发虚拟机退出事件相比,本实施例的方法可以批量地向虚拟机注入中断信息,因此,能够降低额外的性能开销,简化中断信息的处理流程,从而提高中断信息的处理效率。本实施例中,虚拟机监控器中利用高级精简指令集机器(Advanced Reduced-instruction-set-computer Machine,ARM)硬件实现两个中断队列,而不是利用软件实现两个中断队列,因此能够降低虚拟机监控器的复杂度。本实施例的方法与现有技术中虚拟机控制器对中断向量表进行修改的方法相比,可以利用独占的中断处理函数以及虚拟CPU中断接口直接向虚拟机注入中断信息,无需修改上层操作系统,具有透明性。
[0090] 本发明实施例还给出一种中断信息的处理方法,所述方法应用于包括中断控制器和一个虚拟机的系统,所述中断控制器包括一个虚拟CPU中断接口和一个中断响应单元。
[0091] 请参考图3,其为本发明实施例所提供的中断信息的处理方法的实施例二的流程示意图,如图所示,该方法包括以下步骤:
[0092] 步骤301,所述中断响应单元接收物理设备发送的Q个第一中断信息,Q为大于或者等于1的整数。
[0093] 具体的,请参考图4,其为本发明实施例所提供的中断信息的处理方法的实施例二所应用的系统的结构示意图,如图4所示,中断控制器接收的Q个第一中断信息可以包括物理设备产生的物理中断信息。
[0094] 举例说明,中断控制器接收物理设备产生的物理中断信息的方法可以包括:如图4所示,物理设备产生Q个物理中断信息,然后将Q个物理中断信息发送给中断控制器,中断控制器中的中断响应单元接收到该Q个物理中断信息。中断控制器的中断响应单元判断预设的控制寄存器的IMO位的值,若控制寄存器的IMO位的值不等于1(即HCR.IMO不等于1),例如,IMO位的值等于0(即HCR.IMO=0),则表示当前模式为非监控器模式,则物理中断信息不需要陷入虚拟机监控器,因此,本实施例所应用的系统中不包括虚拟机监控器。
[0095] 步骤302,所述中断响应单元向所述虚拟CPU中断接口写入所述Q个中断信息,以使得所述虚拟CPU中断接口在确定所述虚拟机运行后,向所述虚拟机对应的处理器发送所述Q个中断信息。
[0096] 具体的,所述虚拟CPU中断接口中可以包括第一寄存器和第二寄存器,所述中断响应单元向所述第一寄存器写入所述Q个中断信息,以使得所述第一寄存器按照优先级由高到低的顺序对所述Q个中断信息进行排序,以获得排序结果,以及依据所述排序结果,将所述Q个中断信息中优先级最高的R个中断信息写入所述第二寄存器,所述R个中断信息用于所述虚拟CPU中断接口在确定所述虚拟机运行后,向所述虚拟机对应的处理器发送所述R个中断信息,R为小于或等于N的正整数。
[0097] 寄存器中预先存储有中断向量表,且寄存器的指针可以指向不同的中断向量表的地址,当该指针指向虚拟机对应的中断向量表的地址时,虚拟机可以使用该中断向量表中包含的中断处理函数,该中断向量表中保存中断信息的标识与中断处理函数的对应关系,虚拟机可以依据该对应关系,获得中断信息对应的中断处理函数,然后调用该中断处理函数处理从虚拟CPU中断接口获得的中断信息。虚拟机处理完中断信息后,清除虚拟CPU中断接口中存储的该中断信息,中断信息的处理流程结束。
[0098] 本实施例中,预先将模式配置为不陷入虚拟机监控器的模式,这样,中断控制器可以通过自身的虚拟CPU中断接口,直接将中断信息注入虚拟机,实现在不陷入虚拟机监控器的场景下,虚拟机仍然能够获得中断信息,同时简化中断信息的处理流程,提高中断信息的处理效率。
[0099] 本发明实施例进一步给出实现上述方法实施例中各步骤及方法的装置实施例。
[0100] 请参考图5,其为本发明实施例所提供的虚拟机监控器的功能方块图。如图所示,应用于包括中断控制器、所述虚拟机监控器、特定寄存器和至少一个虚拟机的系统,其中,所述中断控制器包括至少一个虚拟CPU中断接口,所述特定寄存器中存储虚拟机监控器中断向量表,所述虚拟机监控器中断向量表包括用于虚拟机监控器调用的中断处理函数,所述中断处理函数中包含中断号;所述虚拟机监控器包括:
[0101] 接收器50,用于接收Q个第一中断信息,Q为大于或者等于1的整数;
[0102] 虚拟中断控制器51,用于依据每个所述第一中断信息的中断号,从所述特定寄存器中获得对应的中断处理函数;
[0103] 所述虚拟中断控制器51,还用于调用获得的所述中断处理函数,以获得M个第二中断信息,所述M个第二中断信息为所述Q个第一中断信息中需要发送给虚拟机对应的处理器的中断信息;M为小于或者等于Q的正整数;
[0104] 所述虚拟中断控制器51,还用于获得所述M个第二中断信息对应的虚拟机的标识;
[0105] 所述虚拟中断控制器51,还用于向所述虚拟CPU中断接口写入所述M个第二中断信息以及所述M个第二中断信息对应的虚拟机的标识,以便于所述虚拟CPU中断接口在确定所述M个第二中断信息对应的虚拟机运行后,向所述M个第二中断信息对应的虚拟机对应的处理器发送所述M个第二中断信息。
[0106] 优选的,所述虚拟中断控制器51具体用于:
[0107] 对所述M个第二中断信息进行缓存;
[0108] 检测所述虚拟CPU中断接口中当前存储的第三中断信息的数目K,K为大于或等于0的整数;
[0109] 依据所述第三中断信息的数目K和预设的所述虚拟CPU中断接口的中断数目阈值P,从所述M个第二中断信息中获得优先级最高的N个第二中断信息,P为大于或等于1的整数,N小于或等于P与K的差值;
[0110] 向所述虚拟CPU中断接口写入所述N个第二中断信息和所述N个第二中断信息对应的虚拟机的标识,N小于或等于P与K的差值。
[0111] 优选的,每个所述虚拟CPU中断接口包括第一寄存器和第二寄存器;所述向所述虚拟CPU中断接口写入所述N个第二中断信息和所述N个第二中断信息对应的虚拟机的标识,具体包括:
[0112] 向所述第一寄存器写入所述N个第二中断信息,以使得所述第一寄存器按照优先级由高到低的顺序对所述N个第二中断信息进行排序,以获得排序结果,以及依据所述排序结果,将所述N个第二中断信息中优先级最高的R个第二中断信息写入所述第二寄存器,所述R个第二中断信息用于所述虚拟CPU中断接口在确定所述虚拟机的标识对应的虚拟机运行后,向所述虚拟机对应的处理器发送所述R个第二中断信息,R为小于或等于N的正整数。
[0113] 优选的,所述虚拟中断控制器51,具体用于:
[0114] 调用获得的所述中断处理函数,以使得被调用的所述中断处理函数开始运行,以及检测每个所述第一中断信息对应的操作位置和每个所述虚拟机的位置信息,以获得所述操作位置位于所述虚拟机的位置信息内的M个所述第一中断信息;
[0115] 将获得的M个所述第一中断信息作为所述M个第二中断信息。
[0116] 请参考图6,其为本发明实施例所提供的虚拟机监控器的结构示意图。如图所示,该虚拟机监控器包括:
[0117] 接收器60,用于接收Q个第一中断信息,Q为大于或者等于1的整数;
[0118] 存储器61,用于存储一组或多组程序代码;
[0119] 处理器62,与存储器61、接收器60分别耦合,用于调用存储器61中存储的程序代码,以执行以下图1所示的方法,具体包括:依据每个所述第一中断信息的中断号,从所述特定寄存器中获得对应的中断处理函数;调用获得的所述中断处理函数,以获得M个第二中断信息,所述M个第二中断信息为所述Q个第一中断信息中需要发送给虚拟机对应的处理器的中断信息;M为小于或者等于Q的正整数;获得所述M个第二中断信息对应的虚拟机的标识;向所述虚拟CPU中断接口写入所述M个第二中断信息以及所述M个第二中断信息对应的虚拟机的标识,以便于所述虚拟CPU中断接口在确定所述M个第二中断信息对应的虚拟机运行后,向所述M个第二中断信息对应的虚拟机对应的处理器发送所述M个第二中断信息。
[0120] 请参考图7,其为本发明实施例所提供的中断控制器的功能方块图。如图所示,应用于包括所述中断控制器和一个虚拟机的系统,所述中断控制器包括一个虚拟CPU中断接口71和中断响应单元72;其中,
[0121] 所述中断响应单元72,用于接收物理设备发送的Q个第一中断信息,Q为大于或者等于1的整数;
[0122] 所述中断响应单元72,还用于向所述虚拟CPU中断接口71写入所述Q个中断信息,以使得所述虚拟CPU中断接口71在确定所述虚拟机运行后,向所述虚拟机对应的处理器发送所述Q个中断信息。
[0123] 优选的,所述虚拟CPU中断接口包括第一寄存器和第二寄存器;所述中断响应单元72具体用于:
[0124] 向所述第一寄存器写入所述Q个中断信息,以使得所述第一寄存器按照优先级由高到低的顺序对所述Q个中断信息进行排序,以获得排序结果,以及依据所述排序结果,将所述Q个中断信息中优先级最高的R个中断信息写入所述第二寄存器,所述R个中断信息用于所述虚拟CPU中断接口在确定所述虚拟机运行后,向所述虚拟机对应的处理器发送所述R个中断信息,R为小于或等于N的正整数。
[0125] 请参考图8,其为本发明实施例所提供的中断控制器的结构示意图。如图所示,该中断控制器包括:
[0126] 存储器80,用于存储一组或多组程序代码;
[0127] 处理器81,与存储器80耦合,用于调用存储器80中存储的程序代码,以执行以下图3所示的方法,具体包括:接收物理设备发送的Q个第一中断信息,Q为大于或者等于1的整数;向虚拟CPU中断接口写入所述Q个中断信息,以使得所述虚拟CPU中断接口在确定所述虚拟机运行后,向所述虚拟机对应的处理器发送所述Q个中断信息。
[0128] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈