中断虚拟化的方法、装置、操作系统、设备及存储介质与流程

文档序号:36180634发布日期:2023-11-29 18:25阅读:26来源:国知局
中断虚拟化的方法与流程

本发明涉及操作系统领域,尤其涉及一种中断虚拟化的方法、装置、操作系统、设备及存储介质。


背景技术:

1、目前,在计算机虚拟化方案中,通常情况下,虚拟机所接收到的中断都是虚拟中断,即物理中断产生后,首先由hypervisor处理,接着会对虚拟机进行虚拟中断的注入,虚拟机才会接收到虚拟中断并进行中断的处理。

2、但是,在这个过程中,hypervisor不仅会接收到第一次所产生的物理中断,在虚拟机对虚拟中断进行应答时,hypervisor还会接收到一个维护中断,对注入虚拟中断时所写的list寄存器进行清除处理,这样,每产生一次物理中断,都会额外产生一次维护中断,增加了中断产生次数,从而降低了中断虚拟化效率。


技术实现思路

1、有鉴于此,本发明实施例提供了一种中断虚拟化的方法、装置、操作系统、设备及存储介质,用于虚拟化操作系统的中断虚拟化场景。通过在选择的虚拟中断寄存器中设置不产生维护中断的指示信息,使虚拟机在处理虚拟中断时不产生维护中断。相对于现有技术中虚拟机在处理虚拟中断时,额外产生一次维护中断,本发明实施例的技术方案向虚拟机注入的虚拟中断每次被响应时,不会都产生维护中断,进而减少维护中断产生次数,提高中断虚拟化效率。

2、第一方面,本发明实施例提供了一种中断虚拟化的方法,包括:当hypervisor向第一虚拟机注入虚拟中断时,在运行第一虚拟机的物理cpu中选择一空闲的虚拟中断寄存器为该虚拟中断的虚拟中断寄存器,第一虚拟机为运行在hypervisor上任一虚拟机;在选择的虚拟中断寄存器中存储虚拟中断信息时,设置不产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时不产生维护中断;第一虚拟机陷入hypervisor时且第一虚拟机已处理完成所述虚拟中断时,hypervisor清除该选择的虚拟中断寄存器中内容。

3、由上,通过在选择的虚拟中断寄存器中设置不产生维护中断的指示信息,使虚拟机在处理虚拟中断时不会都产生维护中断,进而减少维护中断产生次数,提高中断虚拟化效率。

4、在第一方面的一种可能实施方式中,第一虚拟机陷入hypervisor时且第一虚拟机已处理完成所述虚拟中断时,hypervisor清除该选择的虚拟中断寄存器中内容,包括:在第一虚拟机陷入hypervisor时,hypervisor查询所述物理cpu中虚拟中断寄存器的状态,对非激活的虚拟中断寄存器进行内容清除,使之变为空闲的虚拟中断寄存器,其中,非激活的虚拟中断寄存器对应的虚拟中断已经处理完成。

5、由上,通过在任何原因的陷入hypervisor时清除所有非激活的虚拟中断寄存器中内容使其变为空闲的虚拟中断寄存器,以被后续新的虚拟中断注入使用。

6、在第一方面的一种可能实施方式中,hypervisor向第一虚拟机注入的虚拟中断的来源至少包括下列之一:需要第一虚拟机处理的物理中断;第一虚拟机产生的且需要自身处理的虚拟中断;其他虚拟机产生的且需要第一虚拟机处理的核间中断。

7、由上,本发明实施例的适合各种来源的虚拟中断。

8、在第一方面的一种可能实施方式中,还包括:在运行第一虚拟机的物理cpu中虚拟中断的写入数目等于该物理cpu的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中设置产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时产生维护中断,其中,所述写入数目为第一虚拟机未处理完成的且信息写入到该物理cpu的对应的虚拟中断寄存器中的虚拟中断的数目。

9、由上,通过在运行第一虚拟机的物理cpu中虚拟中断的写入数目等于该物理cpu的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中设置产生维护中断的指示信息,从而最后一个空闲或非激活的虚拟中断寄存器能被及时维护,使后续虚拟中断可以及时注入。

10、在第一方面的一种可能实施方式中,当第一虚拟机不在运行时,运行第一虚拟机的物理cpu的虚拟中断寄存器保存在第一虚拟机的上下文的数据结构中,在虚拟中断注入时对所述的运行第一虚拟机的物理cpu的虚拟中断寄存器的操作为对其在第一虚拟机的上下文对应的数据结构的操作。

11、由上,通过对运行第一虚拟机的物理cpu的虚拟中断寄存器保存在第一虚拟机的上下文中对应的数据结构操作,使在第一虚拟机不在运行时也能进行本发明的虚拟中断注入。

12、在第一方面的一种可能实施方式中,当hypervisor运行在arm结构的芯片上时,虚拟中断寄存器为list寄存器。

13、由上,本发明的技术方案利用arm结构的芯片的list寄存器实现本发明的虚拟中断寄存器,实现方案更简单。

14、第二方面,本发明实施例提供了一种中断虚拟化的装置,包括:寄存器选择模块,用于当hypervisor向第一虚拟机注入虚拟中断时,在运行第一虚拟机的物理cpu中选择一空闲的虚拟中断寄存器为该虚拟中断的虚拟中断寄存器,第一虚拟机为运行在hypervisor上任一虚拟机;维护中断设置模块,用于在选择的虚拟中断寄存器中存储虚拟中断信息时,设置不产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时不产生维护中断;寄存器内容清除模块,用于第一虚拟机陷入hypervisor时且第一虚拟机已处理完成所述虚拟中断时,hypervisor清除该选择的虚拟中断寄存器中内容。

15、由上,通过在选择的虚拟中断寄存器中设置不产生维护中断的指示信息,使虚拟机在处理虚拟中断时不会都产生维护中断,进而减少维护中断产生次数,提高中断虚拟化效率。

16、在第二方面的一种可能实施方式中,寄存器内容清除模块具体用于在第一虚拟机陷入hypervisor时,hypervisor查询所述物理cpu中虚拟中断寄存器的状态,对非激活的虚拟中断寄存器进行内容清除,使之变为空闲的虚拟中断寄存器,其中,非激活的虚拟中断寄存器对应的虚拟中断已经处理完成。

17、由上,通过在任何原因的陷入hypervisor时清除所有非激活的虚拟中断寄存器中内容使其变为空闲的虚拟中断寄存器,以被后续新的虚拟中断注入使用。

18、在第二方面的一种可能实施方式中,hypervisor向第一虚拟机注入的虚拟中断的来源至少包括下列之一:需要第一虚拟机处理的物理中断;第一虚拟机产生的且需要自身处理的虚拟中断;其他虚拟机产生的且需要第一虚拟机处理的核间中断。

19、由上,本发明实施例的适合各种来源的虚拟中断。

20、在第二方面的一种可能实施方式中,维护中断设置模块还用于在运行第一虚拟机的物理cpu中虚拟中断的写入数目等于该物理cpu的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中设置产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时产生维护中断,其中,所述写入数目为第一虚拟机未处理完成的且信息写入到该物理cpu的对应的虚拟中断寄存器中的虚拟中断的数目。

21、由上,通过在运行第一虚拟机的物理cpu中虚拟中断的写入数目等于该物理cpu的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中设置产生维护中断的指示信息,从而最后一个空闲或非激活的虚拟中断寄存器能被及时维护,使后续虚拟中断可以及时注入。

22、在第二方面的一种可能实施方式中,当第一虚拟机不在运行时,运行第一虚拟机的物理cpu的虚拟中断寄存器保存在第一虚拟机的上下文的数据结构中,在虚拟中断注入时对所述的运行第一虚拟机的物理cpu的虚拟中断寄存器的操作为对其在第一虚拟机的上下文对应的数据结构的操作。

23、由上,通过对运行第一虚拟机的物理cpu的虚拟中断寄存器保存在第一虚拟机的上下文中对应的数据结构操作,使在第一虚拟机不在运行时也能进行本发明的虚拟中断注入。

24、在第二方面的一种可能实施方式中,当hypervisor运行在arm结构的芯片上时,虚拟中断寄存器为list寄存器。

25、由上,本发明的技术方案利用arm结构的芯片的list寄存器实现本发明的虚拟中断寄存器,实现方案更简单。

26、第三方面,本发明实施例提供了一种操作系统,其所包括的程序被计算机执行时使得所述计算机执行第一方面任一所述方法。

27、第四方面,本发明实施例提供了一种计算设备,包括:总线;通信接口,其与所述总线连接;至少一个处理器,其与所述总线连接;以及至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行本发明第一方面任一所述实施方式。

28、第五方面,本发明实施例提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行本发明第一方面任一所述实施方式。

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