迁移拥有诸如硬件设备等资源的虚拟机的制作方法

文档序号:6454082阅读:168来源:国知局
专利名称:迁移拥有诸如硬件设备等资源的虚拟机的制作方法
技术领域
本发明涉及可用于将拥有诸如硬件设备或另一物理设备等资源的虚拟机 从第一机器或平台迁移到第二机器或平台的方法和机制。更具体而言,本发明 涉及允许在不丢失与资源有关的任何状态信息的情况下迁移这一虚拟机的这 一方法和机制。
背景
如应当理解的,虚拟机是出于仿真硬件系统的目的而在计算设备等上操作 的软件构造等。通常,但不必然地,虚拟机是应用程序等,并且在计算设备上 用于主存用户应用程序等,同时将这一用户应用程序与该计算设备或该计算设 备上的其它应用程序隔离开。虚拟机的一种不同的变型例如可以是对多个不同 的计算设备中的每一个编写的,使得为该虚拟机编写的任何用户应用程序可在 不同计算设备的任一个上操作。由此,并不需要针对每一不同计算设备的用户 应用程序的不同变型。
用于计算设备的新体系结构和新软件现在允许单个计算设备实例化并运 行多个分区,每一分区可用于实例化一虚拟机以便进而主存其上可实例化一个 或多个应用程序的操作系统的一个实例。通常,但不必然地,计算设备包括具 有担当监督应用程序或"超集管理程序"的虚拟机监控程序等的虚拟化层,其 中虚拟化层监督和/或以其它方式管理每一虚拟机的管理方面,并担当每一虚拟 机和该虚拟机外部的世界之间的可能链接。
特别地,计算设备上的一个特定虚拟机可能需要访问与该计算设备相关联 的资源。如可以理解的,这一资源可以是可与计算设备相关联的任何种类的资 源。例如,资源可以是储存和检索数据的存储设备,且一般将出于任何目的采 用存储设备。同样,资源可以是诸如网络、打印机、扫描仪、网络驱动器、虚 拟驱动器、服务器等的任何其它资产。因此,不管资源是什么,虚拟机实际上
都可具有对由这些资源提供的服务的访问。
在实例化了多个分区的计算设备中,可将该计算设备的任何特定的资源动 态地分配给特定分区/虚拟机(以下称为"虚拟机"或"VM"),使得特定
VM可直接控制这些资源并服务来自计算设备上的其它VM的对资源的请求。 这一特定VM因此实际上是提供资源能力的主机,被称为为"拥有"该特定资 源的资源主机VM ( "VM-H")。类似地,这一 VM-H向另一 VM提供资源 服务,而另一 VM实际上是使用这些能力的客户机,被称为资源客户VM ("VM-C")。由此,VM-C和VM-H相组合实现了需要使用特定资源的操 作。
在计算设备上操作的特定VM-C通常被构造为如同真实机器一样操作。 即,访问特定资源的特定VM-C通常如同该特定资源可通过对其的直接请求来 访问那样运作。因此,情况可以是VM-C构造了此类请求所针对的驱动程序的 路径或栈(以下称为"栈"),不同之处在于该特定资源在该栈的末端。然而, 如已经确定的,VM-C实际上并不是真实的机器,并且特定资源实际上不在该 栈的末端。
因此,情况可以是资源由虚拟化层/虚拟机监控程序仿真为在栈的末端。 在现实中,虚拟化层将对资源的请求转发给拥有或能够访问该资源的VM-H。 类似地,情况可以是VM-C可以被赋予其中该VM-C知道其虚拟存在的受启发 的能力,并且通过"受启发的"栈来发送对特定资源的请求,在该"受启发的" 栈的末端是将VM-C与拥有或能够访问该资源VM-H相连接的VM总线或其 它通信路径,其中VM总线绕过虚拟化层。同样类似地,情况可以是具有受启 发的能力的VM-C通过VM-C和VM-H之间如用VM总线来实现的虚拟管道 来发送对特定资源的请求。不管采用了什么通信协议,VM-C都通过VM-H来 访问特定资源,且因此由VM-C发送的对特定资源的每一请求都遵循通过对应 的VM-H到该特定资源的路径。
特别地,对于拥有特定资源的VM-H,则应当理解,这一VM-H可以通过 被分配给该VM-H的用于该资源的适当的适配器来直接访问该资源。通常,但 不必然地,适配器是VM-H的计算设备上的一个硬件或软件,其中这一硬件或 软件将资源接口到VM-H。例如,这一适配器可以是网络接口卡或视频卡,或
软件等价物。有了对这一适配器的直接访问,VM-H因此能以程度相对较高的
效率和性能来利用该资源。此处要注意,特定资源可具有多个对应的适配器,
其每一个都可能被分配给一特定的VM-H,且因此多个VM-H可拥有一特定资 源。然而,至少在通常情况系,在任一时刻,仅一个VM-H可被分配给或"拥 有"一特定适配器。无论如何,通常可以假定对特定资源的所有权等价于对特 定适配器的资源的所有权。
VM的一个特点是VM作为一虚拟构造可以被随意地停止和重启,并且 VM在被停止时可以被随意地保存、检索和重启。特别地,在特定计算设备上 实例化的VM是可被整洁地打包的单一软件构造,因为该软件构造包括与该 VM有关的所有数据,包括与该VM有关的操作数据和状态信息。结果,第一 计算设备上的VM可以被移动或"迁移"到第二计算设备,这通过在第一计算 设备上停止该VM、将停止的VM移动到第二设备、并在第二计算设备上重启 所移动的VM等来实现。更一般地,VM能以类似的方式从第一平台迁移到第 二平台,其中平台表示不同的计算设备或同一计算设备的不同配置。在后一情 况下,应当理解,如果例如添加了附加的存储器、改变了处理器、提供了附加 的输入设备、移除了选择设备等,则计算设备可具有不同的配置。
然而,注意,有时并非所有涉及VM的状态信息都被包括在该VM的软 件构造内。特别地,拥有资源或其适配器的VM-H可能具有同该资源或其适配 器一起储存的涉及该资源的特定状态信息。仅作为一个实例,如果VM-H拥有 的资源是网络,且该VM-H拥有的相应的适配器是网络接口卡,则情况可以是 诸如对网络的某些读和写命令等状态信息至少在被处理之前临时被储存在该 网络接口卡中。作为另一示例,如果资源是具有所包括的适配器的光盘读取驱 动器,则同样情况可以是诸如对该驱动器的某些读命令等状态信息被储存在这 一驱动器中。作为又一示例,如果资源是打印机而对应的适配器包括打印机假 脱机程序,则同样情况可以是诸如对打印机的某些写命令等状态信息被储存在 这一假脱机程序中。
无论如何,可以理解,当VM的状态信息的一部分没有被包括在该VM 的软件构造中时,诸如当VM-H拥有资源并随该资源一起储存了状态信息的情 况,则将VM从第一平台迁移到第二平台变得更困难。特别地,这一迁移在资
源处的状态信息被处理之前不应发生,使得在资源处的这一状态信息不会丢
失,也不会以其它方式与VM永久分离。
由此,存在对当VM-H要从第一平台迁移到第二平台时处理在其所拥有 的资源处的VM-H的状态信息的需求。特地地,存在对这样一种方法和机制的 需求,通过该方法和机制,在资源处的状态信息可在迁移之前在其普通操作中 从资源删除,或者可被储存以供VM-H在迁移之后检索,或者可被另一VM-H 处理。
概述
以上需求至少部分地由本发明来满足,在本发明中, 一种计算系统具有用 于提供资源服务的资源,以及其上实例化了第一和第二虚拟机(VM)的计算 设备。每一 VM主存其上可实例化一个或多个应用程序的操作系统的一个实 例。第一VM最初通信地耦合到该资源,且该资源最初被分配给第一VM,使 得第一 VM最初拥有该资源以及由其提供的服务。该第一 VM是该计算设备上 能够被保存并能从第一平台迁移到第二平台的软件构造。
该第一VM包括一资源桟,该资源栈对应于资源,并且根据通过这一资源 栈发送的访问请求来访问资源;通信地耦合到该资源的第一端口;通信地耦合 到通信介质的第二端口;以及通信地耦合到资源栈、第一端口和第二端口的端 口重定向器。端口重定向器转发来自资源栈的每一访问请求,以便在第一和第 二端口之一处排队。
特别地,端口重定向器转发来自资源栈的每一访问请求以便在第一端口处 排队,直到第一VM被指示来保存或迁移。第一端口处的每一访问请求进而被 进一步转发到资源以供该资源处理。当第一 VM被指示来保存或迁移时,之后, 端口重定向器将来自资源栈的每一访问请求转发到第二端口 。第二端口处的每 一访问请求进而仅在该资源处理了在第一端口处排队的所有访问请求并且之 后被移除以便不再被第一 VM拥有之后才被进一步转发。
第二 VM随后通信上耦合到资源,并且该资源在其从第一 VM移除之后 随后被分配给第二 VM,使得第二 VM随后拥有该资源以及由其提供的服务。 第二 VM作为资源的所有者通过通信介质通信地耦合到第一 VM的第二端口 ,
并且第二端口处的每一访问请求进而通过通信介质被进一步转发给第二VM, 然后进而通过第二VM被进一步转发给资源以便由该资源处理。因此,来自第 一VM的资源栈的所有访问请求进而甚至在该资源从第一VM移除并被分配给 第二VM之后由该资源来处理,并且之后可以完成保存或迁移。
附图简述
以上概述以及以下本发明实施例的详细描述在结合附图阅读时能够被更 好地理解。出于说明本发明的目的,在附图中示出目前优选的实施例。然而, 如应理解的,本发明不限于所示的精确安排和手段。在附图中


图1是表示其中可实现本发明的示例性非限制计算环境的框图2是表示具有其中可实现本发明的各种计算设备的示例性网络环境的
框图3是示出根据本发明的各实施例的运行多个分区的计算设备的框图,该 多个分区包括具有拥有特定资源并为其提供资源服务的虚拟机(VM-H)的主 机分区,以及具有采用VM-H的资源服务的虚拟机(VM-C)的客户机分区;
图4是更详细地示出图3的VM-H耦合到该VM-H所拥有的资源的框图5是更详细地示出根据本发明的一个实施例的图3的VM-H耦合到该 VM-H所拥有的资源的框图;以及
图6是示出根据本发明的一个实施例的关于图5的VM-H所执行的用于 在确保对资源的所有访问请求都被正确地处理的同时执行VM-H的保存或迁 移的关键步骤的流程图。
发明详述 计算机环境
图1及以下讨论旨在提供对其中可实现本发明的合适的计算环境的简要 概括描述。然而,应当理解,构想了所有种类的手持式、便携式和其它计算设 备来结合本发明使用。尽管以下描述了通用计算机,但这仅是一个示例。由此, 本发明可在其中蕴含了极少或最小客户机资源的联网的主存服务的环境,例如 其中客户机设备仅用作浏览器或到万维网的接口的联网环境中实现。
尽管并非所需,但本发明可经由开发者使用的,和/或包括在网络浏览软 件中的应用程序编程接口 (API)来实现,该网络浏览软件将在诸如程序模块 等由诸如客户机工作站、服务器或其它设备等一个或多个计算机执行的计算机 可执行指令的一般上下文中描述。 一般而言,程序模块包括例程、程序、对象、 组件、数据结构等,它们执行特定任务或实现特定抽象数据类型。通常,程序 模块的功能可以在各个实施例中按需进行组合或分布。此外,本领域的技术人 员可以理解,本发明可以用其它计算机系统配置来实施。适用于本发明的其它 众所周知的计算系统、环境和/或配置包括但不限于,个人计算机(PC)、自 动提款机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理
器的系统、可编程消费者电子设备、网络PC、小型机、大型计算机等等。本
发明也可以在其中任务由通过通信网络链接或其它数据传输介质的远程处理 设备来执行的分布式计算环境中实践。在分布式计算环境中,程序模块可以位 于包括存储器存储设备在内的本地和远程计算机存储介质中。
因此,图1示出了其中可实现本发明的合适的计算系统环境100的一个示 例,尽管如上所述,计算系统环境100仅为合适的计算环境的一个示例,并非 对本发明的使用范围或功能提出任何局限。也不应该把计算环境100解释为对 示例性操作环境100中示出的任一组件或其组合有任何依赖性或要求。
参见图1,用于实现本发明的示例性系统包括计算机110形式的通用计算 设备。计算机110的组件可以包括,但不限于,处理单元120、系统存储器130 和将包括系统存储器在内的各种系统组件耦合至处理单元120的系统总线 121。系统总线121可以是若干类型总线结构中的任一种,包括存储器总线或 存储器控制器、外围总线以及使用各类总线体系结构中的任一种的局部总线。 作为示例,而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、 微通道体系结构(MCA)总线、增强型ISA (EISA)总线、视频电子技术标 准协会(VESA)局部总线、外围部件互连(PCI)总线(也称为小背板(Mezzanine) 总线)以及PCI Express。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计 算机IIO访问的任何可用介质,且包括易失性和非易失性介质、可移动和不可 移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和
通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机 可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移
动和不可移动介质。计算机存储介质包括但不限于,RAM、 ROM、 EEPROM、 闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、 磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可 由计算机110访问的任一其它介质。通信介质通常以诸如载波或其它传输机制 等己调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据, 且包含任何信息传递介质。术语"已调制数据信号"指的是这样一种信号,其 一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例而非局 限,通信介质包括诸如有线网络或直接线链接或光纤链接等有线介质,以及诸 如声学、RF、红外、光学、以任何波长工作的相控阵天线、以任何波长工作的 定向或非定向电磁发射机和接收机以及其它无线介质等无线介质。上述的任意 组合应该包含在计算机可读介质的范围内。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储介质, 如只读存储器(ROM) 131和随机存取存储器(RAM) 132。基本输入/输出系 统133 (BIOS)包含有助于诸如启动时在计算机110中元件之间传递信息的基 本例程,它通常被存储在ROM 131中。RAM132通常包含处理单元120可以 立即访问和/或目前正在操作的数据和/或程序模块。作为示例,而非限制,图 l示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可以包括其它可移动/不可移动、易失性/非易失性的计算机 存储介质。仅作示例,图l示出了对不可移动、非易失性磁介质进行读写的硬 盘驱动器141,对可移动、非易失性磁盘152进行读写的磁盘驱动器151,以 及对可移动、非易失性光盘156,如CDROM或其它光介质进行读写的光盘驱 动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非 易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、 数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常由不可移动存 储器接口,诸如接口 140连接至系统总线121,磁盘驱动器151和光盘驱动器 155通常由可移动存储器接口,诸如接口 150连接至系统总线121。
上文讨论并在图1中示出的驱动器及其关联的计算机存储介质为计算机
110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,一
在图1中,示出硬盘驱动器141储存操作系统144、应用程序145、其它程序 模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、 其它程序模块136和程序数据137相同或不同。操作系统144、应用程序145、 其它程序模块146和程序数据147在这里被标注了不同的标号是为了说明至少 它们是不同的副本。用户可以通过输入设备,诸如键盘162和定点设备161 (通 常指鼠标、跟踪球或触摸垫)向计算机110输入命令和信息。其它输入设备(未 示出)可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些 和其它输入设备通常由耦合至系统总线121的用户输入接口 160连接到处理单 元121,但是也可由诸如并行端口、游戏端口或通用串行总线(USB)之类的 其它接口和总线结构连接。
监视器191或其它类型的显示设备也经由诸如视频接口 190等接口连接到 系统总线121。诸如北桥(Northbridge)等图形接口 182也可连接到系统总线 121。北桥是与CPU或主机处理单元120通信的芯片组,并承担了加速图形端 口 (AGP)通信的责任。 一个或多个图形处理单元(GPU) 184可以与图形接 口 182通信。在这一点上,GPU184—般包括诸如寄存器存储等片上存储器存 储,并且GPU184与视频存储器186通信。然而,GPU184仅是协处理器的一 个示例,且因此计算机110中可包括各种协处理设备。监视器191或其它类型 的显示设备也通过接口,如视频接口 190连接至系统总线121,而视频接口 190 又与视频存储器186通信。除监视器191之外,计算机也可包括其它外围输出 设备,如扬声器197和打印机196,它们通过输出外围接口 195连接。
计算机110可使用至一个或多个远程计算机,诸如远程计算机180的逻辑 连接在网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由 器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机 110描述的许多或所有元件,尽管在图1中只示出存储器存储设备181。图1 中所示逻辑连接包括局域网(LAN) 171和广域网(WAN) 173,但也可以包 括其它网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特 网中是常见的。
当在LAN联网环境中使用时,计算机110通过网络接口或适配器170连
接至LAN 171。当在WAN联网环境中使用时,计算机110通常包括调制解调 器172或用于通过诸如因特网等WAN 173建立通信的其它装置。调制解调器 172可以是内置或外置的,它可以通过用户输入接口 160或其它合适的机制连 接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或 其部分可以存储在远程存储器存储设备中。作为示例,而非限制,图l示出了 远程应用程序185驻留在存储器设备181上。可以理解,示出的网络连接是示 例性的,并且可以使用在计算机之间建立通信链路的其它手段。
本领域的普通技术人员可以理解,计算机110或其它客户机设备可作为计 算机网络的一部分来部署。在这一点上,本发明涉及具有任意数量的存储器或 存储单元以及在任意数量的存储单元或巻上发生的任意数量的应用程序和进 程的任何计算机系统。本发明可应用于具有部署在具有远程或本地存储的网络 环境中的服务器计算机和客户计算机的环境。本发明也可应用于具有编程语言 功能、解释和执行能力的独立计算设备。
分布式计算便于通过计算设备和系统之间的直接交换共享计算机资源和 服务。这些资源和服务包括信息交换、高速缓存存储和文件的盘存储。分布式 计算利用网络连接,允许客户机利用它们的集体力量来使整个企业受益。在这 一点上,各种设备可具有可交互以蕴含用于可信图形流水线的本发明的认证技 术的应用程序、对象或资源。
图2提供了示例性的网络化或分布式计算环境的示意图。分布式计算环境 包括计算对象10a、 10b等,以及计算对象或设备110a、 110b、 110c等。这些 对象可包括程序、方法、数据存储、可编程逻辑等等。这些对象可包括诸如 PDA、电视机、MP3播放器、电视机、个人计算机等的相同或不同设备的各部 分。每一对象可通过通信网络14与另一对象通信。该网络本身可包括向图2 的系统提供服务的其它计算对象和计算设备。根据本发明的一个方面,每一对 象10或110可包含可以请求用于可信图形流水线的本发明的认证技术的应用 程序。
还可以理解,诸如110c等对象可以主存在另一计算设备10或110上。因 此,尽管所示的物理环境可以将所连接的设备示为计算机,但是这样的说明仅 是示例性的,并且该物理环境可以被替换地描述或描绘成含有诸如PDA、电视
机、MP3播放器等的各种数字设备,以及诸如接口、 COM对象等软件对象。
存在支持分布式计算环境的各种系统、组件和网络配置。例如,计算系统 可以由有线或无线系统、本地网络或广泛分布的网络连接在一起。当前,许多 网络耦合至因特网,后者为广泛分布的计算提供了基础结构并包含许多不同的 网络。
在家庭网络环境中,有至少四个全异的网络传输媒体,其每一个可支持一 种唯一的协议,这些媒体如电力线、数据(无线和有线)、语音(如,电话) 和娱乐媒体。诸如电灯开关和电器设备等大多数家庭控制设备可使用电力线来 连接。数据服务可通过宽带(如,DSL或电缆调制解调器)进入家庭,并可在 家庭内使用无线(如,HomeRF或802.11B)或有线(如,家庭PNA、 Cat 5、 甚至是电力线)连接来访问。语音话务可通过有线(如,Cat3)或无线(如, 蜂窝电话)进入家庭,并可在家庭中使用Cat 3连线来分布。娱乐媒体可通过 卫星或电缆进入家庭,并通常在家庭中使用同轴电缆来分布。正EE 1394和DVI 也作为用于媒体设备群集的数字互联而浮现。可作为协议标准浮现的所有这些 网络环境和其它环境可被互联来形成可通过因特网连接到外部世界的内联网。 简言之,存在各种全异的源用于数据的存储和传输,并因此向前发展,计算设 备需要走在数据处理流水线的所有部分处保护内容的方式。
"因特网"通常指使用TCP/IP协议套件的网络和网关的集合,该协议在 计算机联网领域中是公知的。TCP/IP是"传输控制协议/网际协议"的缩写。 因特网可被描述为由处理允许用户通过网络交互和共享信息的联网协议的计 算机互连的地理上分布的远程计算机网络的系统。由于这类广泛分布的信息共 享,诸如因特网等远程网络至今发展成一种开放式系统,开发者可对该开放式 系统设计用于执行专用操作或服务的软件应用程序,在本质上没有限制。
由此,网络基础结构启用了诸如客户机/服务器、对等或混合体系结构等 大量网络拓朴结构。"客户机"是使用它无关的另一类或组的服务的一个类或 组中的成员。由此,在计算时,客户机是进程,即,粗略地而言是一组请求由 另一程序提供的服务的指令或任务。客户机进程利用所请求的服务,而不必"知 道"有关其它程序或服务本身的任何工作细节。在客户机/服务器体系结构中, 尤其是网络化系统中,客户机通常是访问由另一计算机,如服务器提供的共享
网络资源的计算机。在图2的示例中,计算机110a、 110b等可以被认为是客 户机,而计算机10a、 10b等可以被认为是服务器,其中服务器10a、 10b等维 护随后在客户机计算机110a、 110b等中复制的数据。
服务器通常是可通过诸如因特网的远程网络访问的远程计算机系统。客户 机进程可以在第一计算机系统中活动,而服务器进程可以在第二计算机系统中 活动,它们通过通信介质彼此通信,从而提供分布式功能并允许多个客户机利 用服务器的信息收集能力。
客户机和服务器可使用由协议层提供的功能彼此通信。例如,超文本传输 协议(HTTP)是一种结合万维网(WWW)使用的常见协议。通常,计算机 网络地址,如统一资源定位符(URL)或网际协议(IP)地址,可用于彼此标 识服务器或客户机计算机。网络地址可被称为统一资源定位符地址。例如,通 信可在通信介质上提供。特别地,客户机和服务器可经由TCP/IP连接而彼此 耦合,以便进行高容量通信。
由此,图2示出了其中可采用本发明的具有通过网络/总线与客户机计算 机通信的服务器的示例性网络化或分布式环境。更详细地,根据本发明,多个 服务器10a、10b等经由通信网络/总线14互连,通信网络/总线14可以是LAN、 WAN、内联网、因特网等,它具有多个客户机或远程计算设备110a、 110b、 110c、 110d、 110e等,如便携式计算机、手持式计算机、痩客户机、联网设备 或其它设备,如VCR、 TV、烤箱、灯、加热器等等。由此可以构想,本发明 可应用于对于其希望处理、储存或呈现来自可信源的安全内容的任何计算设 备,以及对于其希望呈现由虚拟机生成的高性能图形的任何计算设备。
例如,在其中通信网络/总线14是因特网的网络环境中,服务器10可以 是客户机110a、 110b、 110c、 110d、 110e等通过诸如HTTP等多种己知协议 中的任一种与其通信的web服务器。服务器10也可用作客户机110,这可以 是分布式计算环境的特征。通信可以在适当时是有线或无线的。客户机设备110 可以通过或不通过通信网络/总线14通信,并可具有与其相关联的独立通信。 例如,在TV或VCR的情况下,可以有或没有其控制的网络化方面。每一客 户机计算机110以及服务器计算机IO可以具备各种应用程序模块或对象135, 并具有对各种类型的存储元件或对象的连接或访问,在这些存储元件或对象上
可储存文件,或者可向其下载或迁移文件的各部分。由此,本发明可以用于具
有可访问计算机网络/总线14或与其交互的客户机计算机110a、 110b等,以及 可与客户机计算机110a、 110b等交互的服务器计算机10a、 10b等,以及其它 设备111和数据库20的计算机网络环境中。
分区的计算设备
现在转向图3,计算设备10包括或能够访问用于向计算设备IO提供资源 服务的特定资源12。这一计算设备10、资源12和资源服务可以是任何适当的 计算设备、资源和资源服务,而不背离本发明的精神和范围。例如,计算设备 10可以是诸如台式或膝上型计算机等具有硬盘驱动器作为提供数据存储服务 的资源12的个人计算机。同样,计算设备10可以是诸如便携式音频或视频播 放器等具有显示屏作为提供显示服务的资源12的便携式回放机器。类似地,
计算设备IO可以是具有数据通信网络作为提供通信服务的资源12的服务器机 器。类似地,服务器机器本身可以是资源12。注意,资源12可以是一个特定 的硬件、用于访问一个特定硬件的适配器、远程服务、本地服务、其组合等等。 重要的是,计算设备IO被配置为运行多个分区,其中每一分区可用于实 例化一虚拟机以便进而主存其上可实例化一个或多个应用程序的操作系统的 实例。如可以见到的,在这一计算设备10中,计算设备10的特定资源12被 分配给一特定的分区或虚拟机14 (以下称为VM 14),使得该特定VM 14可 直接控制这一特定资源12。这一特定VM 14因此是提供资源能力的主机 ("VM-H14")。类似地,这一 VM-H 14向一个或多个其它VM 16提供资 源服务,每一其它VM实际上是使用这些服务的客户机("VM-C16")。通 常,每一 VM-C 16和VM-H 14通过诸如虚拟机(VM)总线18等管道或通道
进行通信以完成资源相关操作。
VM总线18可被建立为计算设备IO上其本身中以及其本身的对象,或者
也可以改为被建立为不在其本身的存在中或不是其本身的存在的概念对象,而 不背离本发明的精神和范围。在后一情况下,应当理解,当VM 14、 16选择 在其间建立通信时,这一概念VM总线18被表现为VM14、 16之间的通信管 道。特别地,这一VM总线18的表现可以被认为是在VM14、 16选择在其间
进行通信其间当VM 14各自建立了用于该通信的必要服务并实际上采用了这 些服务来如此通信时出现。在这一情况下,通信可在计算设备10内的任何适 当的通信介质上发生,而不背离本发明的精神和范围。
图3的计算设备10及其每一 VM 14、 16可以在功能上被操作来同时包括 用户模式和内核模式,但是这些模式并不被认为是对本发明的目的是绝对必需 的。无论如何,可以理解,用户模式是其中执行代码被硬件禁止执行某些操作 (例如写入未被分配给该代码的存储器)的一般非特许的状态。 一般而言,这 一禁止的操作是可能会使VM 14、 16的操作系统不稳定或可能会构成安全威 胁的操作。在操作系统方面,用户模式是其中运行代码被内核禁止执行可能危 险的操作(诸如写入系统配置文件、杀死其它进程、重启系统等)的类似的非 特许执行模式。
还可以理解,内核模式或特许模式是操作系统和相关核心组件在其中运行 的模式。在内核模式中运行的代码对于分配给VM/分区14、 16的系统存储器 和资源有不受限制的访问。 一般而言,运行在内核模式中的代码的数量出于安 全性和简洁性两个目的而被最小化。概括而言,计算设备10的用户大多直接 通过用户模式和其中操作的应用程序来与其接口,而计算设备IO大多直接通 过内核模式来与包括特定资源12在内的资源接口。
迁移拥有硬件资源12的VM-H 14
如上所述,VM14、 16作为虚拟构造能够被随意地停止、保存、检索和重 启。结果,第一平台上所保存的VM 14、 16可以被移动或"迁移"到第二平 台,其中平台表示不同的计算设备或同一计算设备的不同配置。由此,例如为 web服务器的VM14、 16可以被停止在第一物理机器上运行、被迁移、并在第 二物理机器上重启,而该web服务器的任何客户机甚至都不知道该web服务 器被移动。进行了这一迁移之后,第一物理机器然后可离线以便进行维护或重 新配置而不中断其上运行的工作。另外,这一迁移允许一组物理机器动态地平 衡其负载。类似地,表示用户的个人工作空间的VM 14、 16可由用户在工作 时、在家里等在计算设备12之间移动。
然而,注意,有时并非所有涉及VM的状态信息都被包括在该VM 14、
16的软件构造内。特别地,拥有资源12 (其是一个硬件或其适配器)的VM-H 14可以具有与该资源12 —起储存在涉及该资源12的特定状态信息。在特别是 VM-H 14的状态信息的一部分没有被包括在该VM-H 14的软件构造内的情况 下,则将VM-H 14从第一平台迁移到第二平台变得更困难。特别地,这一迁 移在资源12处的VM-H 14的状态信息被处理之前不应发生,使得在资源12 处的这一状态信息不会丢失,也不会以其它方式与VM-H 14永久分离。
在VM-H 14能够容忍在使用硬件资源12时的中断的一个情形中,资源 12处的状态信息本质上是相对良好的,并且可能在停止VM-H 14以便进行其 迁移之前被处理并从资源12中删除。例如,如果资源12是打印机而状态信息 涉及一打印作业,则可允许该打印作业完成,使得打印机使用了该状态信息, 之后可剥夺VM-H 14对打印机资源12的所有权并且可迁移该VM-H 14。
在VM-H 14能够容忍在使用硬件资源12时的中断的另一个情形中,资源 12处的状态信息本质上略微不良,并且可能在停止VM-H 14以便进行其迁移 之前被移动到VM-H 14。例如,如果资源12是与之前相同的打印机而状态信 息涉及与之前相同的打印作业,但是该打印作业不能在合理的时间量之内完 成,则该打印作业可被停止,并且可在停止VM-H 14以便进行其迁移之前将 涉及该打印作业的其余状态信息移动到VM-H 14,之后同样可对VM-H 14剥 夺其对打印机资源12的所有权并且可迁移该VM-H 14。然后,在迁移之后, 假设VM-H 14再次拥有了同一打印机资源12,则涉及该打印作业的其余状态 信息可从VM-H移动到这一打印机以完成该打印作业。
然而,情况可能是不能作出上述假设。由此,VM-H 14在迁移之后所拥 有的打印机资源12可能是诸如完全不同类型的打印机等完全不同的打印机资 源12,或者是诸如具有已升级的打印控制器的同一打印机等略微不同的打印机 资源12。重要的是,在任一情况下,涉及该打印作业的其余状态信息都有可能 无法从VM-H 14移动到这一打印机来完成打印作业,因为不同的打印机资源 不再能够识别或处理这一状态信息。
还要注意,拥有资源12的VM-H 14可以包括资源处的状态信息,这包括 作业列表、内部状态机器变量等。如果VM-14被任意地停止和重启,则资源 12处的状态信息将有可能不同,并且未完成的请求最好也只不过是被丢弃,这
可导致VM-14崩溃。最坏情况下,用于资源12的驱动程序等将错误地理解情 形,并且在对资源12编程时将破坏资源12中的存储器,这同样会导致VM-H 14崩溃,并且还有可能会导致计算设备10上的其它VM14、 16也崩溃。
由此,如果能够确保VM-H 14在迁移之后将在同一计算设备10上并且用 对其可用的相同的资源12来重启,则使VM-H14的操作系统在迁移VM-H 14 之前将所有状态信息移出资源12并将其与VM-H 14 —起储存将是足够的。然 后,当VM-H在迁移之后被重启时,VM-H 14的操作系统可以将所储存的状 态信息移回资源12以便由其进一步处理。
然而,如果没有这一保证,或者如果工作负荷阻止了在迁移之前移动所有 状态信息,则可以理解,通常在迁移之前将资源12从VM-H14的所有权中移 出或"弹出"是足够的。可以理解,这一弹出可以在对VM-H 14的操作系统 的适当的请求时实现。在本发明的一个实施例中,这一弹出是在停止要迁移的 VM-H14之前命令的,这导致VM-H 14的操作系统仅将被认为是重要的、并 且有可能少于资源12处的全部状态信息的状态信息移出资源12并移入VM-H 14中。应当理解,在弹出之后,资源12没有涉及VM-H14的状态信息,且无 论在迁移之前还是之后都不再被VM-H 14拥有,也不再对其可用。由此,在 迁移之后,VM-H 14将不会试图将任何状态信息移回资源12中,并且因此避 免了从这一移动引发的任何可能的问题。当然,如果可用且需要,VM-H14将 必须重新获取资源12的所有权。
然而,在再一情形中,VM-H14不能容忍在使用硬件资源12时的中断, 且因此资源12处的状态信息本质上是相对关键的。例如,如果资源12是诸如 盘驱动器等VM-H 14采用的主存储设备,则对其的访问对于VM-H 14是关键 的,否则VM-H14的操作系统将崩溃。由此,在这一情形中,没有可从VM-H 14剥夺盘驱动器资源12的所有权的时间点,因为VM-H 14必须始终能够将状 态信息定向到该资源12。因此,在这一情形中,必须采用某一机制来暂停资源 12的操作,并从其中移除VM-H 14的任何状态信息,同时仍允许VM-H 14将 状态信息定向到该资源12。
现在转向图4,可以看到,典型的VM-H14通过存储设备栈22来访问诸 如存储设备资源12等资源12,该存储设备栈可包括文件系统驱动程序、分区
驱动程序、巻驱动程序、盘驱动程序等等。当然,本发明不限于存储设备资源 12,而可以是任何其它类型的资源12而不会背离本发明的精神和范围,在这
一情况下,可以采用适当的相应栈22等来进行访问。
如图所示,图4的存储设备栈22通过端口驱动程序24等(以下称为"端 口24"或其等价物)来与存储设备资源12通信。可以理解,典型地,端口24 将来自存储设备栈22的一般的、理想化的命令和请求转换成对存储设备资源 12专用的命令或请求。注意,如果例如存储设备资源12包括VM-H 14的操作 系统驻留其上的存储器的一部分,则这一存储设备资源12必须连续地操作以 接受分页请求等,否则VM-H14的操作系统将崩溃。简言之,在这一情况下, 至少在VM-H 14必须始终能够将访问请求等形式的状态信息定向到存储设备 资源12的限度内,对存储设备资源12的访问不能被中断。
因此,现在转向图5,在本发明的一个实施例中,图4的单个端口24用 一对端口24a、 24b来替换,其中端口 24a通信地将存储设备栈22与存储设备 资源12耦合,而端口 24b通过通信介质通信地将存储设备栈22与替换目的地 耦合。如图所示,通信介质是VM总线18,并且替换目的地假定是在计算设 备IO上操作的另一 VM 14、 16。然而,该替换目的地和通信介质可以是任何 适当的替换目的地和通信介质而不背离本发明的精神和范围。
重要的是,在本发明的一个实施例中,如图5所见,每一端口 24a、 24b 通过端口重定向器26耦合到存储设备栈22。可以理解,端口重定向器26将对 存储设备资源12的每一访问请求或者通过端口 24a定向到该存储设备资源12, 或者通过端口 24b和通信介质/VM总线18定向到替换目的地。原则上,端口 重定向器26以下述方式确定如何定向每一访问请求。
现在转向图6,在本发明的一个实施例中,可以看到,示出了可用于迁移 拥有诸如存储设备资源12等资源12的VM-H 14的操作序列。还要注意,该 操作序列也可用于保存这一 VM-H 14而不必迁移它。不论是迁移还是保存, 在VM-H 14的正常运行时操作期间,存储设备资源12由VM-H 14拥有,端 口重定向器26将来自VM-H 14的存储设备栈22的访问请求等通过端口 24a 定向到存储设备资源12,并且端口 24a和存储设备资源12将这些访问请求等 排队并对其进行处理(步骤601)。然而,在由任一适当的源执行了 VM-H14
的保存或迁移之后(步骤603),端口重定向器26将来自VM-H 14的存储设 备栈22的访问请求等定向到端口24b (步骤605)。
最初,端口24b将所接收到的访问请求等排队,而端口24a和存储设备资 源12就地处理任何剩余的请求等(步骤607)。由此,端口24a和存储设备资 源12处的所有访问请求都被允许完成,之后对存储设备资源12没有剩余任何 涉及该资源的状态信息(步骤609)。关键的是,尽管在端口 24a和存储设备 资源12处的这些访问请求等被允许完成,但进一步的访问请求等在端口 24b 处排队,并且这些访问请求等没有以会导致VM-H 14的操作系统崩溃的方式 被拒绝、忽略或抛弃。
重要的是, 一旦端口 24a和存储设备资源12处的所有访问请求等都已完 成并且对存储设备资源12没有剩下涉及该资源的任何状态信息,则从(第一) VM-H 14移除存储设备资源12,使得(第一)VM-H 14不再拥有该起源,这 可能通过弹出等来实现(步骤611),并且这一存储设备资源12然后被分配给 另一 VM 14、 16,该另一 VM 14、 16现在是拥有存储设备资源12的第二 VM-H 14 (步骤613)。可以理解,执行这一移除和分配动作可以用任何适当的方式 并由任何适当的实体来完成,而不背离本发明的精神和范围。
同样重要的是,在本发明的一个实施例中, 一旦存储设备资源12被分配 给第二 VM-H 14,则端口 24b通过VM总线18等耦合到这一第二 VM-H 14(步 骤615),并且在该端口 24b处排队的访问请求等然后被转发给该第二 VM-H 14 以便在其现在拥有的存储设备资源12处完成(步骤617)。现在应当理解,在 某一点,所有必要的访问请求等都已由第一 VM-H 14的存储设备栈12在所执 行的其保存或迁移期间通过端口 24a或端口 24b发送到存储设备资源12,并且 存储设备资源12已经处理了所有这些发送的访问请求等(步骤619)。因此, 第一VM-H14的保存或迁移可以在知道以下情况的前提下完成来自VM-H14 的对存储设备资源12的所有访问请求都己或者通过端口 24a直接地或者通过 端口 24b和第二 VM-H 14间接地处理,并且存储设备资源12已从第一 VM-H 14弹出而没有保留涉及该第一VM-H14的任何状态信息(步骤621)。
现在应当理解,在迁移之后向第一 VM-H 14重新分配存储设备资源12本 质上是在步骤603-621处执行的移除的反操作。因此,这一重新分配的细节无
需在此详细阐明。
注意,第一 VM-H 14的端口 24b不应当将其接收到的一般命令转换成专 用命令。由此,并不要求第二 VM-H 14的存储设备栈22是超过等价于第一 VM-H 14的存储设备栈22的功能的任何东西。特别地,由于两个栈22都发出 一般命令,因此在第二 VM-H24的端口 24处接收到的一般命令可由其变为专 用命令。
结论
尽管本发明至少部分地是按照主机和客户机VM 14、 16来阐明的,但是 可以理解,本发明针对要迁移拥有硬件的分区或VM的任何情形。尽管这一迁 移VM有可能是主机到其它客户机的迁移,但是情况不一定是这一迁移VM总 是主机到其它客户机的迁移。此外,可以理解,至少根据此处所使用的术语, 在迁移过程中,VM-H 14在放弃了对硬件设备的所有权之后实际上变为VM-C 16。因此,应当理解,尽管本发明是适当地在主机和客户机VM 14、 16的上 下文中公开的,但更正确地是应在不考虑诸如"主机"或"客户机"等术语的 情况下,即按照要迁移的拥有硬件的VM,并且在这样做之前将这一硬件的所 有权放弃给另一VM,来考虑本发明。
实现结合本发明执行的过程所需的编程相当直接,且应对相关编程公众是 显而易见的。特别地,构造图5所示的每一对象以及实现图6的步骤所必需的 编程基于对每一这样的对象和步骤所必需的功能应是显而易见的。从而,这样 的编程不附在此。因此,可采用任何特定的编程来实现本发明,而不背离其精 神和范围。
在本发明中,提供了一种当VM-H要从第一平台保存或迁移到第二平台 时处理在其所拥有的资源12处的VM-H的状态信息的方法和机制。资源12处 的状态信息可在迁移之前在其普通操作中从资源12中删除,或者可被储存以 供VM-H 14稍后在迁移之后检索,或者可被另一 VM-H 14处理。
应当理解,可对上述实施例作出改变而不脱离其发明概念。作为一个实例, 尽管本发明是按照具有VM-H 14的状态信息的硬件资源12来阐明俄,但该资 源12也可以是具有VM-H 14的状态信息的另一类型的资源,诸如软件资源12,
而不背离本发明的精神和范围。作为另一示例,尽管本发明是按照用于访问资
源12的栈22和端口 24来阐明的,但这一栈22和端口 24旨在不仅分别包括 栈和端口,而且还包括用于访问资源12的任何其它适当的访问机制,所有这 些都不背离本发明的精神和范围。从而应理解,本发明不限于所公开的具体实 施例,而是旨在覆盖落入如由所附权利要求书定义的本发明的精神和范围内的 修改。
权利要求
1. 一种计算系统,包括用于提供资源服务的资源;以及计算设备,所述计算设备具有在其上实例化的第一和第二虚拟机(VM),每一VM用于主存其上可实例化一个或多个应用程序的操作系统的实例,所述第一VM最初通信地耦合到所述资源,且所述资源最初被分配给所述第一VM,使得所述第一VM最初拥有所述资源及其提供的服务,所述第一VM是所述计算设备上能够从第一平台保存和迁移到第二平台的软件构造,所述第一VM包括资源栈,所述资源栈对应于所述资源,并根据通过所述资源栈发送的访问请求来访问所述资源;通信地耦合到所述资源的第一端口;通信地耦合到通信介质的第二端口;通信地耦合到所述资源栈、所述第一端口和所述第二端口的端口重定向器,所述端口重定向器转发来自所述资源栈的每一访问请求以便在所述第一端口和所述第二端口之一处排队,所述端口重定向器转发来自所述资源栈的每一访问请求以便在所述第一端口处排队直到所述第一VM被指示来保存或迁移,所述第一端口处的每一访问请求进而被进一步转发给所述资源以便由所述资源处理,所述端口重定向器在所述第一VM被指示来保存或迁移之后将来自所述资源栈的每一访问请求转发到所述第二端口,并且之后,所述第二端口处的每一访问请求进而仅在所述资源已处理了所述第一端口处排队的所有访问请求并在之后被移除以使所述第一VM不再拥有之后才被进一步转发,在从所述第一VM移除了所述资源之后,所述第二VM随后通信地耦合到所述资源且所述资源随后被分配给所述第二VM,使得所述第二VM随后拥有所述资源及其提供的资源服务,所述第二VM作为所述资源的所有者通过所述通信介质通信地耦合到所述第一VM的第二端口,在所述第二端口处的每一访问请求进而通过所述通信介质被进一步转发给所述第二VM,然后进而通过所述第二VM被进一步转发给所述资源以便由所述资源处理,由此,来自所述第一VM的资源栈的所有访问请求进而甚至在所述资源从所述第一VM移除并被分配给所述第二VM之后由所述资源处理,并且之后可完成所述保存或迁移。
2. 如权利要求1所述的计算系统,其特征在于,所述计算设备还具有VM 总线作为通信地耦合所述第一 VM和所述第二 VM的所述通信介质。
3. 如权利要求1所述的计算系统,其特征在于,所述计算设备具有所述 资源。
4. 如权利要求l所述的计算系统,其特征在于,所述资源是硬件资源。
5. 如权利要求1所述的计算系统,其特征在于,所述资源是存储设备资源。
6. —种关于计算系统的方法,所述计算系统包括 用于提供资源服务的资源;以及计算设备,所述计算设备具有在其上实例化的第一和第二虚拟机(VM), 每一VM用于主存其上可实例化一个或多个应用程序的操作系统的实例,所述 第一 VM最初通信地耦合到所述资源,且所述资源最初被分配给所述第一 VM, 使得所述第一 VM最初拥有所述资源及其提供的服务,所述第一 VM包括资源栈,所述资源栈对应于所述资源,并根据通过所述资源栈发送 的访问请求来访问所述资源;通信地耦合到所述资源的第一端口 ; 通信地耦合到通信介质的第二端口 ;通信地耦合到所述资源栈、所述第一端口和所述第二端口的端口重定向器,所述端口重定向器转发来自所述资源栈的每一访问请求以便在所 述第一端口和所述第二端口之一处排队,所述方法包括所述端口重定向器最初转发来自所述资源栈的每一访问请求以便在 所述第一端口处排队,在所述第一端口处排队的每一访问请求进而被进一 步转发到所述资源以便由所述资源来处理;首先确定所述第一 VM已被指示来从第一平台保存或迁移到第二平台,并在所述首先确定之后,所述端口重定向器转发来自所述资源栈的每一访问请求以便在所述第二端口处排队;以及其次确定所述资源已经处理了在所述第一端口处排队并由其转发的所有访问请求,并在所述其次确定之后移除所述资源以使所述第一VM不再拥有所述资源,并随后将 所述第二 VM通信地耦合到所述资源并将所述资源分配给所述第二 VM,使得所述第二VM拥有所述资源及其提供的服务;通过所述通信介质将所述第二 VM作为所述资源的所有者通信 地耦合到所述第一 VM的第二端口 ;进而通过所述通信介质进一步将在所述第二端口处排队的每一 访问请求进一步转发给所述第二 VM,每一访问请求然后通过所述第 二 VM进而被进一步转发给所述资源以便由所述资源处理,由此进 而甚至在所述资源从所述第一 VM移除并被分配给所述第二 VM之 后来自所述第一VM的资源栈的所有访问请求也被所述资源来处理; 以及之后完成所述第一 VM的保存或迁移。
7. 如权利要求6所述的方法,其特征在于,所述计算设备还具有VM总 线作为通信地耦合所述第一 VM和所述第二 VM的所述通信介质。
8. 如权利要求6所述的方法,其特征在于,所述通信设备具有所述资源。
9. 如权利要求6所述的方法,其特征在于,所述资源是硬件资源。
10. 如权利要求6所述的方法,其特征在于,所述资源是存储设备资源。
11. 一种关于计算系统的方法,所述计算系统包括 用于提供资源服务的资源;以及计算设备,所述计算设备具有在其上实例化的第一和第二虚拟机(VM), 每一 VM用于主存其上可实例化一个或多个应用程序的操作系统的实例,所述 第一 VM最初通信地耦合到所述资源,且所述资源最初被分配给所述第一 VM, 使得所述第一 VM最初拥有所述资源及其提供的服务,所述方法包括 最初将对所述资源的每一访问请求转发给所述资源以便由所述资源 来处理;首先确定所述第一 VM已被指示来从第一平台保存或迁移到第二平 台,并在所述首先确定之后,将对所述资源的每一访问请求转发给一保持 队列;以及其次确定所述资源己经处理了转发给其的所有访问请求,并在所述 其次确定之后移除所述资源以使所述第一 VM不再拥有所述资源,并随后将 所述第二 VM通信地耦合到所述资源并将所述资源分配给所述第二 VM,使得所述第二 VM拥有所述资源及其提供的服务;将所述第二 VM作为所述资源的所有者通信地耦合到所述保持 队列;进一步将在所述保持队列处的每一访问请求转发给所述第二 VM,每一访问请求然后通过所述第二 VM进而被进一步转发给所述 资源以便由所述资源处理,由此甚至在所述资源从所述第一 VM移 除并被分配给所述第二 VM之后对所述资源的所有访问请求也被所述资源来处理;以及之后完成所述第一 VM的保存或迁移。
12. 如权利要求11所述的方法,其特征在于,所述计算设备还具有VM 总线作为通信地耦合所述第一 VM和所述第二 VM的通信介质。
13. 如权利要求11所述的方法,其特征在于,所述通信设备具有所述资源。
14. 如权利要求ll所述的方法,其特征在于,所述资源是硬件资源。
15. 如权利要求ll所述的方法,其特征在于,所述资源是存储设备资源。
全文摘要
一种计算设备具有第一和第二虚拟机(VM)以及分配给第一VM的资源。对该资源的每一访问请求被转发到该资源直到第一VM被保存或迁移。之后,每一访问请求被转发给一保持队列。当该资源处理了被转发给它的所有访问请求之后,该资源被重新分配给第二VM,并且在该保持队列处的每一访问请求被转发给第二VM然后被转发给该资源。因此,对该资源的所有访问请求甚至在该资源从第一VM移除并被分配给第二VM之后也由该资源来处理,并且之后可以完成第一VM的保存或迁移。
文档编号G06F15/00GK101390079SQ200780006817
公开日2009年3月18日 申请日期2007年2月13日 优先权日2006年2月28日
发明者J·奥辛斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1