配置空间虚拟化的制作方法

xiaoxiao2020-7-22  4

专利名称:配置空间虚拟化的制作方法
技术领域
目前所公开的主题涉及计算领域,尤其涉及计算机虚拟化,虽然虚拟化只是示例性并且是非限制性领域。背景大多数输入/输出(I/O)设备都是在存在配置系统中的所有I/O设备的一块可信软件的假设下被设计的。通常还假设,那些I/O设备最终由设备驱动程序控制,设备驱动程序是抽象化单个设备差异的插件模块。此外,还假设这些驱动程序都被包含在单个内核内。然而,在虚拟机的上下文中,上面的假设可能不再有效。每一虚拟机通常都包含其自己的操作系统内核,操作系统内核可以被或可以不被在所有其他虚拟机中运行的所有其他内核信任。配置和控制物理主机内的设备通常涉及具有实施关于来自一个虚拟机的动作可如何影响其他虚拟机的策略的能力的某一中央机构。在某些系统中,此中央机构位于主机操作系统中。在其他系统中,管理机构可以位于系统管理程序中,在其他系统中,机构可以与在系统管理程序的上方运行的虚拟机中的一个在一起。当构建虚拟化系统时,一种方法可以是维护对上文所描述的中央机构内所有I/O 设备的完全控制。因此,当虚拟机需要I/O服务时,虚拟机可以向控制I/O的中央机构传递请求(直接或间接地)。此方法起作用,但是遭受两个问题。首先,与在物理硬件上运行的操作系统而并非虚拟机相比,I/O操作得比它应该的更慢。其次,向虚拟机表达的I/O设备的范围可能受到虚拟化软件的限制。需要将在物理计算机内的每一个设备指派到在其内运行的虚拟机中的一个或多个。以此方式,I/O将不会遭受与间接相关联的性能损失,且可以被插入到计算机中的任何设备都可以被虚拟机使用,而不要求虚拟化层完全理解其内部功能。因此,需要其他技术来解决上文所描述的问题。概述此处公开了用于通过创建或接收对设备的描述来限制与设备进行交互的非特权虚拟机(不拥有设备的系统范围的策略)的行为的各种方法和系统,该对设备的描述向特权机构(例如,虚拟化系统的系统管理程序或其他特权方面)指示(1)对设备的哪些操作可以具有系统范围的影响,以及O)哪些操作具有设备本地的影响。特权机构可在随后允许或拒绝这些动作。特权机构也可以将这些动作转换为具有良性结果的其他动作。在一个实施例中,对于每一个设备,可以构建配置空间的图,其中该配置内的每一比特都具有以下属性中的一个或多个i.只读。ii.读取时始终为0。iii.读取时始终为1。iv.读写。v.写入1清除,写入0保留。vi.写入1设置,写入0保留。
vii.写入0清除,写入1保留。viii.写入0设置,写入1保留。ix.首次读取之后清零。χ.首次读取之后设为1。上面的行为是示例性的,可以包括附加行为来限制对存储器位置允许的动作。也可以构建MMIO空间的图,其中可以将每一页映射到虚拟机。对于从虚拟机的图中排除的页,特权机构可以选择利用看起来像设备的静态图像填充该页。替换地,特权机构可以选择接收截取,并使用带有应用于这些特定页的图的配置空间来处理截取。在进一步的实施例中,公开了用于交换安全地包含设备的信息的方法。在某些实施例中,可以将图的表示嵌入在驱动程序安装文件中。可以由产生安装文件的当事人对安装文件进行数字签名。因此,机器管理员可以允许特权机构来处理安装文件,无需实际在特权机构安装设备的驱动程序。可以在虚拟机中安装驱动程序,且设备可以在虚拟机中运转并受约束,以使得设备不影响其他虚拟机或特权机构。除前述的之外,在构成本发明的一部分的权利要求书、附图,以及文本中描述了其他方面。那些本技术技术人员可以理解,本发明的一个或多个各个方面可包括,但不仅限于,用于实行本公开的此处引用的各方面的电路和/或编程;电路和/或编程可以几乎是被配置成取决于系统设计人员的设计选择而达成此处引用的各方面的硬件、软件和/或固件的任何组合。应该注意,提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些代表性的概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。附图简述当结合附图阅读时,可以更好地了解前面的摘要,以及下面的详细描述。为了说明本发明,示出了本发明的各个方面。然而,本发明不限于所示出的特定方面。包括了下面的图形图Ia示出了带有多个虚拟机的虚拟机环境,包括多个虚拟处理器以及对应的来宾操作系统;虚拟机是由虚拟化层维护的,该虚拟化层可以包括调度器及其他组件,其中虚拟化层为多个虚拟机虚拟化硬件;图Ib示出了表示计算机系统中的虚拟化环境的硬件和软件体系结构的逻辑层的示图;图Ic描绘了其中可以实现本公开的各方面的示例计算机系统;图2示出了示例性虚拟化计算系统;图3示出了替换的虚拟化计算系统;图4描绘了示出了与PCI设备相关的IO空间和匪IO的示例性系统图;图5是示出了 RAM可以驻留在其中的地址空间的示例性示图;图6示出了用于管理非特权虚拟机和I/O设备之间的事务的全局和本地影响的操作过程的示例;图7示出了用于管理非特权虚拟机和I/O设备之间的事务的全局和本地影响的操作过程的示例;
图8示出了用于管理与设备进行交互的非特权虚拟机的全局和本地影响的操作过程的示例;图9描绘了用于限制与设备进行交互的非特权虚拟机的行为的示例性操作过程;

图10示出了承载参考上面的图1-9所讨论的计算机可执行指令的计算机可读介质。详细描述虚拟机概述在下面的描述和图形中阐述某些具体细节,以提供对本发明的各实施例的全面的理解。在下面的公开中没有阐述常常与计算和软件技术相关联的某些公知的细节,以避免不必要地使本发明的各实施例模糊。进一步地,那些相关领域普通技术人员将理解,他们可以在没有下面所描述的细节中的一个或多个的情况下实施本发明的其他实施例。最后,尽管在下面的公开中参考步骤和序列描述了各种方法,但是,如此的描述用于提供本发明的各实施例的清楚的实现,且步骤和步骤的序列不应该理解为实施本发明所必需的。应该理解,此处所描述的各种技术可以结合硬件或软件或,在适当的情况下,结合两者的组合来实现。因此,本发明的方法和装置,或其某些方面或部分,也可以以在有形的介质(如软盘、CD-ROM、硬盘驱动器,或任何其他机器可读的存储介质)中实现的程序代码 (即,指令)的形式来实现,其中当程序代码被加载到诸如计算机之类的机器中并由它们执行时,机器变为用于实施该发明的装置。在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、可由处理器读取的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备,以及至少一个输出设备。一个或多个程序可以实现或使用结合本发明所描述的过程,例如,通过使用API、可重用控件等等。这样的程序优选地以高级别过程或面向对象编程语言来实现,以与计算机系统进行通信。然而,若有需要,程序也可以以以汇编或机器语言来实现。在任一情况下,语言都可以是编译的或解释的语言,并与硬件实现相结合。图Ia示出了虚拟机环境100,带有多个虚拟机120、121,这些虚拟机包括多个虚拟处理器110、112、114、116,以及对应的来宾操作系统130,132。虚拟机120,121由虚拟化层 140来维护,该虚拟化层140可以包括调度器142及其他组件(未示出),其中虚拟化层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可以在计算机系统中运行,即使软件应用程序174 被设计成在一般与主机操作系统和硬件体系结构182不兼容的操作系统上运行。虚拟机通常包含整个操作系统和一起构成许多进程的一组应用程序,这些全部在虚拟机的上下文中可以被称为“工作负荷”或“进程”。在本公开中,在虚拟机的上下文中, 术语“进程”和“工作负荷”可以可互换地使用,且本领域技术人员可以轻松地理解,“进程” 可以是指包括可以在虚拟机中实例化的系统和应用程序中的全部的多个进程。接下来,图2示出了虚拟化计算系统,包括直接地在物理计算机硬件202之上运行的主机操作系统(主机0 软件层204,其中主机OS 204通过暴露与分区A 208和B 210 的接口以分别供操作系统A和B、212和214使用,来提供对物理计算机硬件202的资源的访问。这允许主机OS 204不被运行在它上面的操作系统层212和214注意。再次地,为了执行虚拟化,主机OS 204可以是带有本机虚拟化能力的专门地设计的操作系统,或者,可另选地,它可以是带有用于执行虚拟化(未示出)的结合的系统管理程序组件的标准操作系统。再次参考图2,在主机OS 204的上面有两个分区,分区A 208 (其可以是,例如,虚拟化的Intel (英特尔)386处理器),以及分区B 210 (其可以是,例如,Motorola (摩托罗拉)680X0系列处理器中的一种处理器的虚拟化版本)。在每一分区208和210内分别有来宾操作系统(来宾0S)A 212和B 214。在来宾OS A 212上方运行的有两个应用程序,应用程序Al 216和应用程序A2 218,而在来宾OS B 214的上方运行的有应用程序Bl 220。对于图2,值得注意的是,分区A 208和分区B 214(以虚线示出)是可以仅仅作为软件结构存在的虚拟化计算机硬件表示。由于专门虚拟化软件的执行,使得它们可能被实现,专门虚拟化软件不仅分别向来宾OS A 212和来宾OS B 214呈现分区A 208和分区 B 210,而且还执行来宾OS A 212和来宾OS B 214与真实物理计算机硬件202间接地进行交互所需的所有软件步骤。图3示出了替换的虚拟化计算系统,其中由与主机操作系统204" —起运行的虚拟机监视器(VMM) 204'执行虚拟化。在某些情况下,VMM 204'可以是在主机操作系统 204"上面运行的并只通过主机操作系统204"与计算机硬件202进行交互的应用程序。在其他情况下,如图3所示,VMM 204'可以替代地包括部分独立的软件系统,该软件系统在某些级别经由主机操作系统204"与计算机硬件202间接地进行交互,但是,在其他级别, VMM204'与计算机硬件202直接进行交互(类似于主机操作系统与计算机硬件直接进行交互的方式)。而在其他情况下,VMM 204'可以包括完全独立的软件系统,该软件系统在所有级别都与计算机硬件202直接进行交互(类似于主机操作系统与计算机硬件直接进行交互的方式),而无需使用主机操作系统204"(虽然仍与主机操作系统204"进行交互以便协调计算机硬件202的使用并避免冲突等等)。图4描绘了示出了与PCI设备相关的IO空间和匪IO的示例性系统图。该示图包括系统总线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。物理存储器地址空间500通常与IO端口空间分开。单独的IO端口空间可以被用来控制较旧的设备,且还可以被用来设置和配置较新的设备,因为PCI配置空间通常经由IO端口空间被访问。此外,IO端口空间地址通常是16比特,而并非32比特或64比特。用于实现上文所提及的分区的所有这些方案只是示例性实现,且此处没有任何东西应该解释为将本公开限制为任何特定虚拟化方面。配置空间虚拟化大多数输入/输出(I/O)设备都是在存在配置系统中的所有I/O设备的一块可信软件的假设下被设计的。通常还假设,那些I/O设备最终由设备驱动程序控制,设备驱动程序是抽象化单个设备差异的插件模块。此外,还假设这些驱动程序都被包含在单个内核内。然而,在虚拟机的上下文中,上面的假设可能不再有效。每一虚拟机通常都包含其自己的操作系统内核,操作系统内核可以被或可以不被在所有其他虚拟机中运行的所有其他内核信任。配置和控制机器内的设备通常涉及具有实施关于来自一个虚拟机的动作如何可以影响其他虚拟机的策略的能力的某一中央机构。在某些系统中,此中央机构位于主机操作系统中。在其他系统中,机构可以位于系统管理程序中,在其他系统中,机构可以与在系统管理程序的上方运行的虚拟机中的一个在一起。当构建虚拟化系统时,一种方法可以是维护对上文所描述的中央机构内所有I/O 设备的完全控制。如此,当虚拟机需要I/O服务时,虚拟机可以向控制I/O的中央机构传递请求(直接或间接地)。此方法是可以接受的,但是遭受两个问题。首先,与在物理硬件上运行的操作系统而并非虚拟机相比,I/O操作得比它应该的慢。其次,向虚拟机表达的I/O 设备的范围可能受到虚拟化软件的限制。需要将在物理计算机内的每一个设备指派到在其内运行的虚拟机中的一个或多个。以此方式,I/O将不会遭受与间接相关联的性能损失。此外,可以被插入到计算机中的任何设备都可以被虚拟机使用,而不要求虚拟化层完全理解其内部功能。例如,如果将网络接口控制器(NIC)插入到物理机器中,则假设虚拟化软件可以控制并操纵NIC可能是合理的。NIC是常见的,且NIC厂商可能希望既为流行的操作系统又为虚拟化系统提供设备驱动程序软件。另一方面,如果将比较深奥的设备插入到计算机中, 将不可能有对应的虚拟化软件可用。如此,需要允许虚拟机具有对设备的直接访问,甚至无需对虚拟机将如何使用设备的任何理解。令人遗憾的是,对深奥的设备的配置和设置可以具有可能影响其他虚拟机的功能的系统范围的结果。例如,打开设备可能导致浪涌电流峰值,如果该浪涌与另一浪涌峰同时发生,则该浪涌电流峰值可能导致整个计算机变暗。在另一示例中,配置设备可能涉及指令该设备声明可能被其他设备或主存储器占据的存储器地址空间范围。作为最后一个示例,设备可以与许多其他设备封装在一芯片中。就外围组件互连(PCI)规范而言,这样的设
8备称为“功能”,且芯片称为“封装”。封装可以具有到总线的一个连接(或在快速PCI (PCI Express)的情况下,到结构的连接),且封装内的每一功能都可以共享与连接到系统的其余部分相关联的一些硬件。在此情况下,配置最低编号的功能(#0)在较高编号的功能的操作中常常可能具有可见的副作用。如果功能0在虚拟机的控制之下,则同一封装中的其他功能会受到在该虚拟机中作出的选择的影响。这会导致其他虚拟机从在其他机器的控制之下的功能接收不到服务或接收到较差的服务。在此处所公开的各实施例中,可以通过创建对设备的描述来限制与设备进行交互的非特权虚拟机的行为,该对设备的描述向特权机构(例如,虚拟化系统的系统管理程序或其他特权方面)指示(1)对设备的哪些操作可能具有系统范围的影响,以及(2)哪些操作具有设备本地的影响。非特权虚拟机是指对系统或设备不拥有系统范围的策略的虚拟机。换言之,非特权虚拟机不是系统管理程序或父/根/主机OS。特权机构随后可以准许或拒绝这些动作。特权机构也可以将这些动作转换为具有良性结果的其他动作。尽管可以通过将设备的驱动程序加载到特权机构的上下文中来实现上面方法中的一些,但是,由于在特权机构中要求附加代码,因此这样的方法通常不是合需的。最小化特权机构内的代码量对于使虚拟化系统既安全又高效而言常常是重要的。此外,当允许整个PCI功能(并非例如仅仅设备的一个子集)处于非特权虚拟机的控制之下时,特权机构内可能不存在用于将设备的资源子分配到许多虚拟机的任何代码。当在许多虚拟机之间共享设备时,此子分配过程是常见的。相比之下,本公开描述了用于将整个分立的设备置于虚拟机的控制之下的方法。在一个实施例中,每一 PCI (或PCI-X,或快速PCI (PCI-Express))设备都可以实现两个或三个地址空间。第一地址空间可以被描述为存储器映射的I/O空间,并可以类似于 RAM寻址地进行表现。对设备的读和写可以像对RAM读和写那样地执行,但是使用不同的地址。参考图5,RAM地址空间520可以,例如,占据开头2GB的存储器地址空间,且I/O设备占据3GB (地址3221225472)和4GB (地址4294967296)之间的地址空间510。MMIO地址空间可以用于通过设备驱动程序与设备进行即时即地的交互。对MMIO地址空间的访问通常比较快,并且通常由设备的设备驱动程序(通常是由设备厂商所提供的)执行。当设备被关闭时,设备通常不对任何MMIO空间进行解码。可以实现的第二地址空间是由PCI设备实现的配置空间。此配置空间可以利用用于配置设备的机构(例如,寄存器)来填充。这样的机构可包括打开与关闭设备,指派资源等等。无论设备被打开或关闭,配置空间通常都被解码。PCI规范标识此空间内的一些寄存器的行为。寄存器允许通用的配置软件块(不是由设备厂商所提供的)配置设备,将资源指派到设备(诸如指派的MMIO空间地址范围),并打开设备。配置空间可以并通常包含设备特定的寄存器,而无需由PCI规范所定义的含义。这样的寄存器通常可以只由设备的设备驱动程序来操纵。最后,可以通过在称为“能力结构”的配置空间中定义新范围,来向PCI 规范添加新特征。PCI设备可以使用的第三地址空间称为“I/O”空间,且大部分是历史的。一般而言,I/O空间具有匪IO空间的属性。诸如系统管理程序之类的特权机构或其他虚拟化中介可能需要决定配置空间的哪些部分可以被置于非特权虚拟机的控制之下。在下面所公开的实施例中,系统管理程序将被描述为特权机构。然而,对本领域技术人员显而易见的是,可以结合任何其他虚拟化中介来实现所公开的实施例。系统管理程序还可以进一步尝试包含非特权虚拟机可以访问的MMIO和I/O空间的部分。在各实施例中,本公开描述了用于包含非特权虚拟机的行为的方法。在一实施例中,对于每一个设备,可以构建配置空间的图,其中该图内的每一比特都具有下面属性中的一个或多个i.只读。ii.读取时始终为 0(always-0 on read)。iii.读取时始终为 l(always-l on read)。iv.读写。v.写入 1 清除(write of 1 clears),写入 0 保留(write of 0 leaves alone)。vi.写入 1 设置(write of 1 sets),写入 0 保留(write of 0 leaves alone)。vii.写入 0 清除(write of 0 clears),写入 1 保留(write of 1 leaves alone)。viii.写入 0 设置(write of 0 sets),写入 1 保留(write of 1 leaves alone)。ix.首次读取之后清零。χ.首次读取之后设为1。上面的行为是示例性的,且可以包括附加行为来限制对存储器位置允许的动作。 也可以在诸如字节之类的较高粒度级别或诸如页之类的较大存储器段上将行为映射到存储器位置。可以构建匪10空间的图,其中可以将每一页映射到虚拟机,或不映射到虚拟机。 可以利用页粒度而并非利用比特粒度来构建图。如果使用比特粒度,则可以潜在地有很多比特的MMIO空间,结果是,图可能会变得过分大。此外,处理器还通常给予系统管理程序只以页粒度截取的能力,由此构建比特级别的图将暗示系统管理程序必须截取每一匪10操作并应用由图暗示的适当过滤器。这样的对设备的操作的恒定干扰很可能对设备操作具有负面的影响。某些设备可以再次将寄存器从它们的配置空间中映射到它们的1/0或MMIO空间。 这可被进行,因为对配置空间的访问通常比较慢且在配置设备之前提供对寄存器的访问是方便的,在这样的情况下,映射应该在配置空间中。对寄存器的访问也应该以后在运行时通过到寄存器的轻便路径来提供,在这样的情况下,映射也应该在存储器空间中。因此,MMIO 空间的页的行为之一是,页可被配置成配置空间的别名,其中对页的任何访问应该被俘获, 并被重定向到处理配置空间的代码。除以此方式映射整个页之外,页内的个体比特可以被标记为配置空间内的特定比特的别名。对于从虚拟机的图中排除的页,系统管理程序可以选择用看起来像设备的静态图像填充排除的页。替换地,系统管理程序可以选择接收截取,并使用带有应用于这些特定页面的图的配置空间来处理截取。换言之,MMIO空间的图可以具有两个级别。一个级别可以对于设备MMIO空间中被映射到虚拟机的页的列表。第二层图可以任选地定义被排除的页内的比特。可以将设备的1/0空间当作配置空间。替换地,可以从虚拟机中排除1/0空间。如上文所讨论的,各种所公开的实施例可以允许诸如系统管理程序之类的机构安全地约束它不对其使用设备驱动程序的设备。因此,系统管理程序没有信息用来填充这样的图是可能的。因此,需要从设备厂商获取此信息的方式。在一个实施例中,可以创建可被嵌入在驱动程序安装文件中的图的表示。在一个实施例中,驱动程序安装文件可以称为 INF。INF可以被包含在驱动程序安装包内。INF还可以进一步由产生包的实体进行数字签名。因此,机器管理员可以决定允许系统管理程序来处理由设备制造商提供的INF,无需实际安装设备的驱动程序。然后,可以在虚拟机中安装驱动程序,且设备可以在虚拟机中运转并受约束,以便驱动程序不影响其他虚拟机或系统管理程序本身。目前所公开的各方面可被实现为系统、方法,驻留在计算机可读介质中的计算机可执行指令等等。如此,对任何特定系统、方法或计算机可读介质的任何公开不限于此,而是可延及实现所公开的主题的其他方式。图6到8描绘了用于管理虚拟机和I/O设备之间的通信的操作过程的示例。过程可包括操作600、602、604、605和606。参考图6,操作600开始操作过程,且在操作602中, 可以对I/O设备构建配置空间的表示,指示可以由虚拟机对I/O设备执行的动作。此配置空间可以使用用于配置设备的机构(例如,寄存器)来填充。可以构建存储器映射的I/O空间的表示603,其中存储器映射的I/O空间的每一页被映射到虚拟机或被从虚拟机中排除。操作604示出了根据所述配置空间的表示和所述存储器映射的I/O空间的表示来控制对所述 I/O设备的访问。操作605示出了所述构建配置空间的表示还包括将所述配置空间的表示内的每一比特与至少一个读和写操作进行关联。操作606示出了对于从所述配置空间的表示中排除的任何存储器或对于从所述存储器映射的I/O空间的表示中排除的任何存储器, 用表示所述I/O设备的数据填充所述任何存储器。例如,对于从虚拟机的图中排除的页,系统管理程序可以选择用看起来像设备的静态图像填充排除的页。参考图7,操作706示出了读和写操作包括只读708、读取时始终为0710、读取时始终为1712、读写714、写入1清除/写入0保留716、写入1设置/写入0保留718、写入 0清除/写入1保留720、写入0设置/写入1保留722、首次读取之后清零724,或首次读取之后设为17沈。参考图8,操作802示出了为被排除的存储器在页内定义比特。操作804示出了接收截取,并使用带有定义的比特的页来处理截取。例如,系统管理程序可以选择接收截取, 并使用带有应用于这些特定页面的图的配置空间来处理截取。在一个实施例806中,可以接收用于构建所述图的信息,其中在由所述I/O设备的厂商提供的文件中接收所述信息。 在另一实施例中,由所述厂商对文件进行数字签名808。操作810示出了根据从厂商接收到的信息来构建表示。可以由虚拟化层813使用带有定义的比特的页来执行管理。可以在虚拟机中安装驱动程序,且设备可以在虚拟机中运转并受约束,以便驱动程序不影响其他虚拟机或系统管理程序本身。在操作814中,构建I/O空间的表示。操作815示出了基于接收到的信息来填充 I/O空间的表示。操作825示出了根据I/O空间的表示来控制对所述I/O设备的访问。操作830示出了基于接收到的信息来填充所述配置空间的图和所述存储器映射的I/O空间的图。在操作835中,可以从虚拟机排除I/O空间。图9描绘了用于管理虚拟机和设备之间的通信的示例性操作过程,包括操作900、
11902、904、906、908、910、912,以及914。参考图9,操作900开始操作过程,而操作902示出
了接收设备的描述,该描述包括关于包括对设备的哪些操作具有系统范围的影响以及哪些操作具有设备本地的影响的信息。操作904示出了创建描述的表示。操作906示出了将该表示嵌入在设备的驱动程序的安装文件中,其中该表示允许构建设备的配置空间的图和存储器映射的I/O空间的图,其中配置空间的图和存储器映射的I/O空间的图可以被用来访问该设备。操作908示出了所述图或与配置空间的图和存储器映射的I/O空间的图相关联的页内的每一比特包括下列属性中的至少一个只读910、读取时始终为0912、读取时始终为 1914、读写916、写入1清除/写入0保留918、写入1设置/写入0保留920、写入0清除/ 写入1保留922、写入0设置/写入1保留924、首次读取之后清零926,或首次读取之后设为1拟8。操作930示出了安装文件是INF,而操作932示出了对INF进行数字签名。上文所提及的方面中的任何一个方面都可以以方法、系统、计算机可读介质或任何类型的产品来实现。例如,根据图10,计算机可读介质可以存储用于控制对PCI、PCI-X 或快速PCI设备的访问的计算机可执行指令,其中设备通信地耦合到主存虚拟机的物理机器。这样的介质可以包括用于接收设备的安装文件的第一指令子集1010,其中安装文件包括关于对设备的哪些操作具有系统范围的影响以及哪些操作具有设备本地的影响的信息; 用于构建设备的配置空间、存储器映射的I/O空间以及I/O空间的的属性的至少一个图的第二指令子集1012,其中与至少一个图相关联的每一页或每一比特被映射到虚拟机且其中静态比特页可以作为设备的状态存在于虚拟机中;用于基于所述接收到的安装文件来填充至少一个图的第三指令子集1014;以及用于使用至少一个图来管理对设备的访问的第四指令集1016。本领域技术人员可以理解,可以使用附加指令集来捕捉此处所公开的各其他方面,且根据本发明,三个目前所公开的指令子集可以在细节方面不同。例如,指令还可以包括指令1020,其中所述图或与至少一个图相关联的页内的每一比特包含下列属性中的一个读取时始终为0、读取时始终为1、读写、写入1清除/写入 0保留、写入1设置/写入0保留、写入0清除/写入1保留、写入0设置/写入1保留、首次读取之后清零,或首次读取之后设为1。再次地,作为示例,指令还可以包括用于执行以下操作的指令对于从配置空间的图中排除的任何存储器或对于从存储器映射的I/O空间的图中排除的任何存储器,用预定数据填充所述任何存储器1021 ;该预定数据对应于预定设备1022 ;定义被排除的存储器的页内的比特1023 ;接收截取并使用带有定义的比特的页来处理截取IOM ;以及安装文件是由设备的厂商提供的INF,并且可以任选地被数字签名1(^6。如上文所描述的,本发明的各方面可以在编程计算机上执行。图Ic以及下面的讨论旨在提供其中可以实现那些方面的合适的计算环境的简要说明。本领域技术人员可以理解,在某些实施例中,图Ic的计算机系统可以实现图Ia和Ib的各个方面。在这些示例实施例中,服务器和客户机可包括图Ic中所描述的某些或全部组件,且在某些实施例中,服务器和客户机可以各自包括被配置成实例化本发明的特定方面的电路。在本公开中通篇使用的术语“电路”可包括专门硬件组件。在相同实施例或其他实施例中,电路可包括被配置成通过固件或开关执行功能的微处理器。在相同或其他示例实施例中,电路可包括一个或多个通用处理单元和/或多核处理单元等等,当体现可操作以执行功能的逻辑的软件指令被加载到存储器,例如,RAM和/或虚拟存储器中时,这些处理单元可以被配置。在其中电路包括硬件和软件的组合的示例实施例中,实施者可以编写体现逻辑的源代码,且源代码可以被编译为可以由通用处理单元处理的机器可读代码。图Ic描绘了根据本发明的各方面配置的计算系统的示例。计算系统可包括计算机20等等,其中包括处理单元21、系统存储器22,以及将包括系统存储器在内的各种系统组件耦合到处理单元21的系统总线23。系统总线23可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线,以及局部总线。系统存储器包括只读存储器(ROM) M和随机存取存储器(RAM) 25。基本输入 /输出系统26 (BIOS)被存储在ROM M中,包含了诸如在启动期间帮助在计算机20内的元件之间传输信息的基本例程。计算机20还可以包括用于读写硬盘(未示出)的硬盘驱动器27、用于读写可移动磁盘四的磁盘驱动器28,以及用于读写诸如CD ROM或其他光学介质之类的可移动光盘31的光盘驱动器30。在某些示例实施例中,体现本发明的各方面的计算机可执行指令可以存储在ROM 24、硬盘(未示出)、RAM 25、可移动磁盘四、光盘31,和/ 或处理单元21的高速缓存中。硬盘驱动器27、磁盘驱动器28,以及光驱动器30分别通过硬盘驱动器接口 32、磁盘驱动器接口 33,以及光驱动器接口 34连接到系统总线23。驱动器以及它们相关联的计算机可读介质为计算机20提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失性存储。虽然此处所描述的环境使用了硬盘、可移动磁盘四、以及可移动光盘31,但是,那些本领域普通技术人员应该理解,在操作环境中也可以使用诸如盒式磁带、闪存卡、数字视频盘、伯努利磁带盒、随机存取存储器(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(如通过因特网)建立通信的其他装置。调制解调器54——其可以是内置的或外置的,可通过串行端口接口 46连接到系统总线23。在联网环境中,参考计算机20所描述的程序模块,或其某些部分,可以存储在远程存储器存储设备中。可以理解,所示出的网络连接只是示例,也可以使用用于在计算机之间建立通信链路的其他装置。此外,尽管可以预想本发明的很多实施例特别适合于计算机系统,但是,本文中没有任何表述旨在将本公开限制于这样的实施例。前述的详细描述通过示例和/或操作图阐述了系统和/或进程的各实施例。在这样的框图和/或示例包含一个或多个功能和/或操作的范围内,本领域技术人员将理解,这样的框图,或示例内的每一功能和/或操作可以分别地和/或共同地通过范围广泛的硬件、 软件、固件或几乎其任何组合来实现。最后,尽管是结合如各种图形所示的优选方面来描述本公开的,但是,应该理解, 可以使用其他类似的方面,或可以对所描述的各方面进行修改和添加,以便执行本公开的相同功能,而不会产生偏离。例如,在本发明的各个方面,公开了用于限制与设备进行交互的非特权虚拟机的行为的各种机制。然而,通过此处的示教还设想与这些所描述的方面等效的其他机制。因此,本发明不应该仅限于任何单个方面,而是应该在根据所附权利要求书的广度和范围内解释。
权利要求
1.一种用于管理虚拟机(120)和I/O设备(430)之间的通信的方法,包括为所述I/O设备构建(602)配置空间的表示,指示对于所述配置空间内的存储器位置所述虚拟机可以在所述I/O设备上执行的动作;构建(603)存储器映射的I/O空间的表示,其中所述存储器映射的I/O空间的每一页被映射到所述虚拟机或被从所述虚拟机中排除;以及根据所述配置空间的表示和所述存储器映射的I/O空间的表示,控制对所述I/O设备的访问(604)。
2.根据权利要求1所述的方法,其特征在于,所述构建配置空间的表示还包括将所述配置空间的表示内的每一比特与至少一个读和写操作相关联(605)。
3.根据权利要求1所述的方法,其特征在于,对于从所述配置空间的表示中排除的任何存储器或对于从所述存储器映射的I/O空间的表示中排除的任何存储器,用表示所述I/ 0设备的数据填充所述任何存储器(606)。
4.根据权利要求2所述的方法,其特征在于,所述读和写操作(706)包括只读、读取时始终为0、读取时始终为1、读写、写入1清除/写入0保留、写入1设置/写入0保留、写入0清除/写入1保留、写入0设置/写入1保留、首次读取之后清零,以及首次读取之后设为1。
5.如权利要求3所述的方法,其特征在于,还包括 定义所述被排除的存储器的页内的比特(802);以及接收截取并使用带有所述定义的比特的页来处理截取(804)。
6.根据权利要求1所述的方法,还包括接收用于构建所述图的信息(806),其特征在于,所述信息是在由所述I/O设备的厂商提供的文件中接收的,且其中所述构建配置空间的表示和所述构建存储器映射的I/O空间的表示还包括根据所述信息来构建所述表示。
7.如权利要求6所述的方法,其特征在于,还包括 构建I/O空间的表示(815);基于所述接收到的信息来填充所述I/O空间的表示(815);以及根据所述I/O空间的表示来控制对所述I/O设备的访问(825)。
8.根据权利要求6所述的方法,其特征在于,还包括基于所述接收到的信息来填充所述配置空间的图和所述存储器映射的I/O空间的图(830)。
9.根据权利要求1所述的方法,其特征在于,还包括从所述虚拟机中排除I/O空间 (835)。
10.一种适于管理虚拟机(120)和I/O设备(430)之间的通信的系统,包括 至少一个处理器;以及通信地耦合到所述至少一个处理器的至少一个存储器,所述存储器存储了能够执行以下操作的计算机可执行指令接收所述设备的描述,所述描述包括关于对所述设备的哪些操作具有系统范围的影响以及哪些操作具有所述设备本地的影响的信息(902); 创建所述描述的表示(904);以及在所述设备的驱动程序的安装文件中嵌入所述表示,其中所述表示允许构建所述设备的配置空间的图和存储器映射的I/O空间的图,其中所述配置空间的图和所述存储器映射的I/O空间的图可以被用来访问所述设备(906)。
11.如权利要求10所述的系统,其特征在于,所述配置空间的图内的每一比特包括下列属性中的至少一个(908)只读、读取时始终为0、读取时始终为1、读写、写入1清除/写入0保留、写入1设置/写入0保留、写入0清除/写入1保留、写入0设置/写入1保留、 首次读取之后清零,或首次读取之后设为1。
12.—种在其上存储有用于控制对PCI、PCI-X或快速PCI设备的访问的计算机可执行指令的计算机可读存储介质(1000),其中所述设备通信地耦合到主存虚拟机的物理机器, 所述计算机可执行指令包括用于执行以下操作的指令接收所述设备的安装文件,其中所述安装文件包括关于对所述设备的哪些操作具有系统范围的影响以及哪些操作具有所述设备本地的影响的信息(1010);构建所述设备的配置空间、存储器映射的I/O空间以及I/O空间的属性的至少一个图, 其中与所述至少一个图相关联的每一页或每一比特被映射到所述虚拟机,其中静态比特页可以作为所述设备的状态被提供到虚拟机中(1012);基于所述接收到的安装文件来填充所述至少一个图(1014);以及使用所述至少一个图来管理对所述设备的访问(1014)。
13.如权利要求12所述的计算机可读存储介质,其特征在于,所述图或与所述至少一个图相关联的页内的每一比特包含下列属性中的一个(1020)只读、读取时始终为0、读取时始终为1、读写、写入1清除/写入0保留、写入1设置/写入0保留、写入0清除/写入 1保留、写入0设置/写入1保留、首次读取之后清零,或首次读取之后设为1。
14.如权利要求12所述的计算机可读存储介质,其特征在于,对于从所述配置空间的图中排除的任何存储器或对于从所述存储器映射的I/O空间的图中排除的任何存储器,用预定数据填充所述任何存储器。
15.如权利要求12所述的计算机可读存储介质,其特征在于,还包括用于执行以下操作的指令定义所述被排除的存储器的页内的比特;以及接收截取,并使用带有定义的比特的页来处理截取。
全文摘要
此处公开了用于通过创建对设备的描述来限制与设备进行交互的非特权虚拟机的行为的各个方面,该对设备的描述向特权机构指示(1)对设备的哪些操作可以具有系统范围的影响,以及(2)哪些操作具有设备本地的影响。特权机构可在随后允许或拒绝这些动作。特权机构也可以将这些动作转换为具有良性结果的其他动作。
文档编号G06F13/14GK102171666SQ200980139828
公开日2011年8月31日 申请日期2009年9月30日 优先权日2008年10月3日
发明者A·J·桑顿, B·奥索普, J·奥辛斯 申请人:微软公司

最新回复(0)