CN117112136A - 中断虚拟化的方法、装置、操作系统、设备及存储介质 - Google Patents

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

Info

Publication number
CN117112136A
CN117112136A CN202311087536.7A CN202311087536A CN117112136A CN 117112136 A CN117112136 A CN 117112136A CN 202311087536 A CN202311087536 A CN 202311087536A CN 117112136 A CN117112136 A CN 117112136A
Authority
CN
China
Prior art keywords
interrupt
virtual
virtual machine
register
virtual interrupt
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311087536.7A
Other languages
English (en)
Inventor
田焱
彭元志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kedong Guangzhou Software Technology Co Ltd
Original Assignee
Kedong Guangzhou Software Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kedong Guangzhou Software Technology Co Ltd filed Critical Kedong Guangzhou Software Technology Co Ltd
Priority to CN202311087536.7A priority Critical patent/CN117112136A/zh
Publication of CN117112136A publication Critical patent/CN117112136A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Abstract

本发明实施例提供了一种中断虚拟化的方法、装置、操作系统、设备及存储介质,所述方法包括:当hyperv i sor向第一虚拟机注入虚拟中断时,在运行第一虚拟机的物理CPU中选择一空闲的虚拟中断寄存器为该虚拟中断的虚拟中断寄存器,第一虚拟机为运行在hyperv i sor上任一虚拟机;在选择的虚拟中断寄存器中存储虚拟中断信息时,设置不产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时不产生维护中断;第一虚拟机陷入hyperv i sor时且第一虚拟机已处理完成所述虚拟中断时,hyperv i sor清除该选择的虚拟中断寄存器中内容。本发明的技术方案向虚拟机注入的虚拟中断每次被响应时,不会都产生维护中断,进而减少维护中断产生次数,提高中断虚拟化效率。

Description

中断虚拟化的方法、装置、操作系统、设备及存储介质
技术领域
本发明涉及操作系统领域,尤其涉及一种中断虚拟化的方法、装置、操作系统、设备及存储介质。
背景技术
目前,在计算机虚拟化方案中,通常情况下,虚拟机所接收到的中断都是虚拟中断,即物理中断产生后,首先由hypervisor处理,接着会对虚拟机进行虚拟中断的注入,虚拟机才会接收到虚拟中断并进行中断的处理。
但是,在这个过程中,hypervisor不仅会接收到第一次所产生的物理中断,在虚拟机对虚拟中断进行应答时,hypervisor还会接收到一个维护中断,对注入虚拟中断时所写的List寄存器进行清除处理,这样,每产生一次物理中断,都会额外产生一次维护中断,增加了中断产生次数,从而降低了中断虚拟化效率。
发明内容
有鉴于此,本发明实施例提供了一种中断虚拟化的方法、装置、操作系统、设备及存储介质,用于虚拟化操作系统的中断虚拟化场景。通过在选择的虚拟中断寄存器中设置不产生维护中断的指示信息,使虚拟机在处理虚拟中断时不产生维护中断。相对于现有技术中虚拟机在处理虚拟中断时,额外产生一次维护中断,本发明实施例的技术方案向虚拟机注入的虚拟中断每次被响应时,不会都产生维护中断,进而减少维护中断产生次数,提高中断虚拟化效率。
第一方面,本发明实施例提供了一种中断虚拟化的方法,包括:当hypervisor向第一虚拟机注入虚拟中断时,在运行第一虚拟机的物理CPU中选择一空闲的虚拟中断寄存器为该虚拟中断的虚拟中断寄存器,第一虚拟机为运行在hypervisor上任一虚拟机;在选择的虚拟中断寄存器中存储虚拟中断信息时,设置不产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时不产生维护中断;第一虚拟机陷入hypervisor时且第一虚拟机已处理完成所述虚拟中断时,hypervisor清除该选择的虚拟中断寄存器中内容。
由上,通过在选择的虚拟中断寄存器中设置不产生维护中断的指示信息,使虚拟机在处理虚拟中断时不会都产生维护中断,进而减少维护中断产生次数,提高中断虚拟化效率。
在第一方面的一种可能实施方式中,第一虚拟机陷入hypervisor时且第一虚拟机已处理完成所述虚拟中断时,hypervisor清除该选择的虚拟中断寄存器中内容,包括:在第一虚拟机陷入hypervisor时,hypervisor查询所述物理CPU中虚拟中断寄存器的状态,对非激活的虚拟中断寄存器进行内容清除,使之变为空闲的虚拟中断寄存器,其中,非激活的虚拟中断寄存器对应的虚拟中断已经处理完成。
由上,通过在任何原因的陷入hypervisor时清除所有非激活的虚拟中断寄存器中内容使其变为空闲的虚拟中断寄存器,以被后续新的虚拟中断注入使用。
在第一方面的一种可能实施方式中,hypervisor向第一虚拟机注入的虚拟中断的来源至少包括下列之一:需要第一虚拟机处理的物理中断;第一虚拟机产生的且需要自身处理的虚拟中断;其他虚拟机产生的且需要第一虚拟机处理的核间中断。
由上,本发明实施例的适合各种来源的虚拟中断。
在第一方面的一种可能实施方式中,还包括:在运行第一虚拟机的物理CPU中虚拟中断的写入数目等于该物理CPU的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中设置产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时产生维护中断,其中,所述写入数目为第一虚拟机未处理完成的且信息写入到该物理CPU的对应的虚拟中断寄存器中的虚拟中断的数目。
由上,通过在运行第一虚拟机的物理CPU中虚拟中断的写入数目等于该物理CPU的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中设置产生维护中断的指示信息,从而最后一个空闲或非激活的虚拟中断寄存器能被及时维护,使后续虚拟中断可以及时注入。
在第一方面的一种可能实施方式中,当第一虚拟机不在运行时,运行第一虚拟机的物理CPU的虚拟中断寄存器保存在第一虚拟机的上下文的数据结构中,在虚拟中断注入时对所述的运行第一虚拟机的物理CPU的虚拟中断寄存器的操作为对其在第一虚拟机的上下文对应的数据结构的操作。
由上,通过对运行第一虚拟机的物理CPU的虚拟中断寄存器保存在第一虚拟机的上下文中对应的数据结构操作,使在第一虚拟机不在运行时也能进行本发明的虚拟中断注入。
在第一方面的一种可能实施方式中,当hypervisor运行在ARM结构的芯片上时,虚拟中断寄存器为List寄存器。
由上,本发明的技术方案利用ARM结构的芯片的List寄存器实现本发明的虚拟中断寄存器,实现方案更简单。
第二方面,本发明实施例提供了一种中断虚拟化的装置,包括:寄存器选择模块,用于当hypervisor向第一虚拟机注入虚拟中断时,在运行第一虚拟机的物理CPU中选择一空闲的虚拟中断寄存器为该虚拟中断的虚拟中断寄存器,第一虚拟机为运行在hypervisor上任一虚拟机;维护中断设置模块,用于在选择的虚拟中断寄存器中存储虚拟中断信息时,设置不产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时不产生维护中断;寄存器内容清除模块,用于第一虚拟机陷入hypervisor时且第一虚拟机已处理完成所述虚拟中断时,hypervisor清除该选择的虚拟中断寄存器中内容。
由上,通过在选择的虚拟中断寄存器中设置不产生维护中断的指示信息,使虚拟机在处理虚拟中断时不会都产生维护中断,进而减少维护中断产生次数,提高中断虚拟化效率。
在第二方面的一种可能实施方式中,寄存器内容清除模块具体用于在第一虚拟机陷入hypervisor时,hypervisor查询所述物理CPU中虚拟中断寄存器的状态,对非激活的虚拟中断寄存器进行内容清除,使之变为空闲的虚拟中断寄存器,其中,非激活的虚拟中断寄存器对应的虚拟中断已经处理完成。
由上,通过在任何原因的陷入hypervisor时清除所有非激活的虚拟中断寄存器中内容使其变为空闲的虚拟中断寄存器,以被后续新的虚拟中断注入使用。
在第二方面的一种可能实施方式中,hypervisor向第一虚拟机注入的虚拟中断的来源至少包括下列之一:需要第一虚拟机处理的物理中断;第一虚拟机产生的且需要自身处理的虚拟中断;其他虚拟机产生的且需要第一虚拟机处理的核间中断。
由上,本发明实施例的适合各种来源的虚拟中断。
在第二方面的一种可能实施方式中,维护中断设置模块还用于在运行第一虚拟机的物理CPU中虚拟中断的写入数目等于该物理CPU的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中设置产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时产生维护中断,其中,所述写入数目为第一虚拟机未处理完成的且信息写入到该物理CPU的对应的虚拟中断寄存器中的虚拟中断的数目。
由上,通过在运行第一虚拟机的物理CPU中虚拟中断的写入数目等于该物理CPU的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中设置产生维护中断的指示信息,从而最后一个空闲或非激活的虚拟中断寄存器能被及时维护,使后续虚拟中断可以及时注入。
在第二方面的一种可能实施方式中,当第一虚拟机不在运行时,运行第一虚拟机的物理CPU的虚拟中断寄存器保存在第一虚拟机的上下文的数据结构中,在虚拟中断注入时对所述的运行第一虚拟机的物理CPU的虚拟中断寄存器的操作为对其在第一虚拟机的上下文对应的数据结构的操作。
由上,通过对运行第一虚拟机的物理CPU的虚拟中断寄存器保存在第一虚拟机的上下文中对应的数据结构操作,使在第一虚拟机不在运行时也能进行本发明的虚拟中断注入。
在第二方面的一种可能实施方式中,当hypervisor运行在ARM结构的芯片上时,虚拟中断寄存器为List寄存器。
由上,本发明的技术方案利用ARM结构的芯片的List寄存器实现本发明的虚拟中断寄存器,实现方案更简单。
第三方面,本发明实施例提供了一种操作系统,其所包括的程序被计算机执行时使得所述计算机执行第一方面任一所述方法。
第四方面,本发明实施例提供了一种计算设备,包括:总线;通信接口,其与所述总线连接;至少一个处理器,其与所述总线连接;以及至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行本发明第一方面任一所述实施方式。
第五方面,本发明实施例提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行本发明第一方面任一所述实施方式。
附图说明
图1为本发明的一种中断虚拟化的方法实施例一的流程示意图;
图2A为当虚拟中断寄存器包括产生维护中断的指示信息对应的虚拟中断注入和处理的过程示意图;
图2B为本发明的当虚拟中断寄存器包括不产生维护中断的指示信息对应的虚拟中断注入和处理的过程示意图;
图3为本发明的一种中断虚拟化的方法实施例二的流程示意图;
图4为本发明的一种中断虚拟化的装置实施例一的结构示意图;
图5为本发明的一种中断虚拟化的装置实施例二的结构示意图;
图6为本发明的计算设备实施例的结构示意图。
具体实施方式
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三等”或模块A、模块B、模块C等,仅用于区别类似的对象,或用于区别不同的实施例,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
在以下的描述中,所涉及的表示步骤的标号,如S110、S120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
本发明实施例提供了一种中断虚拟化的方法、装置、操作系统、设备及存储介质,所述方法包括:当hypervisor向第一虚拟机注入虚拟中断时,在运行第一虚拟机的物理CPU中选择一空闲的虚拟中断寄存器为该虚拟中断的虚拟中断寄存器,第一虚拟机为运行在hypervisor上任一虚拟机;在选择的虚拟中断寄存器中存储虚拟中断信息时,设置不产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时不产生维护中断;第一虚拟机陷入hypervisor时且第一虚拟机已处理完成所述虚拟中断时,清除该选择的虚拟中断寄存器中内容。
本发明实施例应用于虚拟化操作系统的中断虚拟化场景,通过在选择的虚拟中断寄存器中设置不产生维护中断的指示信息,使虚拟机在处理虚拟中断时不产生维护中断。相对于现有技术中虚拟机在处理虚拟中断时,额外产生一次维护中断,本发明实施例的技术方案向虚拟机注入的虚拟中断每次被响应时,不会都产生维护中断,进而减少维护中断产生次数,提高中断虚拟化效率。
下面结合图1至图3介绍本发明的方法实施例
图1示出了一种中断虚拟化的方法实施例一的流程,包括步骤S110至S140。
为了便于说明,以hypervisor向第一虚拟机注入虚拟中断为例,第一虚拟机为运行在hypervisor上任一虚拟机。
S110:当hypervisor向第一虚拟机注入虚拟中断且第一虚拟机运行时,在运行第一虚拟机的物理CPU中选择一空闲的虚拟中断寄存器为该虚拟中断的虚拟中断寄存器。
其中,hypervisor向第一虚拟机注入的虚拟中断的来源至少包括下列之一:
需要第一虚拟机处理的物理中断,该物理中断会陷入到hypervisor处理;
第一虚拟机产生的且需要自身处理的虚拟中断,示例地,第一虚拟机的SGI中断等,这些中断都会设置GIC寄存器,进而陷入到hypervisor处理;
其他虚拟机产生的且需要第一虚拟机处理的核间中断,其他虚拟机所处物理cpu的hypervisor在通知第一虚拟机时,会对第一虚拟机所处的hypervisor发送hypervisor核间通信,进而让第一虚拟机陷入hypervisor。
其中,虚拟中断寄存器的状态包括空闲、激活(active)和非激活(inactive)三种状态,空闲状态的虚拟中断寄存器中未写入任何虚拟中断的信息,激活的状态的虚拟中断寄存器中已写入虚拟中断的信息但该虚拟中断还未被处理完成,非激活的状态的虚拟中断寄存器中已写入虚拟中断的信息但该虚拟中断已被处理完成。非激活的状态的虚拟中断寄存器中内容被清除后其变为空闲状态的虚拟中断寄存器。
在一些实施例中,当第一虚拟机不在运行时,所述的运行第一虚拟机的物理CPU的虚拟中断寄存器保存在第一虚拟机的上下文的数据结构中,所述的运行第一虚拟机的物理CPU为该第一虚拟机被调用时运行的物理CPU。当第一虚拟机不在运行时,本发明各实施例对运行第一虚拟机的物理CPU的虚拟中断寄存器的操作也就是在第一虚拟机的上下文中虚拟中断寄存器对应的数据结构进行操作。
在一些实施例中,在无空闲寄存器时选择一非激活的虚拟中断寄存器,在进行虚拟中断注入之前,清除该非激活的虚拟中断寄存器的内容,使之变为空闲的虚拟中断寄存器,以供本步骤的选择。
S120:在选择的虚拟中断寄存器中存储所注入的虚拟中断的信息时,设置不产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时不产生维护中断。
其中,在选择的虚拟中断寄存器中注入的虚拟中断时就是向选择的虚拟中断寄存器存储所注入的虚拟中断的信息,使第一虚拟机根据该选择的虚拟中断寄存器中的信息响应该虚拟中断。
在一些实施例中,在运行第一虚拟机的物理CPU中虚拟中断的写入数目等于该物理CPU的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中设置产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时产生维护中断,其中,所述写入数目为第一虚拟机未处理完成的且信息写入到该物理CPU的对应的虚拟中断寄存器中的虚拟中断的数目。
在一些实施例中,当hypervisor运行在ARM结构的芯片上时,虚拟中断寄存器为List寄存器。在List寄存器设置有比特位,用于指示是否产生维护中断。第一虚拟机处理完虚拟中断后,会通过硬件把其对应的List寄存器设置为非激活状态。
S130:第一虚拟机响应该虚拟中断,且在响应过程不产生维护中断。
其中,第一虚拟机处理虚拟中断时根据该虚拟中断对应的虚拟中断寄存器中的是否产生维护中断的指示信息来确定是否产生维护中断,维护中断用于清除该对应的虚拟中断寄存器中内容。
图2A示出了当虚拟中断寄存器包括产生维护中断的指示信息对应的虚拟中断注入和处理的过程示意图。其中,第一虚拟机在相应该虚拟中断时产生维护中断。
图2B示出了当虚拟中断寄存器包括不产生维护中断的指示信息对应的虚拟中断注入和处理的过程示意图。其中,第一虚拟机在相应该虚拟中断时你产生维护中断,图2B为本实施例的效果,虚拟机在相应虚拟中断时并不产生维护中断。
S140:第一虚拟机陷入hypervisor时且第一虚拟机已处理完成所述虚拟中断时,hypervisor清除该选择的虚拟中断寄存器中内容。
其中,因为非激活的虚拟中断寄存器包括其上次对应虚拟中断的内容,清除该内容,使之成为空闲的虚拟中断寄存器,以被其他虚拟中断使用。
在一些实施例中,在第一虚拟机陷入hypervisor时(包括任何原因陷入到hypervisor),查询所述物理CPU中虚拟中断寄存器的状态,对非激活的虚拟中断寄存器进行内容清除,使之变为空闲的虚拟中断寄存器,其中,非激活的虚拟中断寄存器对应的虚拟中断已经处理完成。因此,在第一虚拟机完成该虚拟中断的处理后第一虚拟机陷入hypervisor时,hypervisor查询到第一虚拟机完成该虚拟中断,清除该选择的虚拟中断寄存器中内容。
在一些实施例中,第一虚拟机因为新的虚拟中断注入陷入hypervisor时,先执行完本步骤,再从步骤S110开始执行新的虚拟中断注入。
综上,一种中断虚拟化的方法实施例一通过在选择的虚拟中断寄存器中设置不产生维护中断的指示信息,使虚拟机在处理虚拟中断时不产生维护中断。相对于现有技术中虚拟机在处理虚拟中断时,额外产生一次维护中断,本实施例的技术方案向虚拟机注入的虚拟中断每次被响应时,不会都产生维护中断,进而减少维护中断产生次数,提高中断虚拟化效率。
一种中断虚拟化的方法实施例二继承了一种中断虚拟化的方法实施例一,具有一种中断虚拟化的方法实施例一所有优点,并且在运行第一虚拟机的物理CPU中虚拟中断的写入数目等于该物理CPU的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中设置虚拟机产生维护中断的指示信息,从而使之后的虚拟中断被尽快注入。
图3示出了一种中断虚拟化的方法实施例二的流程,包括步骤S210至S260。
为了便于说明,继续以hypervisor向第一虚拟机注入虚拟中断为例,第一虚拟机为运行在hypervisor上任一虚拟机,且hypervisor向第一虚拟机注入虚拟中断时,第一虚拟机为运行状态。
当hypervisor向第一虚拟机注入虚拟中断时,第一虚拟机为非运行状态,各步骤方法与本实施例相同,只是对所选择的虚拟中断寄存器和虚拟中断的写入数目的操作均对在第一虚拟机上下文中对应的数据结构的操作。
S210:当hypervisor向第一虚拟机注入虚拟中断且第一虚拟机运行时,在运行第一虚拟机的物理CPU中选择一空闲的虚拟中断寄存器为该虚拟中断的虚拟中断寄存器。
其中,本步骤的具体方法和优点参考一种中断虚拟化的方法实施例一的步骤S110。
S220:判断运行第一虚拟机的物理CPU中虚拟中断的写入数目是否小于该物理CPU的虚拟中断寄存器的数目。
其中,写入数目为第一虚拟机未处理完成的且信息写入到该物理CPU的对应的虚拟中断寄存器中的虚拟中断的数目。
其中,当运行第一虚拟机的物理CPU中虚拟中断的写入数目小于该物理CPU的虚拟中断寄存器的数目时,即运行第一虚拟机的物理CPU中虚拟中断的写入数目小于该物理CPU的虚拟中断寄存器的数目时,执行步骤S230;当运行第一虚拟机的物理CPU中虚拟中断的写入数目等于该物理CPU的虚拟中断寄存器的数目时,执行步骤S240。
S230:在选择的虚拟中断寄存器中存储所注入的虚拟中断的信息时设置不产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时不产生维护中断。
其中,在运行第一虚拟机的物理CPU中虚拟中断的写入数目小于于该物理CPU的虚拟中断寄存器的数目时,该物理CPU在本次虚拟中断注入后还有剩余的空闲的虚拟中断寄存器可以下次虚拟中断注入选择,在选择的拟中断寄存器中存储所注入的虚拟中断的信息时设置虚拟机不产生维护中断的指示信息,不影响后续的虚拟中断注入的速度。
S240:在选择的虚拟中断寄存器中设置产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时产生维护中断。
其中,在运行第一虚拟机的物理CPU中虚拟中断的写入数目等于该物理CPU的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中设置虚拟机产生维护中断的指示信息,从而使该虚拟中断寄存器对应虚拟中断被响应时,该虚拟中断寄存器被清理释放,使后续的虚拟中断能尽快注入。
S250:第一虚拟机响应该虚拟中断,且在响应过程中根据对应的虚拟中断寄存器中维护中断的指示信息确定是否产生维护中断。
其中,当虚拟中断对应的虚拟中断寄存器中包括产生维护中断的指示信息来,则在响应过程中产生维护中断;当虚拟中断对应的虚拟中断寄存器中包括不产生维护中断的指示信息,则在响应过程中不产生维护中断。
S260:在第一虚拟机陷入hypervisor时,查询所述物理CPU中虚拟中断寄存器的状态,对非激活的虚拟中断寄存器进行内容清除。
其中,因为非激活的虚拟中断寄存器包括其上次对应虚拟中断的内容,清除该内容,使之成为空闲的虚拟中断寄存器,以被其他虚拟中断使用。
其中,第一虚拟机陷入hypervisor包括任何原因陷入到hypervisor,查询对弈的物理CPU中虚拟中断寄存器的状态,对非激活的虚拟中断寄存器进行内容清除,使之变为空闲的虚拟中断寄存器,非激活的虚拟中断寄存器对应的虚拟中断已经处理完成。
其中,第一虚拟机因为新的虚拟中断注入陷入hypervisor时,先执行完本步骤,再从步骤S210开始执行新的虚拟中断注入。
综上,一种中断虚拟化的方法实施例二增加判断运行第一虚拟机的物理CPU中虚拟中断的写入数目是否小于该物理CPU的虚拟中断寄存器的数目时,在小于时,在选择的虚拟中断寄存器中设置虚拟机不产生维护中断的指示信息,在等于时,在选择的虚拟中断寄存器中设置虚拟机产生维护中断的指示信息,从而使虚拟机在处理虚拟中断时不是每次都产生维护中断,减少维护中断产生次数,提高中断虚拟化效率,还使在运行第一虚拟机的物理CPU中虚拟中断的写入数目等于该物理CPU的虚拟中断寄存器的数目之后的虚拟中断能尽快注入。
下面结合图4和图5介绍本发明的装置实施例。
一种中断虚拟化的装置实施例一执行一种中断虚拟化的方法实施例一的所述方法,具有一种中断虚拟化的方法实施例一的所有优点。
图4示出了一种中断虚拟化的装置实施例一的结构,包括:寄存器选择模块410、维护中断设置模块420、虚拟中断响应模块430和寄存器内容清除模块440。
为了便于说明,继续以hypervisor向第一虚拟机注入虚拟中断为例,第一虚拟机为运行在hypervisor上任一虚拟机。其中,寄存器选择模块410、维护中断设置模块420和寄存器内容清除模块440位于hypervisor中,虚拟中断响应模块430位于第一虚拟机中。
寄存器选择模块410用于当hypervisor向第一虚拟机注入虚拟中断且第一虚拟机运行时,在运行第一虚拟机的物理CPU中选择一空闲的虚拟中断寄存器为该虚拟中断的虚拟中断寄存器。其工作原理和优点请参照一种中断虚拟化的方法实施例一的步骤S110。
维护中断设置模块420用于在选择的虚拟中断寄存器中存储所注入的虚拟中断的信息时,设置不产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时不产生维护中断。其工作原理和优点请参照一种中断虚拟化的方法实施例一的步骤S120。
虚拟中断响应模块430用于第一虚拟机响应该虚拟中断,且在响应过程不产生维护中断。其工作原理和优点请参照一种中断虚拟化的方法实施例一的步骤S130。
寄存器内容清除模块440用于第一虚拟机陷入hypervisor时且第一虚拟机已处理完成所述虚拟中断时,hypervisor清除该选择的虚拟中断寄存器中内容。其工作原理和优点请参照一种中断虚拟化的方法实施例一的步骤S140。
一种中断虚拟化的装置实施例二执行一种中断虚拟化的方法实施例二的所述方法,具有一种中断虚拟化的方法实施例二的所有优点。
图5示出了一种中断虚拟化的装置实施例二的结构,包括:寄存器选择模块510、写入数目判断模块520、维护中断设置模块530、虚拟中断响应模块540和寄存器内容清除模块550。
为了便于说明,继续以hypervisor向第一虚拟机注入虚拟中断为例,第一虚拟机为运行在hypervisor上任一虚拟机,且hypervisor向第一虚拟机注入虚拟中断时,第一虚拟机为运行状态。当hypervisor向第一虚拟机注入虚拟中断时,第一虚拟机为非运行状态,各模块的工作原理与本实施例相同,只是对所选择的虚拟中断寄存器和虚拟中断的写入数目的操作均对在第一虚拟机上下文中对应的数据结构的操作。其中,寄存器选择模块510、写入数目判断模块520、维护中断设置模块530和寄存器内容清除模块550位于hypervisor中,虚拟中断响应模块540位于第一虚拟机中。
寄存器选择模块510用于当hypervisor向第一虚拟机注入虚拟中断且第一虚拟机运行时,在运行第一虚拟机的物理CPU中选择一空闲的虚拟中断寄存器为该虚拟中断的虚拟中断寄存器。其工作原理和优点请参照一种中断虚拟化的方法实施例二的步骤S210。
写入数目判断模块520用于判断运行第一虚拟机的物理CPU中虚拟中断的写入数目是否小于该物理CPU的虚拟中断寄存器的数目。其工作原理和优点请参照一种中断虚拟化的方法实施例二的步骤S220。
维护中断设置模块530用于当运行第一虚拟机的物理CPU中虚拟中断的写入数目小于该物理CPU的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中存储虚拟中断信息时设置不产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时不产生维护中断。其工作原理和优点请参照一种中断虚拟化的方法实施例二的步骤S230。
维护中断设置模块530还用于当运行第一虚拟机的物理CPU中虚拟中断的写入数目等于该物理CPU的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中存储虚拟中断信息时设置产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时产生维护中断。其工作原理和优点请参照一种中断虚拟化的方法实施例二的步骤S240。
虚拟中断响应模块540用于第一虚拟机响应该虚拟中断,且在响应过程中根据对应的虚拟中断寄存器中维护中断的指示信息确定是否产生维护中断。其工作原理和优点请参照一种中断虚拟化的方法实施例二的步骤S250。
寄存器内容清除模块550用于在第一虚拟机陷入hypervisor时,查询所述物理CPU中虚拟中断寄存器的状态,对非激活的虚拟中断寄存器进行内容清除。其工作原理和优点请参照一种中断虚拟化的方法实施例二的步骤S260。
本发明实施例还提供了一种操作系统,其所包括的程序被计算机执行时使得所述计算机执行一种中断虚拟化的方法实施例一或一种中断虚拟化的方法实施例二任一所述方法。
本发明实施例还提供了一种计算设备,下面结合图6详细介绍。
该计算设备600包括,处理器610、存储器620、通信接口630、总线640。
应理解,该图所示的计算设备600中的通信接口630可以用于与其他设备之间进行通信。
其中,该处理器610可以与存储器620连接。该存储器620可以用于存储该程序代码和数据。因此,该存储器620可以是处理器610内部的存储单元,也可以是与处理器610独立的外部存储单元,还可以是包括处理器610内部的存储单元和与处理器610独立的外部存储单元的部件。
可选的,计算设备600还可以包括总线640。其中,存储器620、通信接口630可以通过总线640与处理器610连接。总线640可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(EFStended Industry StandardArchitecture,EISA)总线等。所述总线640可以分为地址总线、数据总线、控制总线等。为便于表示,该图中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
应理解,在本发明实施例中,该处理器610可以采用中央处理单元(centralprocessing unit,CPU)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器610采用一个或多个集成电路,用于执行相关程序,以实现本发明实施例所提供的技术方案。
该存储器620可以包括只读存储器和随机存取存储器,并向处理器610提供指令和数据。处理器610的一部分还可以包括非易失性随机存取存储器。例如,处理器610还可以存储设备类型的信息。
在计算设备600运行时,所述处理器610执行所述存储器620中的计算机执行指令执行各方法实施例的操作步骤。
应理解,根据本发明实施例的计算设备600可以对应于执行根据本发明各实施例的方法中的相应主体,并且计算设备600中的各个模块的上述和其它操作和/或功能分别为了实现本方法实施例各方法的相应流程,为了简洁,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本方法实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述译码方法的全部或部分步骤。而前述的存储介质包括,U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行各方法实施例的操作步骤。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括,具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,均属于本发明保护范畴。

Claims (10)

1.一种中断虚拟化的方法,其特征在于,包括:
当hypervisor向第一虚拟机注入虚拟中断时,在运行第一虚拟机的物理CPU中选择一空闲的虚拟中断寄存器为该虚拟中断的虚拟中断寄存器,第一虚拟机为运行在hypervisor上任一虚拟机;
在选择的虚拟中断寄存器中存储虚拟中断信息时,设置不产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时不产生维护中断;
在第一虚拟机陷入hypervisor时且第一虚拟机已处理完成所述虚拟中断时,hypervisor清除该选择的虚拟中断寄存器中内容。
2.根据权利要求1所述方法,其特征在于,在第一虚拟机陷入hypervisor时且第一虚拟机已处理完成所述虚拟中断时,hypervisor清除该选择的虚拟中断寄存器中内容,具体包括:
在第一虚拟机陷入hypervisor时,hypervisor查询所述物理CPU中虚拟中断寄存器的状态,对非激活的虚拟中断寄存器进行内容清除,使之变为空闲的虚拟中断寄存器,其中,非激活的虚拟中断寄存器对应的虚拟中断已经处理完成。
3.根据权利要求1所述方法,其特征在于,hypervisor向第一虚拟机注入的虚拟中断的来源至少包括下列之一:
需要第一虚拟机处理的物理中断;
第一虚拟机产生的且需要自身处理的虚拟中断;
其他虚拟机产生的且需要第一虚拟机处理的核间中断。
4.根据权利要求1所述方法,其特征在于,还包括:
在运行第一虚拟机的物理CPU中虚拟中断的写入数目等于该物理CPU的虚拟中断寄存器的数目时,在选择的虚拟中断寄存器中设置产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时产生维护中断,其中,所述写入数目为第一虚拟机未处理完成的且信息写入到该物理CPU的对应的虚拟中断寄存器中的虚拟中断的数目。
5.根据权利要求1所述方法,其特征在于,当第一虚拟机不在运行时,所述的运行第一虚拟机的物理CPU的虚拟中断寄存器的内容保存在第一虚拟机的上下文的数据结构中,在虚拟中断注入时对所述的运行第一虚拟机的物理CPU的虚拟中断寄存器的操作为对其在第一虚拟机的上下文对应的数据结构的操作。
6.根据权利要求1所述方法,其特征在于,当hypervisor运行在ARM结构的芯片上时,虚拟中断寄存器为List寄存器。
7.一种中断虚拟化的装置,其特征在于,包括:
寄存器选择模块,用于当hypervisor向第一虚拟机注入虚拟中断时,在运行第一虚拟机的物理CPU中选择一空闲的虚拟中断寄存器为该虚拟中断的虚拟中断寄存器,第一虚拟机为运行在hypervisor上任一虚拟机;
维护中断设置模块,用于在选择的虚拟中断寄存器中存储虚拟中断信息时,设置不产生维护中断的指示信息,使第一虚拟机在处理该虚拟中断时不产生维护中断;
寄存器内容清除模块,用于第一虚拟机陷入hypervisor时且第一虚拟机已处理完成所述虚拟中断时,清除该选择的虚拟中断寄存器中内容。
8.一种操作系统,其特征在于,其所包括的程序执行权利要求1至6任一所述方法。
9.一种计算设备,其特征在于,包括:
总线;
通信接口,其与所述总线连接;
至少一个处理器,其与所述总线连接;以及
至少一个存储器,其与所述总线连接并存储有程序指令,所述程序指令当被所述至少一个处理器执行时使得所述至少一个处理器执行权利要求1至6任一所述方法。
10.一种计算机可读存储介质,其特征在于,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行权利要求1至6任一所述方法。
CN202311087536.7A 2023-08-25 2023-08-25 中断虚拟化的方法、装置、操作系统、设备及存储介质 Pending CN117112136A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311087536.7A CN117112136A (zh) 2023-08-25 2023-08-25 中断虚拟化的方法、装置、操作系统、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311087536.7A CN117112136A (zh) 2023-08-25 2023-08-25 中断虚拟化的方法、装置、操作系统、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117112136A true CN117112136A (zh) 2023-11-24

Family

ID=88805251

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311087536.7A Pending CN117112136A (zh) 2023-08-25 2023-08-25 中断虚拟化的方法、装置、操作系统、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117112136A (zh)

Similar Documents

Publication Publication Date Title
JP7313381B2 (ja) ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング
US20140223233A1 (en) Multi-core re-initialization failure control system
JP7039631B2 (ja) アクセスリクエストを管理するための方法、装置、デバイス、および記憶媒体
WO2010045028A1 (en) System and method of indirect register access
US20110219373A1 (en) Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform
CN113918101B (zh) 一种写数据高速缓存的方法、系统、设备和存储介质
US10152275B1 (en) Reverse order submission for pointer rings
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
US10761822B1 (en) Synchronization of computation engines with non-blocking instructions
US11868780B2 (en) Central processor-coprocessor synchronization
US11237994B2 (en) Interrupt controller for controlling interrupts based on priorities of interrupts
CN113918233A (zh) 一种ai芯片控制方法、电子设备及ai芯片
US10372902B2 (en) Control flow integrity
US20100199067A1 (en) Split Vector Loads and Stores with Stride Separated Words
JP2022554029A (ja) スケジューラキュー割り当てバーストモード
CN117112136A (zh) 中断虚拟化的方法、装置、操作系统、设备及存储介质
CN115777097A (zh) 清除寄存器数据
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
CN112486904A (zh) 可重构处理单元阵列的寄存器堆设计方法及装置
US10051087B2 (en) Dynamic cache-efficient event suppression for network function virtualization
US20090265515A1 (en) Information Processing Apparatus, Information Processing Method, and Computer Program
US20240143392A1 (en) Task scheduling method, chip, and electronic device
CN112559403B (zh) 一种处理器及其中的中断控制器
CN115297169B (zh) 数据处理方法、装置、电子设备及介质
EP3791274A1 (en) Method and node for managing a request for hardware acceleration by means of an accelerator device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination