专利名称:使用仿真对物理硬件的运行时替换的制作方法
技术领域:
当前公开的主题涉及计算领域,且更具体而言,涉及计算机虚拟化,但虚拟化只是示例性且非限制性领域。
背景技术:
诸如管理程序等虚拟机监控程序是创建虚拟机的程序,每一个虚拟机带有可由底层物理硬件资源支持的虚拟化硬件资源。当直接将硬件控制接口分配给虚拟机时,该虚拟机通常经由看起来像(对寄存器、卡上RAM等的)存储器访问的方式被给予对硬件的直接控制。然而,当虚拟机没有以及时方式对放弃硬件控制接口的请求作出响应时,可能需要最终从虚拟机上移除硬件控制接口。这一方法存在的问题是,当接口被移除时虚拟机中的设备驱动程序可能正在使用硬件控制接口,并且由此,虚拟机中相关联的驱动程序在试图从先前由硬件支持的存储器位置中读取时可能接收非预期值。例如,存储器访问的非预期丢失可留下现在每一字节被当作OxFF的存储器位置。非预期值可能导致子驱动程序崩溃、循环、或死锁。另一问题是虚拟处理器可能在任何两个指令之间的边界上被暂停,并且难以编写以及测试处理在任何这样的任意指令边界处的硬件移除的驱动程序。真实物理处理器通常以指令在其中被快速执行并且没有中断的模式操作。由此,本领域中需要解决上述问题的其他技术。
发明内容
此处公开了用于用支持机制来替换支持与虚拟机相关联的存储器位置的硬件的各种方法和系统。该支持机制可具有表现为包含便于虚拟机中的驱动程序的数据的存储器位置,通常包含如果从存储器中读取则硬件将返回的内容。通过提供这样的支持机制,驱动程序可以低得多的频率来检查硬件移除,从而使得驱动程序更容易编写和测试。即使虚拟机移动到不包含与最近从虚拟机中移除的硬件等效的任何硬件的不同物理机器,从存储器位置返回的数据映像现在也可以与虚拟机一起移动。除了上述方面,构成本发明一部分的权利要求、附图、以及文本中描述了其他方面本领域技术人员将理解,本发明的一个或多个方面可包括但不限于用于实现本发明的本文所述方面的电路和/或编程;该电路和/或编程实质上可以是被配置成实现本文所述方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。应当注意,提供本概述是为了以简化的形式介绍下面在详细描述中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
以上的概述以及以下的详细描述在结合附图阅读时能更好地理解。为例示本发明,示出了本发明的各方面。然而,本发明不限于所讨论的各特定方面。包括以下附图图Ia示出了具有包括多个虚拟处理器以及对应的客操作系统的多个虚拟机的虚拟机环境;虚拟机由可包括调度器和其他组件的虚拟化层来维护,其中虚拟化层虚拟化多个虚拟机的硬件;图Ib示出了表示计算机系统中用于虚拟化环境的硬件和软件体系结构的逻辑分层的框图;图Ic描绘了其中可实现本发明的各方面的示例计算机系统;图2示出了示例性虚拟化计算系统;图3示出了替换虚拟化计算系统;图4描绘了示出输入/输入(I/O)空间和存储器映射的I/O(MMIO)的示例性系统框图,例如它与外围组件互连(PCI)设备有关;图5是示出随机存取存储器(RAM)可以驻留在其中的地址空间的示例性框图;图6示出了用于维护对存储器区域的可访问性的操作过程的示例,该存储器区域对应于驻留在虚拟机环境中的驱动程序的硬件设备;图7示出了用于维护对存储器区域的可访问性的操作过程的示例,该存储器区域对应于驻留在虚拟机环境中的驱动程序的硬件设备;图8示出了用于维护对存储器区域的可访问性的操作过程的示例,该存储器区域对应于驻留在虚拟机环境中的驱动程序的硬件设备;图9描绘了用于维护对存储器区域的可访问性的示例性操作过程,该存储器区域对应于驻留在虚拟机环境中的驱动程序的硬件设备;图10描绘了用于维护对存储器区域的可访问性的示例性操作过程,该存储器区域对应于驻留在虚拟机环境中的驱动程序的硬件设备;图11示出了承载参考以上图1-10讨论的计算机可执行指令的计算机可读介质。
具体实施例方式概括的虚拟机在以下描述和附图中描述了某些具体细节,以提供对本发明的各个实施例的全面理解。通常与计算和软件技术相关联的某些公知细节将不在以下公开中描述,以避免不必要地使本发明的各实施例晦涩难懂。此外,相关领域的普通技术人员可以理解,他们可以无需以下描述的细节中的一个或多个而实现本发明的其它实施例。最后,尽管在以下公开中参考了步骤和序列来描述各个方法,但是如此的描述是为了提供本发明的实施例的清楚实现,且步骤以及步骤序列不应被认为是实现本发明所必需的。应该理解,此处描述的各种技术可以结合硬件或软件,或在适当时结合两者的组合来实现。因此,本发明的方法和装置,或其某些方面或部分,可以采用包含在诸如软盘、 CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(S卩,指令)的形式,其中,当程序代码被加载至诸如计算机等机器并由其执行时,该机器成为用于实施本发明的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。一个或多个程序可以例如,通过使用API、可重用控件等来实现或利用结合本发明描述的过程。这样的程序优选地用高级过程语言或面向对象编程语言来实现,以与计算机系统通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。 在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。图Ia示出了具有包括多个虚拟处理器110、112、114、116以及对应的客操作系统 130、132的多个虚拟机120、121的虚拟机环境100。虚拟机120、121由可包括调度器142和其他组件(未示出)的虚拟化层140维护,其中,虚拟化层140虚拟化多个虚拟机120、121 的硬件150。多个虚拟处理器110、112、114、116可以是底层硬件物理处理器160、162的虚拟对应物。图Ib是表示计算机系统中用于虚拟化环境的硬件和软件体系结构的逻辑分层的框图。在图Ib中,虚拟化程序180直接或间接地在物理硬件体系结构182上运行。虚拟化程序180可以是(a)与主机操作系统并排运行的虚拟机监控程序,(b)具有管理程序组件的主机操作系统,所述管理程序组件执行虚拟化,(c)硬件,或(d)微码。虚拟化程序还可以是与任何操作系统分开运行的管理程序。换言之,管理程序虚拟化程序不需要作为任何操作系统的一部分来运行,也不需要与任何操作系统并排运行。管理程序虚拟化程序相反可在所有操作系统“之下”运行,包括“根分区”。虚拟化程序180虚拟化客硬件体系结构 178(被示为虚线以示出该组件是“分区”或“虚拟机”的事实),即,实际上并不存在而是由虚拟化程序180虚拟化的硬件。客操作系统176在客硬件体系结构178上执行,而软件应用174能够在客操作系统176上执行。在图Ib的虚拟化操作环境中,即使软件应用174被设计成在一般不与主机操作系统和硬件体系结构182兼容的操作系统上运行,该软件应用 174也可在计算机系统中运行。虚拟机通常包含整个操作系统和一组应用,它们一起构成许多过程,其整体可以在虚拟机的上下文中被称为“工作负载”或“过程”。在本发明中,术语“过程”和“工作负载”在虚拟机上下文中可被互换地使用,并且本领域技术人员可以容易地理解,“过程”可指代包括可在虚拟机中被实例化的所有系统和应用的多个过程。接着,图2示出了包括直接在物理计算机硬件202上运行的主机操作系统(主机 OS)软件层204的虚拟化计算系统,其中主机OS 204通过向分别供操作系统A和B (即,212 和214)使用的分区A 208和B 210展示接口来提供对物理计算机硬件202的资源的访问。 这使得主机OS 204能够不被在其上运行的操作系统层212和214注意。同样,为了执行虚拟化,主机OS 204可以是具有本机虚拟化能力的专门设计的操作系统,或另选地它可以是具有用于执行虚拟化的结合的管理程序组件(未示出)的标准操作系统。再次参考图2,主机OS 204之上是两个分区,S卩,分区A 208和分区B 210,前者可以是例如虚拟化的htel 386处理器,而后者可以是例如摩托罗拉680X0处理器系列中的一个的虚拟化版本。在每一个分区208和210中的分别是客操作系统(客0S)A 212和 B 214。在客OS A 212之上运行的是两个应用,S卩,应用A1216和应用A2218,而在客OS B 214之上运行的是应用B1220。对于图2,重要的是注意分区A 208和分区B 214(用虚线示出)是可只作为软件构造存在的虚拟化计算机硬件表示。它们由于专用虚拟化软件的执行而变得可能,该专用虚拟化软件不仅将分区A 208和分区B 210分别呈现给客OS A 212和客OS B 214,而且还执行客OS A 212和客OS B 214间接地与真实物理计算机硬件202交互所需的所有软件步马聚ο图3示出了其中虚拟化由与主机操作系统204” 一起运行的虚拟机监控程序 (VMM) 204'执行的替换虚拟化计算系统。在某些情况下,VMM 204’可以是在主机操作系统 204”上运行并仅通过主机操作系统204”来与计算机硬件202交互的应用。在其他情况下, 诸如图3所示,VMM 204’可替代地包括部分独立的软件系统,其在某些层上经由主机操作系统204”来间接地与计算机硬件202交互,但在其他层上VMM 204’直接与计算机硬件202 交互(类似于主机操作系统直接与计算机硬件交互的方式)。并且在又一些情况下,VMM 204’可包括完全独立的软件系统,其在所有层上直接与计算机硬件202交互(类似于主机操作系统直接与计算机硬件交互的方式)而不利用主机操作系统204”(但仍旧与主机操作系统204”交互以协调对计算机硬件202的使用并避免冲突等)。图4描绘了示出IO空间和匪IO的示例性系统框图,例如它与PCI设备相关。PCI 规范规定了三种地址空间-存储器、输入/输出、以及配置。此处使用术语MMIO来指代PCI 规范中定义的“存储器”,以便将PCI术语“存储器”与RAM区分。框图包括系统总线400、 物理存储器410、处理器420、具有寄存器460的PCI设备430、以及主机-PCI桥设备440。 附连到主机-PCI桥设备440的是PCI总线450,以及附连到PCI总线的是PCI设备430。 PCI设备430在存储器位置包含必须由系统处理器读和写以控制该设备的一个或多个寄存器460。可见,物理存储器地址空间与可以是独立地址空间的IO端口空间可以不同。IO资源可以被转换成匪IO资源,这是为什么IO端口地址空间可以经由存储器映射的IO端口访问来映射的一个原因。参考图5,所示为示出RAM可驻留在其中的地址空间500的图示。如图所示,存储器映射的输入/输出(MMIO)区域510也可以驻留在相同地址空间中。典型的现代基于地址空间的硬件控制接口驻留在这一地址空间的MMIO部分中。系统物理地址空间一般是指物理计算机系统的物理地址空间500,“客物理地址空间”也是一样,客物理地址空间也是指虚拟计算机系统的“物理”地址空间500。然而,客物理地址不必占据RAM的区域,因为客物理地址是虚拟构造。管理程序可以将一些或所有客物理范围映射到真实系统物理地址空间,并且实际上它在实践中频繁地这样做。然而,如当管理程序在获取运行的虚拟机快照的过程中时,也可存在没有被映射到任何地方的客物理地址空间的范围。物理存储器地址空间500通常与IO端口空间分开。分开的IO端口空间可被用于控制较老的设备,并且还可被用于建立以及配置较新的设备,因为PCI配置空间通常经由 IO端口空间来访问。此外,IO端口空间地址通常是16位,而不是32位或64位。用于实现以上提到的分区的所有这些变体仅仅是示例性实现,并且此处没有一样应被解释为将本发明限于任何特定虚拟化方面。使用仿真对物理硬件的替换在此处公开的各种实施例中,支持与虚拟机相关联的存储器位置的硬件可以用支持机制来替换。支持机制可以将存储器位置呈现为看起来包含由虚拟机中驱动程序使用的数据。这样的数据可以通常表示在硬件实际上已被读取时硬件将返回的数据。通过提供这样的支持机制,驱动程序可以低得多的频率来检查硬件移除,从而使得驱动程序更容易编写和测试。即使虚拟机移动到不包含与最近从虚拟机中移除的硬件等效的硬件的不同物理机器,从存储器位置返回的数据映像现在也可以与虚拟机一起移动。
在一个实施例中,当硬件从虚拟机中被移除时,地址空间的硬件控制接口部分可以用便于虚拟机中的驱动程序或由虚拟机中的驱动程序请求的数据和行为来替换。在各种实施例中,当对虚拟机进行保存、快照、实况迁移等等时,便于虚拟机中的驱动程序的数据和行为可以与虚拟机一起移动。例如,可以例如在机器被拆除时保存虚拟机。快照例如可以在虚拟机状态需要被完全表征时发生。虚拟机状态可以包括定义某一时间点的过程或事务所必需的数据。快照可以包括一组状态和数据的副本,就好像它们在所需的时间点那样。在虚拟机会话中,可以通过将整个机器状态转储到支持文件中来执行全系统快照。转储的一些部分可以在写时复制(copy-onirite)的基础上当虚拟机仍在运行时发生。实况迁移是在不同位置和环境之间转移虚拟机的过程。在各种实施例中,代码和数据可以与虚拟机一起移动。例如,代码和数据可以包括链接到虚拟机文件的文件。数据和行为可以成为虚拟机的状态的一部分,直到虚拟机指示不再需要数据和行为。在各种实施例中,可以创建虚拟机可认为是硬件控制接口的一部分的专门的存储器区域,但这实际上由虚拟化系统提供。该专门的存储器区域可以包含虚拟机可以读取以确定硬件接口当前是否可用或硬件接口是否已被移除的存储器位置。这样的存储器读取可以是快速的,并且由此虚拟机中的驱动程序可以在需要时检查硬件接口移除,而不影响系统性能。分配给虚拟机的设备的部分或范围可以变化。例如,可以给予该虚拟机对设备的控制,而排除其他虚拟机。另选地,可以只向虚拟机分配设备上可用的多个接口之间的单个硬件控制接口。如以下进一步描述的,在本发明的各方面中,在从地址空间中移除真实硬件控制接口之后对地址空间的硬件控制接口部分的使用的持续时间可以根据不同的实现而变化。 在一个实施例中,虚拟机中的驱动程序可被配置成在真实硬件控制接口从地址空间中被移除之后尽可能快地停止使用硬件控制接口。在另一实施例中,虚拟机中的驱动程序可以在真实硬件控制接口从地址空间中被移除之后继续无限期地使用硬件控制接口。这一实施例可以进一步结合以下描述的仿真行为。在各种实施例中,如以下进一步描述的,先前由硬件控制接口占据的地址空间部分的特定行为可以被实现。由于可将该状态和数据从一个虚拟机输送到另一虚拟机的简便性,静态数据表示与全仿真之间的这一中间方法可能是合乎需要的。此外,这一方法可能是有利的,因为它不涉及将第三方代码(例如,驱动程序)从一个管理程序外部地输送到另一
管理程序。在一个实施例中,可以实现基本行为的位级仿真。某些示例实施例可以包括i.只读。ii.读取时始终为0。ii.读取时始终为1。iv.读写。v.写入1清除,写入0保留。vi.写入1设置,写入0保留。vii.写入0清除,写入1保留。viii.写入0设置,写入1保留。
ix.首次读取之后清零。χ.首次读取之后设为1。在另一实施例中,可以在硬件接口被移除时提供设备的全仿真。全仿真可以包括在对先前由硬件控制接口占据的地址空间的虚拟机访问的软件中的脚本的或程序性处理。本领域技术人员将容易地理解,可以按照从虚拟机中被移除的硬件控制接口的任意软件实现的仿真行为代理来一般地描述当前描述的机制。当然,这些只是可以由此处讨论的任何其他方面来附加地补充或替代的示例性(且因此是非限制性的)方面。硬件控制接口所驻留的地址空间通常与随机存取存储器(RAM)所驻留的地址空间相同。硬件控制接口还可以驻留在输入/输出(IO)端口空间以及在PCI配置空间中。如果硬件控制接口在RAM地址空间中,则该接口可以由虚拟机中的驱动程序使用普通的存储器访问指令来访问。如果硬件控制接口在IO端口地址空间中,则该接口可以由虚拟机中的驱动程序使用IO端口访问指令或存储器映射的IO端口访问来访问。如果硬件控制接口在 PCI配置空间中,则该接口可以由虚拟机中的驱动程序或直接由虚拟机中的OS经由IO端口访问指令或存储器映射的IO端口访问来访问。此处公开的各种实施例假定硬件控制接口与RAM在相同地址空间中,并且使用存储器读和写来访问硬件控制接口。在硬件控制接口在IO端口地址空间中的各实施例中,则可以使用IN(输入)和OUT(输出)操作而不是读和写。本领域技术人员将容易地认识到,本发明适用于地址空间,而不管用于访问该地址空间的类型或具体指令是什么。出于性能原因,通常期望将基于地址空间的硬件控制接口直接分配给虚拟机。当基于地址空间的硬件设备控制接口被直接分配给虚拟机时,该虚拟机的地址空间的一部分可被映射到由该硬件设备控制接口占据的系统物理地址空间的一部分。这一映射可以经由软件、硬件、或两者的结合来实现。一旦建立了映射,则虚拟机可以经由硬件设备控制接口来控制硬件。热移除是在系统或子系统正操作时对系统组件的非预期移除。从物理机器中对基于地址空间的硬件控制接口的热移除是可存在于许多系统中的能力。然而,对于从虚拟机中移除硬件控制接口通常不能接受热移除,因为在虚拟机中,使用硬件控制接口的驱动程序不能被信任或完全被测试来在被请求时停止使用硬件控制接口而无需花费任意的时间量这样做。在从虚拟机中移除硬件控制接口之前等待虚拟机完成使用硬件控制接口通常不能被接受。如所述的等待虚拟机可以给予虚拟机对移除花费多长时间进行控制,这通常是不期望的。可以使用超时时间段来允许虚拟机在移除移除接口之前完成必要的事务。然而, 如果到达该超时时间并且硬件被移除而没有虚拟机的同意,则当虚拟机中的驱动程序随后试图访问该硬件时,虚拟机可以错误地作出响应或崩溃。由于系统和组件行为的可变性以及不可预见性,一般难以计算已知安全超时值。另外地,即使是相当安全的超时值也可给予虚拟机对移除操作的持续时间的过度控制。在各种实施例中,分配给虚拟机的对设备的控制范围可以变化。在一个实施例中, 可以给予该虚拟机对设备的控制,而排除其他虚拟机。另选地,可以只向虚拟机分配设备上多于一个可用接口之中的单个硬件控制接口。在任一种情况下,虚拟化系统可以通过虚拟化虚拟机的相关地址空间的那些部分来保留对设备的至少某些系统级控制方面的控制。例如,设备的PCI配置空间通常包括虚拟机可以直接查看的字段。PCI配置空间还可包括具有最小虚拟化的虚拟机可直接写入的某些字段。然而,即使该虚拟机被分配了全部设备功能而排除其他虚拟机,诸如基地址寄存器部分等PCI配置空间的某些部分也必须被完全虚拟化。用支持根据PCI特殊兴趣组(SIG)单个根I/O虚拟化以及共享规范的PCI IO虚拟化的设备,硬件本身可提供物理功能和虚拟功能。虚拟功能被设计成可分配给虚拟机,并且不同的虚拟功能可被分配给不同的虚拟机,以及多个虚拟机可在相同时间由多个虚拟功能使用。由此,本领域技术人员可以认识到,本发明可以跨对虚拟机的直接硬件控制接口分配的各种粒度和级别来实现。此处公开的是用于以可在虚拟机中的驱动程序随后访问虚拟机地址空间的被移除部分时使得虚拟机中的驱动程序继续操作的方式来移除硬件控制接口的各种方法和系统。通过继续普通或预期的操作,虚拟机中的驱动程序可以避免由于从硬件移除中产生的非预期读/写操作的错误行为。在硬件控制接口被移除时的典型结果是已经由硬件控制接口占据的虚拟机地址空间部分变成未映射的。安全硬件移除的一个示例性结果可以是可忽略对被移除的地址空间的写操作,以及对被移除的地址空间的读操作可以返回“1”位。在一个实施例中,虚拟机地址空间已由硬件控制接口占据的部分可以被映射到对虚拟机中的驱动程序安全且方便的行为,直到虚拟机中的驱动程序已完成使用硬件控制接口的事务。通过将硬件控制接口映射到对驱动程序安全且方便的行为,实际硬件控制接口可以在需要时从虚拟机中被移除,而无需等待虚拟机中的驱动程序。此外,硬件控制接口可以以比在驱动程序尝试访问硬件控制接口之后虚拟机中的驱动程序将崩溃或进入非预期状态的风险小得多的风险被移除。在又一实施例中,对虚拟机地址空间的经映射的部分的替换行为可以保持与虚拟机相关联,直到虚拟机中的驱动程序已完成对使用硬件控制接口的尝试的这一时间。以上描述的替换行为一般可以包括各种形式的仿真。以下是可以根据本发明来实现的示例性行为。1.按位的行为a.只读。以此行为,数据可以在移除硬件控制接口的时间被确定,并且在该时刻之后不可由虚拟机改变。这可以提供对“始终为0”/ “始终为1”区域的分组的更高效表示。b.读取时始终为0。这一行为可以类似于值始终为0的只读场景。c.读取时始终为1。这一行为可以类似于值始终为1的只读场景。d.读写。以此行为,数据可以在硬件控制接口被移除的时间被初始确定。然而,在该时刻之后数据可以由虚拟机改变。e.写入1清除,写入0保留。设备硬件通常使用这类行为来使得软件能够确认设置了通知位。软件可以通过在设置位的位置中用1来执行存储器写入以确认该设置位。这一行为通常导致当再次读回寄存器时该位被清除。f.写入1设置,写入0保留。在此情况下,硬件和软件可以使用用于软件的这类位来通知硬件(与以上场景相反)。g.写入0清除,写入1保留。这是先前场景的变型。h.写入0设置,写入1保留。这是先前两个场景的变型。i.首次读取之后清零。在某些情况下,硬件可以假定软件仅仅通过软件执行读取的动作来接收通知。
j.首次读取之后设为1。这是先前场景的变型。2.仿真-其他实施例可以在对先前由硬件控制接口占据的地址空间的虚拟机访问的软件中实现脚本的或程序性处理。在各种实施例中,可以实现有限仿真或全仿真。在有限仿真中,仿真的级别可以是足以维持与驱动程序软件不中断的事务,直到驱动程序软件可以完成任何待决操作并且确定硬件控制接口不再存在。仿真的级别可能不足以实际上无限期地继续执行设备的功能。在全仿真中,仿真的级别可以使得虚拟机内的驱动程序继续执行其普通功能。替换行为和行为的当前状态可以继续与虚拟机相关联来作为虚拟机状态的一部分,直到虚拟机中的驱动程序报告它已完成了需要访问硬件控制接口的事务的这一时间。 即使虚拟机移动到不同的主机物理机器、或即使虚拟机被保存到盘并且在稍后时间被还原,替换行为也可以继续与虚拟机相关联。硬件控制接口可以用存储器的专门区域来扩充,该存储器的专门区域包括向运行在虚拟机中的驱动程序指示硬件控制接口是否完全可用并提供完全功能的数据元素。这一存储器的专门区域可以包括存储器的单页。运行在虚拟机中的驱动程序还可以接收指示硬件控制接口已被移除的一个或多个消息。然而,如果虚拟机中的驱动程序需要检查硬件是否存在直到到达驱动程序代码的执行中的特定点,则驱动程序代码可以检查这一数据元素来确定硬件接口是否由实功能支持直到读取数据元素的驱动程序代码中那一点。读取数据元素通常是一快速操作,因此虚拟机中的驱动程序可以频繁地检查而没有过度的性能影响。虚拟机中的驱动程序可以执行一系列寄存器读取,并且检查硬件接口是否仍然被分配给虚拟机。如果否,则驱动程序可以完全忽略读取数据。然而,如果在寄存器读取之后硬件仍然与虚拟机相关联,则虚拟机中的驱动程序可以确定从寄存器中读取的数据实际上是从硬件中读取的并且是有效的。在替换行为是全仿真的情况下,虚拟机中的驱动程序可以继续使用硬件控制接口,并且在某些情况下是无限期地。另选地,驱动程序可以在方便的时间(例如,当驱动程序已完成可能需要对该接口的访问的待决事务时)停止对硬件控制接口的使用。如果替换行为是有限的硬件控制接口仿真,则在一时间段之后(例如,当即使事务仍然待决也可以安全地停止该使用时)驱动程序可以停止对硬件控制接口的使用。通常,这一时间段应在驱动程序已完成所需事务之后尽可能的快。在任一种情况下,当虚拟机已经被移动到实际上不具有与相同硬件控制接口相关联的硬件设备的不同物理机器之后,虚拟机中的驱动程序仍然可以访问硬件控制接口。如果提供了全仿真,则可能需要到相同底层存储设备、网络、或其他资源的连接性以便经由全硬件仿真继续提供设备功能。本领域技术人员将认识到,本发明适用于整个设备的分配以及重新分配。此外,一般可以应用本发明而不限于由设备提供的多个硬件控制接口之中的任何特定硬件控制接口。一般可以应用本发明而不管仿真任何特定硬件控制接口所需的特定步骤(或在全仿真的情况下,不管仿真该设备的硬件控制接口以及功能所需的步骤)。以下是示出此处公开的方法的各种实施例的非限制性示例。在一个实施例中,硬件可以不保持当硬件接口被移除时虚拟机需要保留的任何状态。一个示例性配置是以分组丢失是可接受的基于分组的方式来操作的联网接口。在此情况下,虚拟机可以具有或可以不具有到使用相同MAC地址的相同网络的替换路径。在另一示例性配置中,该路径可以被维护在诸如IP地址等较高层。在一个实施例中,可以采取以下硬件移除步骤1.暂停虚拟机的虚拟处理器。2.通过移除从虚拟机地址空间的部分(存储器区域)映射到硬件控制接口的映射来将硬件控制接口从虚拟机中移除。3.可任选地,从硬件控制接口读取需要的任何数据。a.在此示例中,从硬件中读取的数据可以限于需要的数据,以便提供足够的硬件仿真以避免崩溃虚拟机中的驱动程序并且防止虚拟机中的驱动程序开始无效动作(例如, 向其余的虚拟机递送无效数据)。这一有限数据可以包括当前寄存器值的内容等等。数据通常不需要包括分组数据,但可以包括这样的数据。4.设置经仿真的行为。a.在当前示例中,经仿真的行为可以包括来自以上描述的按位行为列表中的行为,每一位具有可能不同的行为。b.经仿真的行为可以变成与虚拟机相关联,并且可以随着虚拟机一起移动,直到虚拟机中的驱动程序报告它已完成对访问硬件控制接口的待决尝试。5.将虚拟机地址空间的部分映射到所需的经仿真的行为。6.改变专门存储区域中的“硬件存在”值以指示该硬件不再存在。7.不暂停虚拟机的虚拟处理器。8.可任选地,将硬件已被移除的消息发送给虚拟机中的驱动程序并且停止访问硬件的尝试。9.最终,虚拟机中的驱动程序可以报告驱动程序已完成访问硬件控制接口的尝试。此时,经仿真的行为可以从虚拟机中被移除。在一个实施例中,硬件可以保持需要保留的状态信息,以便虚拟机继续执行而不中断。这一状态数据可以是比方便虚拟机中的驱动程序所需更多的数据。一个示例是当联网接口正以连接是无损的基于连接的方式来操作时。在这样的情况下,如果连接要保持为建立的且有效的,所发送或接收的数据必须不被丢失,即使当重要的数据当前被存储在硬件设备中。在这一情况下,可以假定虚拟机具有到使用相同MAC地址的相同网络的替换路径(或者,保留连接将无用)。在此情况下,可以向虚拟机中的驱动程序通知硬件将被移除, 使得驱动程序可以在硬件被移除之前尝试从该硬件中提取连接状态数据。虚拟机中的驱动程序随后可以报告何时完成,使得硬件可以被移除。期望尽可能快的提供这一通知。在一个实施例中,在此情况下可以采取以下硬件移除步骤。1.虚拟化系统可以将硬件控制接口将被移除的消息发送给虚拟机中的驱动程序。2.虚拟化系统可以对来自虚拟机中的驱动程序的指示该驱动程序已完成从硬件中提取数据的消息等待预定时间、或第一时间段。当预定时间过期时,或当虚拟化系统从驱动程序接收到该驱动程序已完成从硬件中提取数据的消息时,虚拟化系统可以继续下一步骤。该时间段一般可以通过估计例如完成某一驱动程序所使用的最常见事务的平均时间段来确定。3.暂停虚拟机的虚拟处理器。4.通过移除从虚拟机地址空间的部分(存储器区域)映射到硬件控制接口的映射来将硬件控制接口从虚拟机中移除。
13
5.从硬件控制接口读取任何需要的数据。a.在此实施例中,虚拟机中的驱动程序先前被提供有一预定时间量以从硬件设备中提取数据。然而,虚拟机中的驱动程序可能没有完成数据提取,因为当预定时间段到期时虚拟化系统可能继续移除步骤,而不是无限期地等待虚拟机完成其过程。因此,当稍后不暂停虚拟处理器时,虚拟机中的驱动程序仍然可以尝试访问包含硬件控制接口的虚拟机地址空间的部分。b.在此实施例中,从硬件中读取的数据可以限于需要的数据,以便提供足够的硬件仿真以避免崩溃虚拟机中的驱动程序并且防止虚拟机中的驱动程序开始无效动作(例如,向其余的虚拟机递送无效数据)。这一有限数据可以包括当前寄存器值的内容等等。数据通常不需要包括分组数据,但可以包括这样的数据。6.设置经仿真的行为。a.在这一实施例中,经仿真的行为可以包括来自以上描述的按位行为列表中的行为,每一位具有可能不同的行为。b.经仿真的行为可以变成与虚拟机相关联,并且可以随着虚拟机一起移动,直到虚拟机中的驱动程序报告它已完成对访问硬件控制接口的待决尝试。7.将虚拟机地址空间的部分映射到所需的经仿真的行为。8.改变专门存储区域中的“硬件存在”值以指示该硬件不再存在。9.不暂停虚拟机的虚拟处理器。10.虚拟机中的驱动程序可以在预定定时器到期之后最终报告它已完成了从硬件控制接口中提取状态数据。如果这发生,则可以忽略或丢弃该消息。11.最终,虚拟机中的驱动程序可以报告驱动程序已完成访问硬件控制接口的尝试。此时,经仿真的行为可以从虚拟机中被移除。在另一实施例中,如果在虚拟机外部执行的软件被适当地配置,则该外部软件可以代表虚拟机中的驱动程序来执行从硬件中提取需要的数据所必要的步骤,而无需涉及该驱动程序。即使如在以上示例中状态数据的量和复杂度是显著的并且需要与硬件的有效同步,通过虚拟机外部的软件的数据提取也是可能的。在又一实施例中,硬件控制接口可以用硬件控制接口的全软件仿真来替换。在一个实施例中,可以提供硬件控制接口的完整软件仿真程序。在此情况下,虚拟机中的驱动程序可以继续使用硬件控制接口,就好像该接口代表实际硬件。仿真硬件控制接口的软件可以在仿真硬件控制接口时提供完全范围的功能。本领域技术人员将理解,在此实施例中硬件接口可以用完全仿真来替换,但仿真的具体复杂度和范围可以取决于特定系统配置而变化。这一仿真可以包括通过虚拟机外部执行的代码从硬件中提取状态数据。在此情况下, 所提取的状态数据应足以表示该状态,以便从硬件接口被移除或中断的时刻完全地仿真硬件并且不只是对虚拟机有用的任何状态。此外,可以允许在从硬件中提取状态之前完成当前在硬件中进行的事务或操作。当前公开的各方面可以被实现为系统、方法、驻留在计算机可读介质中的计算机可执行指令等等。由此,任何特定系统、方法、或计算机可读介质的任何公开不限于此,而是延伸到实现所公开的主题的其他方式。图6至图8描绘了当驻留在虚拟机环境中的驱动程序尝试访问与该驻留在虚拟机
14环境中的驱动程序的硬件设备对应的存储器区域时并且当所述硬件设备被配置成从计算环境中被移除时、用于维护对该存储器区域的可访问性的操作过程的示例。该过程可以包括操作600、602、604、以及606。参考图6,操作600开始操作过程,并且在操作602中,该存储器区域的硬件控制接口部分被配置成用由与该硬件控制接口相关联的代码和数据所指示的功能来替换,其中,该功能是在硬件设备已从计算环境中被移除时该驱动程序可理解的。实际代码和数据可能是驱动程序不直接可见的,并且代码可能不直接由虚拟化系统执行。代码和数据可以相反通过以某种方式来被解释或仿真,或以其他方式被包含,以便防止代码采取其预期范围之外的任何行动或读取其预期范围之外的任何数据。代码和数据指定应向虚拟机展示读取和写入虚拟机环境地址的行为。换言之,当虚拟机对相关虚拟机环境地质执行写操作时,代码可能基于由数据表示的状态来对被写的数据执行操作。如果读操作由虚拟机来执行,则代码执行可能基于由数据表示的状态来确定什么值应通过该读取来返回的操作。某些数据可以经由读和写直接对虚拟机可见,但不是所有数据都需要对虚拟机可见。这一可见性可以通过使用读/写子部分来实现,或可以经由“通过”对数据的读或写的代码来实现。与数据的可见部分等效的行为可以通过代码以其他方式实现。该功能在 604被配置成当虚拟机环境被移动到不同计算环境时与该虚拟机环境一起移动。图7示出图6的操作过程600的进一步的实施例。在操作702中,该功能被配置成当虚拟机环境被保存、快照、或实况迁移时与该虚拟机环境一起移动。如以上讨论的,当机器被拆除时可以保存虚拟机。当虚拟机状态需要被完全表征时可以进行快照,并且由此可以对一组状态和数据制作副本,如它们在某一时间点一样。实况迁移是在不同位置和环境之间转移虚拟机的过程。数据和行为可以由此成为虚拟机的状态的一部分,直到虚拟机指示不再需要数据和行为。在操作704,该功能被配置成变成该虚拟机环境的状态的一部分。在706,可以向虚拟机环境独占地分配硬件设备。另选地,在707,虚拟机环境可以与至少一个其他虚拟机环境共享硬件设备。操作708示出将驱动程序配置成在第一时间段之后停止使用该功能。通常,这一时间段应在驱动程序已完成所需事务之后尽可能的快。在709,第一时间段可以允许待决事务的完成。当预定时间到期时,或当虚拟化系统从驱动程序接收到该驱动程序已完成从硬件中提取数据的消息时,虚拟化系统可以继续下一步骤。另选地,操作710示出将驱动程序配置成继续使用该功能第二时间段。在712,第二时间段可以允许继续的使用,直到驱动程序放弃接口。操作713示出该功能向该驱动程序提供按位信息。操作715示出该功能包括借助虚拟化机制的仿真行为。操作720示出虚拟机环境是父虚拟机的子虚拟机。在操作725中, 在用该功能替换存储器区域的硬件控制接口部分之前暂停虚拟处理器。操作730示出用该功能替换存储器区域的硬件控制接口部分。参考图8,在操作802中,虚拟机环境地址被映射到由该功能支持的存储器区域的部分。在操作808中,暂停虚拟处理器,并且在操作813中,当驱动程序报告完成了访问存储器区域的硬件控制接口部分时虚拟机控制接口被移除。在操作814,向驱动程序通知存储器区域的硬件控制接口部分将被替换。在815, 记录硬件设备的状态,在820,状态包括除代码和数据之外的信息。操作825示出当驱动程序完成了访问存储器区域的硬件控制接口部分时等待该驱动程序报告返回。操作830示出从驱动程序接收完成了访问硬件控制接口的报告。操作835示出在虚拟机外部执行的软件可以代表虚拟机中的驱动程序来读取硬件设备的状态,而无需涉及该驱动程序。在操作840,可以提供硬件控制接口的全软件仿真。操作845示出在存储器区域的硬件控制接口内提供存储器子区域,以检查硬件控制接口是否由硬件设备支持、或硬件设备是否已被移除。操作850示出更新存储器子区域以指示当已经替换了存储器区域的硬件控制接口部分时硬件设备已被移除。图9描绘了用于维护对与驻留在虚拟机环境中的驱动程序的硬件设备对应的存储器区域的可访问性的示例性操作过程,包括操作900、902、904、906、908、910、912、以及 914。参考图9,操作900开始操作过程,并且操作902示出将该存储器区域的硬件控制接口部分配置成要用由与该硬件控制接口相关联的代码和数据指示的功能来替换,其中,该功能是在硬件设备已从计算环境中被移除时驱动程序可理解的。在904,该功能可以被配置成当虚拟机环境被移动到不同计算环境时与该虚拟机环境一起移动。操作906示出在存储器区域的硬件控制接口部分内提供硬件设备存在值,以检查硬件控制接口是否由硬件设备支持、或硬件设备是否已被移除。操作908示出在用该功能替换存储器区域的硬件控制接口部分之前暂停虚拟机环境的虚拟处理器。在操作910中,用该功能替换硬件控制接口部分。操作912示出将虚拟机环境地址映射到具有该功能的存储器中的对应地址。继续图10,操作1002示出将硬件设备存在值从存在改变为不存在。在操作1004 中暂停虚拟处理器,以及在操作1006中当驱动程序报告完成了访问硬件控制接口时硬件控制接口被移除。操作1008示出该功能向该驱动程序提供按位信息。任何以上提到的各方面可以在各方法、系统、计算机可读介质、或任何类型的制品中实现。例如,按照图11,计算机可读介质可以在其上存储用于维护对与驻留在虚拟机环境中的驱动程序的硬件设备的控制接口对应的存储器区域的可访问性的计算机可执行指令。 这一介质可以包括用于将存储器区域的硬件控制接口部分配置成要用由与该硬件控制接口相关联的代码和数据所指示的功能来替换的第一指令子集1110,其中,该功能是在硬件设备已从计算环境中被移除时驱动程序可理解的,以及用于将功能配置成当虚拟机环境被移动到不同计算环境时与该虚拟机环境一起移动的第二指令子集1112。本领域技术人员将理解,可以使用其他的指令集来捕捉此处公开的各种其他方面,并且三个当前公开的指令子集可以按照当前公开而在细节上变换。例如,指令可以进一步包括用于为来自驱动程序的指示该驱动程序已完成从硬件中提取数据的消息等待预定时间段的指令1020。指令1020可以进一步包括用于读取来自硬件控制接口的未提取的数据,并且当预定时间段到期之后接收消息时、当从驱动程序接收该消息之前预定时间段到期时忽略来自该驱动程序的消息的指令。再次,作为示例,指令可以进一步包括用于以下动作的指令在用该功能替换硬件控制接口之前暂停虚拟机环境的虚拟处理器1121 ;用该功能替换存储器区域的硬件控制接口部分1122 ;用该功能映射虚拟机环境地址1123 ;在该虚拟机环境的该存储器区域的该硬件控制接口部分内提供硬件设备存在值以检查该硬件控制接口是否由该硬件设备支持、 或该硬件设备是否已被移除1125 ;将硬件设备存在值从存在改变为不存在11 ;不暂停虚拟处理器1128 ;以及当驱动程序报告完成了访问硬件控制接口时移除该功能1130。
这些指令还可以包括指令1140,其中,功能向该驱动程序提供按位信息,该信息包括以下各项中的至少一个只读、读取时始终为0、读取时始终为1、读写、写入1清除/写入 0保留、写入1设置/写入0保留、写入0清除/写入1保留、写入0设置/写入1保留、首次读取之后清零、或首次读取之后设置为1。如上所述,本发明的各方面可以在经编程的计算机上执行。图Ic和下面讨论旨在提供其中实现本发明各方面的合适计算环境的简要描述。本领域的技术人员可以理解,在某些实施例中图Ic的计算机系统可以实现图Ia和Ib的各种方面。在这些示例实施例中, 服务器和客户机可包括图Ic中描述的部分或全部组件,并且在一些实施例中,服务器和客户机各自可包括配置成实例化本发明的具体方面的电路。贯穿本发明所使用的术语电路可以包括专用硬件组件。在某些或其他实施例中, 电路可以包括被配置成由固件或开关来执行功能的微处理器。在相同或其他示例实施例中,电路可以包括当具体化可用于执行功能的逻辑的软件指令被加载到例如RAM和/或虚拟存储器等存储器中时可被配置的一个或多个通用处理单元和/或多核处理单元等。在电路包括硬件与软件组合的示例实施方式中,实现者可编写实施逻辑的源代码且该源代码可被编译成可由通用处理单元处理的机器可读代码。参考图lc,计算系统可以包括计算机20或类似物,计算机20包括处理单元21、系统存储器22和将包括系统存储器在内的各种系统组件耦合至处理单元21的系统总线23。 系统总线23可以是若干类型的总线结构中的任何一种,包括使用各种总线体系结构中的任何一种的存储器总线或存储器控制器、外围总线,以及局部总线。系统存储器包括只读存储器(ROM) 24和随机存取存储器(RAM) 25。基本输入/输出系统沈(BIOS)存储在ROM 24 中,其包含了诸如在启动期间帮助在计算机20内的元件之间传输信息的基本例程。计算机 20还可包括用于对硬盘(未示出)进行读写的硬盘驱动器27,用于对可移动磁盘四进行读写的磁盘驱动器观,以及用于对可移动光盘31,如CD ROM或其它光介质进行读写的光盘驱动器310在一些示例实施例中,实施本发明的各方面的计算机可执行指令可存储在ROM 对、硬盘(未示出)、RAM 25、可移动磁盘四、光盘31和/或处理单元21的高速缓存中。硬盘驱动器27、磁盘驱动器28和光盘驱动器30分别通过硬盘驱动器接口 32、磁盘驱动器接口 33和光盘驱动器接口 34来连接到系统总线23。驱动器及其相关联的计算机可读介质为计算机20提供了计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。虽然这里描述的环境采用硬盘、可移动磁盘四和可移动光盘31,本领域技术人员应理解,在该操作环境中也能使用可存储能由计算机访问的数据的其它类型计算机可读介质,如盒式磁带、闪存卡、数字视频盘、柏努利(Bernoulli)盒式磁带、随机存取存储器(RAM)、只读存储器(ROM)等。可在硬盘、磁盘四、光盘31、ROM 24或RAM 25上存储多个程序模块,包括操作系统35、一个或多个应用程序36、其它程序模块37和程序数据38。用户可以通过诸如键盘 40和指示设备42之类的输入设备向计算机20中输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备常通过耦合到系统总线的串行端口接口 46连接到处理单元21,但也可通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器47或其他类型的显示设备也可经由诸如视频适配器48等接口连接至系统总线23。除显示器47以外,计算机通常包括如扬声器和打印机等其它外围输出设备(未示出)。图1的系统还包括主适配器55、小型计算机系统接口 (SCSI)总线56和连接到SCSI总线56部存储设备62。计算机20可使用至一个或多个远程计算机,诸如远程计算机49的逻辑连接在网络化环境中操作。远程计算机49可以是另一台计算机、服务器、路由器、网络PC、对等设备或其它公共网络节点,并通常可包括以上对计算机20描述的许多或所有元件,虽然在图 Ic只示出存储器存储设备50。图1所描绘的逻辑连接可以包括局域网(LAN) 51和广域网 (WAN) 52。这样的网络环境常见于办公室、企业范围计算机网络、内联网和因特网。当在LAN联网环境中使用时,计算机20可通过网络接口或适配器53连接至LAN 51。当在WAN联网环境中使用时,计算机20通常可包括调制解调器M或用于通过诸如因特网等广域网52建立通信的其它手段。或为内置或为外置的调制解调器M可经由串行端口接口 46连接到系统总线23。在网络化环境中,相对于计算机20所描述的程序模块或其部分可被存储在远程存储器存储设备中。应该理解,所示网络连接是示例,并且可以使用在计算机之间建立通信链路的其它手段。此外,虽然可构想本发明的许多实施例尤其适用于计算机系统,然而在本文中不意味着将本发明限于这些实施例的公开。上述详细描述通过示例和/或操作图阐明了系统和/或过程的各种实施例。就这些框图和/或示例包含一个或多个功能和/或操作而言,本领域技术人员将理解,这些框图或示例中的每一功能和/或操作都可由各种各样的硬件、软件、固件、或实际上其任意组合来单独地和/或共同地实现。最后,尽管已经结合较佳方面按各附图所示描述了本发明,但要理解,可使用其它相似方面或者可对所述方面进行修改或添加来执行本发明的相同功能而不脱离本发明。例如,在本发明的各方面,公开了用于使用支持机制来替换支持与虚拟机相关联的存储器位置的硬件的各种机制。然而,本文的教示还构想了与这些描述方面等价的其它机制。因此, 本发明应当不限于任何单个方面,而应按照所附权利要求书的广度与范围来解释。
权利要求
1.一种当驻留在虚拟机环境中的驱动程序尝试访问与所述用于驱动程序的硬件设备对应的存储器区域时并且当所述硬件设备被配置成从计算环境中被移除时,用于维护对所述存储器区域的可访问性的方法,包括将所述存储器区域的硬件控制接口部分配置成用由与所述硬件控制接口相关联的代码和数据指示的功能来替换,其中所述功能是在所述硬件设备已从所述计算环境中被移除时所述驱动程序可理解的;以及将所述功能配置成当所述虚拟机环境从所述计算环境被移动到不同计算环境时与所述虚拟机环境一起移动。
2.如权利要求1所述的方法,其特征在于,所述功能被配置成当所述虚拟机环境是被保存、被快照、或被实况迁移之一时与所述虚拟机环境一起移动。
3.如权利要求1所述的方法,其特征在于,所述功能被配置成变成所述虚拟机环境的状态的一部分。
4.如权利要求1所述的方法,其特征在于,向所述虚拟环境独占地分配所述硬件设备。
5.如权利要求1所述的方法,其特征在于,所述虚拟机环境与至少一个其他虚拟机环境共享所述硬件设备。
6.如权利要求1所述的方法,其特征在于,还包括将所述驱动程序配置成在第一时间段之后停止使用所述硬件控制接口,其中所述第一时间段允许待决事务的完成。
7.如权利要求1所述的方法,其特征在于,还包括将所述驱动程序配置成继续使用所述功能第二时间段,其中所述第二时间段允许继续的使用直到所述驱动程序放弃所述接
8.如权利要求1所述的方法,其特征在于,所述功能向所述驱动程序提供按位信息。
9.如权利要求1所述的方法,其特征在于,所述功能包括借助虚拟化机制的仿真行为。
10.如权利要求1所述的方法,其特征在于,所述虚拟机环境是父虚拟机的子虚拟机。
11.如权利要求1所述的方法,其特征在于,还包括在用所述功能替换所述存储器区域的所述硬件控制接口部分之前暂停所述虚拟机环境的虚拟处理器;用所述功能替换所述存储器区域的所述硬件控制接口部分; 将虚拟机环境地址映射到所述存储器区域的具有所述功能的所述部分; 不暂停所述虚拟机环境的所述虚拟处理器;当所述驱动程序报告完成了访问所述存储器区域的所述硬件控制接口部分时,移除所述功能。
12.如权利要求1所述的方法,其特征在于,还包括向所述驱动程序通知所述存储器区域的所述硬件控制接口部分要被替换; 记录所述硬件设备的状态,其中所述状态包括除所述代码和数据之外的信息; 当所述驱动程序完成了访问所述存储器区域的所述硬件控制接口部分时,等待所述驱动程序报告返回;以及从所述驱动程序接收完成了访问所述存储器区域的所述硬件控制接口部分的报告。
13.如权利要求12所述的方法,其特征在于,在虚拟机外部执行的软件代表所述虚拟机中的所述驱动程序来读取所述硬件设备的所述状态。
14.如权利要求1所述的方法,其特征在于,还包括提供硬件控制接口的全软件仿真。
15.如权利要求1所述的方法,其特征在于,还包括在所述虚拟机环境的所述存储器区域的所述硬件控制接口部分内提供存储器子区域, 以检查所述硬件控制接口是否由所述硬件设备支持、或所述硬件设备是否已被移除;以及更新所述存储器子区域以指示当已经用所述功能替换了所述存储器区域的所述硬件控制接口部分时所述硬件设备已被移除。
16.一种适合维护对与驻留在虚拟机环境中的驱动程序的硬件设备对应的存储器区域的可访问性的系统,包括至少一个处理器;以及通信地耦合到所述至少一个处理器的至少一个存储器,所述存储器具有存储在其上的计算机可执行指令,所述计算机可执行指令能够将所述存储器区域的硬件控制接口部分配置成用由与所述硬件控制接口相关联的代码和数据指示的功能来替换,其中所述功能是在所述硬件设备已从所述计算环境中被移除时所述驱动程序可理解的;将所述功能配置成当所述虚拟机环境从所述计算环境被移动到不同计算环境时与所述虚拟机环境一起移动;在所述虚拟机环境的所述存储器区域的所述硬件控制接口部分内提供硬件设备存在值,以检查所述硬件控制接口是否由所述硬件设备支持、或所述硬件设备是否已被移除;在用所述功能替换所述存储器区域的所述硬件控制接口部分之前暂停所述虚拟机环境的虚拟处理器;用所述功能替换所述存储器区域的所述硬件控制接口部分; 将虚拟机环境地址映射到所述存储器区域的具有所述功能的所述部分; 将所述硬件设备存在值从存在改变为不存在; 不暂停所述虚拟机环境的所述虚拟处理器;以及当所述驱动程序报告完成了访问所述存储器区域的所述硬件控制接口部分时,移除所述功能。
17.如权利要求16所述的系统,其特征在于,所述功能向所述驱动程序提供按位信息。
18.一种在其上存储用于维护对与驻留在虚拟机环境中的驱动程序的硬件设备对应的存储器区域的可访问性的计算机可执行指令的计算机可读存储介质,包括用于以下动作的指令将所述存储器区域的硬件控制接口部分配置成用由与所述硬件控制接口相关联的代码和数据指示的功能来替换,其中所述功能是在所述硬件设备已从所述计算环境中被移除时所述驱动程序可理解的;将所述功能配置成当所述虚拟机环境从所述计算环境被移动到不同计算环境时与所述虚拟机环境一起移动。
19.如权利要求18所述的计算机可读存储介质,其特征在于,还包括用于以下动作的指令为来自所述驱动程序的指示所述驱动程序已经完成从硬件中提取数据的消息等待预定时间段,还包括,当在从所述驱动程序接收到所述消息之前所述预定时间段到期时读取来自所述硬件控制接口的未提取的数据,并且当在所述预定时间段到期之后消息被接收时忽略来自所述驱动程序的所述消息;在用所述功能替换所述存储器区域的所述硬件控制接口部分之前暂停所述虚拟机环境的虚拟处理器;用所述功能替换所述存储器区域的所述硬件控制接口部分; 将虚拟机环境地址映射到所述存储器区域的具有所述功能的所述部分; 在所述虚拟机环境的所述存储器区域的所述硬件控制接口部分内提供硬件设备存在值,以检查所述硬件控制接口是否由所述硬件设备支持、或所述硬件设备是否已被移除; 将所述硬件设备存在值从存在改变为不存在; 不暂停所述虚拟机环境的所述虚拟处理器;以及当所述驱动程序报告完成了访问所述存储器区域的所述硬件控制接口部分时,移除所述功能。
20.如权利要求19所述的计算机可读存储介质,其特征在于,所述功能向所述驱动程序提供按位信息,所述信息包括以下各项中的至少一个只读、读取时始终为0、读取时始终为1、读写、写入1清除/写入ο保留、写入1设置/写入0保留、写入0清除/写入1保留、写入0设置/写入1保留、首次读取之后清零、或首次读取之后设置为1。
全文摘要
此处公开了用于用支持机制来替换支持与虚拟机相关联的存储器位置的硬件的各种方面。该支持机制可具有表现为包含便于虚拟机中的驱动程序的数据的存储器位置,通常包含如果从硬件中读取硬件将返回的内容。即使虚拟机移动到不包含与最近从虚拟机中移除的硬件等效的硬件的不同物理机器,从存储器位置返回的数据映像也可以与虚拟机一起移动。
文档编号G06F15/16GK102165431SQ200980139424
公开日2011年8月24日 申请日期2009年9月15日 优先权日2008年9月30日
发明者D·L·格林, J·奥辛斯 申请人:微软公司