专利名称:用于控制虚拟机系统中的外部中断的装置的制作方法
技术领域:
本发明涉及用于控制虚拟机系统中的外部中断的机制。
背景技术:
在一般的计算机系统中,设备通过产生中断请求来向系统软件请求服务,该中断请求经由多条中断请求线路被传送到中断控制器。一旦中断控制器确认了一条有效的中断请求线路,它发送中断信号到处理器。作为响应,处理器上的中断控制器接口逻辑判定软件是否准备好接收该中断。如果软件没有准备好接收该中断,则该中断被保持在挂起(pending)状态直至软件准备好。一旦软件被判定为准备好了,则中断控制器接口逻辑请求中断控制器报告哪一个挂起的中断是最高优先级的。中断控制器在不同中断请求线路之间区分优先级,并向处理器确认最高优先级中断请求,该处理器然后将控制流转到处理该中断请求的代码。
在传统的操作系统(OS)中,所有的中断都由被称为OS内核的单个实体来控制。在虚拟机系统中,虚拟机监视器(VMM)应该具有对发生在系统中的各种操作和事件的最终控制权,以提供虚拟机的正确操作并且保护本机免受其它虚拟机的侵害以及保护虚拟机不受彼此的侵害。为了实现这一点,当客户软件访问硬件资源或者引起发生例如中断或者异常的某些事件时,VMM一般接收控制权。因此,在虚拟机系统中,中断一般由VMM控制。
具体而言,当虚拟机中由VMM支持的操作引起系统设备产生中断时,VMM在虚拟机和中断控制器之间进行调解。也就是说,当中断信号出现时,当前运行的虚拟机被中断并且处理器的控制被传递给VMM。VMM当接收到该中断时执行中断控制器的任何必要的操作,并且处理中断或者将该中断递送给合适的虚拟机。
本发明以示例而不是限制的方式通过附图的图形被说明,附图中相似的标号表示类似的部件,这些附图中图1图示了本发明可运行于其中的虚拟机环境的一个实施例;图2是用于在虚拟机环境中处理中断的系统的一个实施例的框图;图3是用于在虚拟机系统中处理中断的方法的一个实施例的流程图;图4是图示了根据本发明的一个实施例在具有优选虚拟机的虚拟机系统中处理中断的框图;图5是用于处理在非优选虚拟机操作过程中发生的中断的方法的一个
发明内容
根据本发明的一个方面,提供一种用于控制虚拟机环境中的外部中断的装置,该装置包括识别逻辑,用于在客户软件的操作过程中识别挂起的中断;管理判定逻辑,用于判定所述中断是否由所述客户软件管理;递送逻辑,用于在所述中断由所述客户软件管理时向所述客户软件递送所述中断;就绪判定逻辑,用于在所述中断不由所述客户软件管理时判定虚拟机监视器是否准备好接收所述系统的控制权;保持逻辑,用于在所述中断不由所述客户软件管理且所述虚拟机监视器没有准备好接收控制权时,保持所述中断挂起;以及转送逻辑,用于在所述中断不由所述客户软件管理且所述虚拟机监视器准备好接收控制权时,向所述虚拟机监视器转送控制权。
具体实施例方式
本发明描述了用于控制虚拟机系统中的外部中断的方法和装置。在以下描述中,为了便于解释,陈述了很多具体细节以提供对本发明的完整的理解。但是对于本领域的技术人员来说显然本发明可以不通过这些具体细节而实现。
以下详细描述的一些部分表现为算法和对计算机系统的寄存器或者存储器中的数据位的操作的符号表示。这些算法描述和表示是本领域的技术人员用于最有效地向本领域的其它技术人员表达他们工作的内容的手段。在这里算法通常被认为是导致期望结果的自洽(self-consistent)的操作序列。所述操作需要对物理量进行物理操纵。通常,尽管不是必须的,这些量具有能够被存储、发送、合并、比较以及以其它方式操纵的电信号或者磁信号的形式。主要由于通用的缘故,将这些信号称为位、值、元素、符号、字符、项、数字等已经被证明是方便的。
但是应该认识到,所有这些以及类似的术语都与适当的物理量相联系,并且只是用来表示这些量的方便的标签。除非另有特殊说明,从以下讨论中显而易见,应该理解贯穿本发明使用了例如“处理”、“计算”、“演算(calculating)”或者“判定”等术语的讨论可以指的是操纵表示为计算机系统寄存器和存储器内的物理(电子)量的数据并将它们转换成类似地表示成计算机系统存储器或者寄存器或者其它这样的信息存储、发送或显示设备内的物理量的计算机系统或者类似的电子计算设备的动作和方法。
在以下对实施例的详细描述中,参照了附图,所述附图通过图示示出了本发明可以实现于其中的具体实施例。在图中,相似的数字描述视图中基本上类似的组成部分。对这些实施例进行了足够详细的描述以使得本领域的技术人员能够实现本发明。也可以利用其它实施例,并且可以在不背离本发明的范围的情况下作出电气上的改变。另外,应该理解本发明的各种实施例尽管不同,但是不一定是相互排斥的。例如,一个实施例中所描述的特定特征、结构或者特性可以被包括在其它实施例中。因此以下详细的描述不应被视为是限制性的,而本发明的范围仅由所附权利要求及其等同物来界定。
图1图示了本发明可以运行于其中的虚拟机环境100的一个实施例。在这个实施例中,裸平台(bare platform)硬件116包括计算平台,该计算平台能够,例如,运行标准操作系统(OS)或者例如VMM 112的虚拟机监视器(VMM)。VMM 112尽管一般用软件实现,但是可以仿真和向更高级软件提供裸机接口。这样的更高级软件可包括标准或者实时OS,可以是具有有限操作系统功能的高度精简的操作环境,可以不包括传统的OS设施等。或者,例如,VMM 112可以运行于另一个VMM内或者运行于其上。VMM和它们典型的特征以及功能是本领域技术人员都了解的,并且能够以例如硬件、软件、固件或者各种技术的组合的方式来实现。
平台硬件116可以是个人电脑(PC)、大型机、手提设备、便携式电脑、机顶盒或者任何其它计算系统。平台硬件116包括处理器118和存储器120。
处理器118可以是能够执行软件的任何类型的处理器,例如微处理器、数字信号处理器、微控制器等。处理器118可以包括用于执行本发明的方法实施例的微码、可编程逻辑或者硬编码逻辑(hardcoded logic)。尽管图1示出了仅仅一个这样的处理器118,但是在该系统中可以有一个或者多个处理器。
存储器120可以是硬盘、软盘、随机访问存储器(RAM)、只读存储器(ROM)、闪存、以上设备的任何组合或者处理器118可读的任何类型的机器介质。存储器120可以存储用于执行本发明的方法实施例的指令和/或数据。
VMM 112对其它软件(即,“客户(guest)”软件)呈现出一个或者多个虚拟机(VM)的抽象,所述虚拟机可对各种客户提供相同或者不同的抽象。图1示出了两个VM 102和114。运行在各个VM上的客户软件可以包括例如客户OS 104或106的客户OS以及各种客户软件应用程序108和110。客户OS 104和106运行于VM 102和114之上,客户OS 104和106中的每一个都希望访问VM 102和114内的物理资源(例如处理器寄存器、存储器以及I/O设备)并且处理包括在VM 102和114的操作过程中由系统设备所产生的中断的各种事件。
在一个实施例中,在VM 102或114的操作过程中所产生的中断可以或者被归类为“特权”事件或者被归类为“无特权”事件。对于特权事件,VMM 112帮助提供客户软件所想要的功能同时对这些特权事件保持最终的控制权。无特权事件不需要由VMM 112来处理,它们由客户软件控制。
在一个实施例中,基于中断控制指示(indicator)的当前值将中断归类为特权的或者无特权的。中断控制指示指定是客户软件还是VMM 112来管理中断。
在一个实施例中,单个中断控制指示(例如,单个位)被用于所有中断。在另一个实施例中,为各个中断类型使用单独的中断控制指示(例如,中断号)。例如,在Pentium IV的指令集构架(ISA)(以下称为IA-32ISA)中,可以有256个中断控制指示(即,256位),每一种可能的可屏蔽硬件中断类型对应一个。在另一些实施例中,可以将单独的中断控制指示用于中断类型组或者用于中断的任何其它组合。
中断控制指示一般不能被VM 102和114所访问和/或修改。在一个实施例中,VMM 112在将控制权转移给VM 102或114之前设置中断控制指示的值。或者,VM 102和114中的每一个都与被设置为预定值的不同(组)中断控制指示相联系。
在一个实施例中,所述一个或多个中断控制指示被存储于虚拟机控制结构(VMCS)122中,该虚拟机控制结构可以存在于存储器120(如图1所示)中,或者处理器118、存储器120和处理器118的组合或者任何其它存储单元中。尽管图1中只示出了一个这样的VMCS,不同客户软件可以通过利用来自不同VMCS镜像的数据被控制。应该认识到任何其它数据结构(例如,芯片上(on-chip)高速缓存、文件、查询表等)可以被用来存储中断控制指示而不失一般性。中断控制指示可以是控制向量中的位字段,或者可以是存储于VMCS的单独域中的位或者位图。
或者,在一个实施例中,所述一个或多个中断控制指示被存储于一个或多个机器寄存器或者存储器120中。
如果中断产生在客户软件的操作过程中,则参考(consult)适当的中断控制指示以判定该中断是否由客户软件管理。如果该判定是肯定的,那么该中断将由客户软件管理。否则,该中断将由VMM 112管理。
在一个实施例中,如果中断由VMM 112管理,则控制权被转移给VMM 112。VM 102或104与VMM 112之间的控制权的转移可通过任何本领域公知的机制来实现。在控制权被转移到VMM 112之后对中断的处理将在下面详细描述。
在一个实施例中,如果中断由客户软件管理,那么控制权属于客户软件。如果当前正在执行的软件准备好要接收中断,则中断会被递送给客户软件,下面将更详细地进行描述。
图2是用于在虚拟机环境中处理中断的系统200的一个实施例的框图。
参照图2,设备214(例如,I/O设备)通过产生中断请求向系统软件请求服务,该中断请求经由一个或多个中断请求线路216被传送到中断控制器212。一旦中断控制器212确认了有效的中断请求线路210,它发送中断信号210到CPU 202。在一个实施例中,可以有不止一个到CPU 202的中断信号线路210,或者作为替代,可以通过总线消息或者通过任何其它通信机制或协议来递送该中断“信号”。
响应于来自中断控制器212的有效中断信号210,中断控制器接口逻辑204判定哪个软件具有对该中断的控制权。如果中断发生在VMM的操作过程中,则该中断无条件地由VMM管理。或者,如果该操作发生在客户软件的操作过程中,则中断控制器接口逻辑204判定是客户软件还是VMM管理该中断。
在一个实施例中,该判定取决于存储在VMCS 208中的中断控制指示的当前值。该中断控制指示指定是客户软件还是VMM管理该中断。如上所述,一个或多个中断控制指示可以用于这些中断。如果使用了不止一个控制指示,那么访问与该被处理的中断相联系的特定中断控制指示。
如果中断控制指示指定了该中断要由客户软件管理,那么中断控制器接口逻辑204再判定客户软件是否准备好接收中断。在一个实施例中,中断控制器接口逻辑204基于对中断标记206的参考作出该判定,所述中断标记206当客户软件接受中断的能力状态改变时可以被客户软件更新。例如,在IA-32ISA中,EFLAGS寄存器包含有IF中断标记位,该标记位部分地控制了是否中断会被递送给该软件(在IA-32 ISA中,其它因素可以阻挡中断,并且这些因素在中断是否会被递送的判定中是必须被考虑的)。中断标记206存在于CPU 202中,在中断控制器接口逻辑204外部或者内部。作为替代,本领域任何已知的其他机制可以被用于判定客户软件是否准备好接受中断。
如果中断控制器接口逻辑204判定客户软件准备好要接收中断,那么它请求中断控制器212确认哪个挂起的中断是最高优先级的并将该最高优先级中断递送给客户软件,这样使得控制流转到与客户软件相联系的中断处理代码的开始。否则,如果客户软件当前没有准备好接收中断,则中断被保持在挂起状态直到客户软件准备好。
如果中断控制指示指定VMM管理该中断,则在一个实施例中,中断控制器接口逻辑204触发向VMM转送控制权。
在另一个实施例中,向VMM转送控制权是以这里被称为监视中断标记(MIF)的中断转送标记的当前值为条件的。也就是说,中断控制器接口逻辑204首先检查MIF的当前值以判定由VMM所管理的中断的到来是否应该引起向VMM转移控制权。MIF以与中断标记206相似的方式工作,指示是否允许中断引起向VMM的转送。在一个实施例中,MIF存在于VMCS 208中并由VMM控制。在另一个实施例中,MIF存在于机器寄存器或者存储器中。如果MIF不要求控制权的转移,则该中断将被挂起并且不会发生控制权的转移。否则,中断控制器接口逻辑204将触发向VMM转移控制权。
在一个实施例中,为具有不同特性的中断维持多个MIF,并且基于中断的特性从这些MIF中选择用于特定中断的MIF。
在一个实施例中,当要求向VMM转移控制权时,向VMM转移控制权之后,中断在中断控制器212处被挂起。在这个实施例中,在紧接在控制权转移之后的时间里,部分地确认了产生中断的设备的中断源标识(identity)(例如,在IA-32 ISA中被称为向量)可能对于VMM来说是未知的。作为控制权转移的一部分,处理器在转移之后将有效的中断标记206清零。转移控制权之后,VMM可以利用中断标记206来使能中断并递送该中断。VMM可以利用本领域任何已知的机制来判定挂起的中断的向量。例如,在IA-32 ISA中,各个不同的中断向量由唯一的中断处理程序(interrupt handler)处理,从而当中断被递送给VMM时确认该中断向量。
在另一个实施例中,中断源标识在向VMM转移控制权之前在中断控制器212处是已知的。在这个实施例中,中断可以与指定该中断源标识的数据一起被递送给VMM。例如,该数据可以在VMCS的一个域中被递送。
图3是用于在虚拟机系统中处理中断的方法300的一个实施例的流程图。该方法可以由可包括硬件(例如,电路、专用逻辑、可编程逻辑、微码等)、软件(例如运行于一般用途的计算机系统或者专用机器上的)或者两者的组合的处理逻辑来完成。
参照图3,方法300开始于处理逻辑确认挂起中断的存在(处理框302)和判定中断是发生在VMM的操作过程中还是客户软件的操作过程中(决定框304)。
如果中断发生在VMM的操作过程中,处理逻辑判定VMM是否准备好接收中断(决定框306)。如果判定是肯定的,那么处理逻辑将该中断递送给VMM(处理框308)。如果判定是否定的,那么处理逻辑不向VMM递送该中断,令该中断挂起(处理框316)。在一个实施例中,处理逻辑利用中断标记(例如,在IA-32 ISA中被称为EFLAGS.IF的中断标记)的当前设置来判定VMM是否准备好接收中断。
如果决定框304处作出的判定是否定的,即,中断发生在客户软件的操作过程中,处理逻辑再判定客户软件是否管理该中断(决定框310)。该判定取决于中断控制指示。在一个实施例中,中断控制指示在每次VMM向客户软件转移控制权时由VMM设置。如上所述,可以有一个或多个中断控制指示,对具体的中断控制指示的选择取决于中断向量或者其它标准。在一个实施例中,每个虚拟机都具有一个单独的中断控制指示。如果使用了不止一个中断控制指示,那么访问与正被处理的中断相联系的中断控制指示。
如果中断控制指示指定客户软件管理该中断,则处理逻辑通过执行如上所述的处理框306、308和316试图将该中断递送给客户软件。
在一个实施例中,如果中断控制指示指定客户软件不管理该中断,则处理逻辑参考这里被称为监视中断标记(MIF)的中断转送标记(interrupttransition flag)并且基于其内容作出决定(决定框314)。如果MIF指示VMM没有准备好接收由中断引起的控制权转移,那么该中断被挂起并且控制权属于客户软件。否则,处理逻辑将控制权转送给VMM(处理框318)。
在另一个实施例(未示出)中,没有使用MIF,并且一旦判定了中断由VMM管理则控制权的转移无条件地发生。
在控制权向VMM转移的过程中,中断标记可以被设置为预定值,不再修改或者根据一些其它的机制而更新。在向VMM转移控制权之后,处理逻辑执行如上所述的处理框306、308和316。
如上所述,在向VMM转移控制权(处理框318)之后,该中断可以被挂起在中断控制器处。如果中断源的标识已知,那么处理逻辑可试图利用指定该中断的源的数据向VMM递送该中断。
在一个实施例中,如果在向VMM转移控制权之后该中断被挂起在中断控制器处,则VMM当其准备好接收中断时更新中断标记。然后处理逻辑向VMM递送该中断。接着VMM可以自己处理该中断。或者,VMM可以评估该中断的性质以判定指派哪个虚拟机去处理该中断,仿真向所指派的虚拟机递送该中断,并向该指派的虚拟机转送控制权,下面将对这些作详细讨论。
在另一个实施例(未示出)中,处理逻辑不向VMM递送中断。作为替代,处理逻辑向VMM提供关于该中断的信息(例如,或者响应于VMM的请求或者作为当向VMM转送控制权时传给VMM的信息的一部分)。基于该信息,VMM判定指派哪个虚拟机来处理该中断,以及是向该虚拟机转移控制权(这里中断将象以上所述的那样被递送)还是仿真向该虚拟机递送该中断,并且然后向该虚拟机转移控制权。
注意当中断被挂起时,方法300将被不断地重复直至该中断被递送给VMM或者客户软件,或者该中断不再挂起。
在一个实施例中,虚拟机系统包括优选的虚拟机和一个或多个非优选虚拟机。该优选虚拟机被指派去处理所有由系统设备产生的中断。非优选虚拟机被指派完成除了中断处理以外的操作(例如,各种计算、加密、解密等)。图4是根据本发明的一个实施例图示了在具有优选虚拟机的虚拟机系统中处理中断的框图。
参照图4,VM1 404是在系统400中管理所有中断的优选虚拟机。VM2 406是在该系统400中管理不涉及中断处理的操作的非优选虚拟机。尽管图4仅示出了一个非优选的VM(例如,VM2 406),但是在系统中可以有不止一个非优选VM。VMM 402知道VM1 404是优选虚拟机。当向VM1 404转移控制权时,VMM 402将中断控制指示设置为指示VM1404管理所有中断的值。其后,当在VM1 404的操作过程中发生中断时,中断控制器接口逻辑参考适当的中断控制指示,判定该中断由VM1 404管理,并且当VM1 404准备好接收中断时向VM1 404递送该中断。
当向VM2 406转移控制权时,VMM 402将中断控制指示(或多个中断控制指示中的每一个)设置为指示VM2 406不管理任何中断的值。其后,当在VM2 406的操作过程中发生中断时,中断控制器接口逻辑参考适当的中断控制指示,判定VM2 406不管理该中断,并且触发向VMM 402转移控制权。另外,在一个实施例中,在向VMM 402转送控制权的过程中,中断控制器接口逻辑将中断标记设置为指示所有中断被屏蔽的值(例如,将中断标记设置为0),从而防止向VMM 402递送中断。在另一个实施例中,中断标记可以被设置为预定值或者从虚拟机控制结构(VMCS)读取到的值。
当控制权被转送到VMM 402时,VMM 402被通知该次转移的起因是一个挂起的中断。VMM 402知道所有中断要由VM1 404处理,其修改中断控制指示以允许VM1 404管理所有中断并向VM1 404转移控制权。如果在VM1 404接收到控制权之后,中断标记指示VM1 404准备好接收中断,那么中断控制器接口逻辑将从中断控制器处取得最高优先级中断并将该最高优先级中断递送给VM1 404。否则,VM1 404将在其准备好接收中断时尽快更新中断标记。当VM1 404准备好接收中断,中断控制器接口逻辑将从控制器处取得最高优先级中断,并且将该最高优先级中断递送给VM1 404。
在另一个实施例中,如以上结合图3所述的那样,在从VM2 406向VMM转送控制权之前参考监视中断标记(MIF)。
图5是用于处理发生在非优选虚拟机的操作过程中的中断的方法500的一个实施例的流程图。该方法可以由处理逻辑来完成,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微码等)、软件(例如运行在一般用途的计算机系统或者专用机器之上的)或者两者的组合。
参照图5,方法500开始于处理逻辑确认和处理非优选虚拟机的操作过程中挂起中断的出现(例如,如图3所示的),引起向VMM转移控制权(处理框502)。接着,VMM调用优选虚拟机并将中断控制指示设置为允许该优选虚拟机管理中断的值(处理框508)。
在调用优选VM之后,如果中断还是挂起的(框510),则处理逻辑作出关于优选虚拟机是否准备好接收中断(即,参考中断标记和/或其它机器状态来判定它是否指示中断没有被屏蔽)的判定(决定框514)。如果该判定是肯定的,那么处理逻辑向客户软件递送该中断(处理框518)。如果客户没有准备好接收中断,那么该中断被挂起(处理框516)并且重复评估准备情况(返回处理框510)。
在一个实施例中,VMM任何时候都不消除对中断的屏蔽(即,它不将中断标记改变成指示它可以接受中断)。在另一个实施例(未示出)中,VMM可以消除对中断的屏蔽。如果当VMM正在执行时中断是挂起的并且该中断没有被中断标记所屏蔽,则该中断将被递送给VMM。VMM当优选VM准备好接收中断时仿真向其递送该中断并且向该优选VM转移控制权。
图6是用于在其中中断可以由不止一个虚拟机或者由VMM处理的虚拟机系统中处理中断的方法600的一个实施例的流程图。该方法可以由处理逻辑完成,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微码等)、软件(例如运行于一般用途的计算机系统或者专用机器之上的)或者两者的组合。
参照图6,方法600开始于处理逻辑(在处理框602中)由于挂起的中断而已经或者将中断递送给VMM(例如,如图3的处理框308中那样)或者将控制权转送给VMM(例如,如图3的处理框318中那样)之后。
接着,VMM中的处理逻辑判定中断源的标识(处理框606)。例如,在一个实施例中,VMM可以完成各种存储器或者输入--输出操作以从中断控制器或者输入/输出设备获得该中断源的标识(例如,向量)。在其它一些实施例中,其中在由挂起的中断引起的向VMM转送之后中断被挂起在中断控制器处,VMM可以消除对中断的屏蔽,允许处理器向VMM递送该中断。如上所述,向VMM递送该中断可以提供关于该中断的源的信息(例如,在IA-32 ISA中向其递送中断的中断处理程序可以判定中断源)。也就是说,当由挂起的中断引起中断被递送给VMM或者控制权从客户软件被转送给VMM时,VMM可以指定该中断需要由特定虚拟机处理。
接着,VMM判定中断是否由VMM直接处理(处理框608)。该判定可以取决于该中断是源自由VMM管理的设备还是虚拟机(例如,VMM可以管理所有虚拟机的硬盘,而视频采集卡可能由特定虚拟机来管理)。如果在决定框608作出的该判定是肯定的,那么VMM为该中断服务(处理框610)并且方法600结束。
如果处理框608中的判定是否定的,那么VMM判定哪个虚拟机应该为该中断服务(处理框612)。然后,当该虚拟机准备好接收中断时,VMM仿真向虚拟机递送该中断并且将控制权转送给该虚拟机(处理框614)。
这样,对用于在所述虚拟机系统中处理中断的方法和装置已经作了描述。应该理解,以上描述是示例性的,而不是限制性。通过阅读和理解以上描述,很多其它实施例对本领域的技术人员将是显而易见的。所以本发明的范围应该参照所附权利要求及其等同物来确定。
权利要求
1.一种用于控制虚拟机环境中的外部中断的装置,包括识别逻辑,用于在客户软件的操作过程中识别挂起的中断;管理判定逻辑,用于判定所述中断是否由所述客户软件管理;递送逻辑,用于在所述中断由所述客户软件管理时向所述客户软件递送所述中断;就绪判定逻辑,用于在所述中断不由所述客户软件管理时判定虚拟机监视器是否准备好接收所述系统的控制权;保持逻辑,用于在所述中断不由所述客户软件管理且所述虚拟机监视器没有准备好接收控制权时,保持所述中断挂起;以及转送逻辑,用于在所述中断不由所述客户软件管理且所述虚拟机监视器准备好接收控制权时,向所述虚拟机监视器转送控制权。
2.如权利要求1所述的装置,其中所述管理判定逻辑读取与所述中断相联系的中断控制指示来判定所述中断是否由所述客户软件管理。
3.如权利要求2所述的装置,其中所述中断控制指示存储于虚拟机控制结构、机器寄存器和存储器中的至少一者中。
4.如权利要求2所述的装置,其中所述中断控制指示是基于所述中断的特性从多个中断控制指示中选择的。
5.如权利要求1所述的装置,其中所述保持逻辑还在所述中断由所述客户软件管理且所述客户软件没有准备好接收中断时,保持所述中断挂起直到所述客户软件准备好接收中断。
6.如权利要求5所述的装置,其中所述就绪判定逻辑还基于中断标记的值来判定所述客户软件是否准备好接收中断。
7.如权利要求1所述的装置,其中所述就绪判定逻辑读取中断转送标记来判定所述虚拟机监视器是否准备好接收控制权。
8.如权利要求7所述的装置,其中所述中断转送标记是从虚拟机控制结构、机器寄存器和存储器中的至少一者中读取的。
9.如权利要求7所述的装置,其中所述中断转送标记是基于所述中断的特性从多个中断转送标记中选择的。
10.如权利要求1所述的装置,其中所述客户软件与非优选虚拟机相联系。
11.如权利要求10所述的装置,还包括检测逻辑,所述检测逻辑检测优选虚拟机准备好接收中断,其中所述递送逻辑还在所述检测逻辑检测到所述优选虚拟机准备好接收中断时向所述优选虚拟机递送所述中断。
12.如权利要求1所述的装置,还包括标记逻辑,在向所述虚拟机监视器转送控制权时,所述标记逻辑将中断标记设置为指示所述虚拟机监视器没有准备好接收中断的值、指示所述虚拟机监视器准备好接收中断的值和从虚拟机控制结构读取的值中的一个。
全文摘要
本发明提供了一种用于控制虚拟机环境中的外部中断的装置,该装置包括识别逻辑,用于在客户软件的操作过程中识别挂起的中断;管理判定逻辑,用于判定所述中断是否由所述客户软件管理;递送逻辑,用于在所述中断由所述客户软件管理时向所述客户软件递送所述中断;就绪判定逻辑,用于在所述中断不由所述客户软件管理时判定虚拟机监视器是否准备好接收所述系统的控制权;保持逻辑,用于在所述中断不由所述客户软件管理且所述虚拟机监视器没有准备好接收控制权时,保持所述中断挂起;以及转送逻辑,用于在所述中断不由所述客户软件管理且所述虚拟机监视器准备好接收控制权时,向所述虚拟机监视器转送控制权。
文档编号G06F9/455GK1801100SQ20051013597
公开日2006年7月12日 申请日期2003年11月17日 优先权日2002年12月11日
发明者史蒂文·M·贝内特, 迈克尔·科祖克, 吉尔伯特·奈格, 埃里克·科塔-罗布尔斯, 斯塔林塞尔瓦拉·杰亚辛格, 阿兰·卡希, 理查德·乌利希 申请人:英特尔公司