专利名称:使用仿真计算环境收集操作系统许可证收益的系统和方法
技术领域:
本发明通常涉及现场虚拟机(也称作“处理器虚拟化”)和在虚拟机环境中执行的软件。更具体来说,本发明直接涉及一种使用虚拟机环境收集操作系统许可证收益的方法。
背景技术:
计算机包括被设计成执行特定的系统指令集的通用中央处理单元(CPU)。具有类似的体系结构或设计规范的一组处理器被认为是同一处理器家族的成员。当前的处理器家族的示例包括由亚利桑那州菲尼克斯市的Motorola公司生产的Motorola 680X0处理器家族;由加利福尼亚州桑尼维尔市的Intel公司生产的Intel80X86处理器家族;以及由Motorola公司生产的,并在由加利福尼亚州库珀蒂诺市的Apple计算机公司生产的计算机中使用的PowerPC处理器家族。尽管一组处理器由于其类似的体系结构和设计考虑可处于同一家族中,然而根据其时钟速度和其它参数性能,家族中的处理器也会有很大的不同。
每一微处理器家族执行对该处理器家族唯一的指令。处理器或处理器家族可执行的一组集体的指令被称为处理器的指令集。作为一个示例,由Intel 80X86处理器家族使用的指令集与由PowerPC处理器家族使用的指令集不兼容。Inter 80X86指令集基于复杂指令集计算机(CISC)格式。Motorola Power PC指令集基于精简指令集计算机(RISC)格式。CISC处理器使用大量的指令,其中一些可执行相当复杂的功能,但是它一般需要许多时钟周期来执行。RISC处理器使用较少数量的可用指令,来执行以更高的速率执行的一组较简单的功能。
处理器家族在计算机系统之中的唯一性通常导致计算机系统的硬件体系结构的其它元件之间的不兼容性。用来自Intel 80X86处理器家族的处理器制造的计算机系统具有与用来自PowerPC处理器家族的处理器制造的计算机系统的硬件体系结构不同的硬件体系结构。由于处理器指令集以及计算机系统的硬件体系结构的唯一性,应用软件程序通常被书写成在运行特定操作系统的特定计算机系统上运行。
计算机制造商希望通过令更多而不是更少的应用程序运行在与计算机制造商的产品线相关联的微处理器家族上来将其市场份额最大化。为扩展可运行在计算机系统上的操作系统和应用程序的数量,开发了一种技术领域,其中,称为主机的具有一种类型CPU的给定计算机将包括一仿真器程序,它允许主机计算机仿真一种称为访客的CPU的不相关类型指令。由此,主机计算机将执行促使一个或多个主机指令响应于给定访客指令而被调用的应用程序。由此,主机计算机可运行为其自己的硬件体系结构设计的软件和为具有不相关硬件体系结构的计算机书写的软件两者。作为一个更具体的示例,例如,由Apple计算机制造的计算机系统可运行为基于PC的计算机系统书写的操作系统和程序。也可能使用一仿真器程序以在单个CPU上并发地操作多个不兼容的操作系统。在这一装置中,尽管每一操作系统与其它操作系统不兼容,但是仿真器程序可主宿两个操作系统之一,从而允许不兼容的操作系统在同一计算机系统上并发地运行。
当在主机计算机系统上仿真访客计算机系统时,访客计算机系统被称为“虚拟机”,因为访客计算机系统仅作为一种特定硬件体系结构的纯软件表示存在于主机计算机系统中。术语仿真器、虚拟机和处理器仿真有时可互换地使用,以表示模仿或仿真一个完整的计算机系统的硬件体系结构的能力。作为一个示例,由加利福尼亚州圣马特奥市的Connectix公司创建的Virtual PC软件仿真包括Intel 80X86Pentium处理器和各种主板组件和卡的整个计算机。这些组件的操作在运行于主机上的虚拟机中仿真。在诸如具有PowerPC处理器的计算机系统等主机计算机的操作系统软件和硬件体系结构上执行的仿真器程序模仿整个访客计算机系统的操作。
仿真器程序担当主机机器的硬件体系结构和由运行在被仿真的环境中的软件发送的指令之间的交换点。该仿真器程序可以是一主机操作系统(HOS),它是直接运行在物理计算机硬件上的操作系统。或者,被仿真的环境也可以是虚拟机监控程序(VMM),它是一软件层,其直接运行在硬件之上,并通过展示与VMM正在虚拟化(允许VMM不被其上运行的操作系统层注意)的硬件相同的接口来虚拟化该机器的所有资源。主机操作系统和VMM可在同一物理硬件上并排运行。
多虚拟机可以建立在单个主机器上。在此情形中,某一处理器家族的主机器可以拥有相同处理器家族的多个虚拟机器。在该计算环境中,每个虚拟机器作为其自己的独立计算机系统来工作,这允许用户在一个或多个虚拟机上安装独立的操作系统或单个操作系统的多种情况。由于每个虚拟机独立于所有其它虚拟机和主机器,所以在一个虚拟机内运行的软件不会影响任何其它虚拟机或下层主机器的运行。因此,仿真计算环境可以支持大量操作系统,包括在单个计算机系统上的相关操作系统的阵列或相同操作系统的多种、并发情况。
在此仿真计算环境中,用户可以在单个物理计算机系统上运行多个虚拟化的计算机系统,这避免了用多个硬件系统支持多种计算机系统的需要。作为购买和配置附加物理计算机系统的可选,可以在现有的计算机系统上建立附加的虚拟机。在单个物理主机器上运行多个独立虚拟机提供了在多计算环境上测试软件应用程序并支持传统的软件应用程序或操作系统的能力,以及其它优点。在单个主机器上运行多个虚拟机还节约成本,原因在于减少了物理机器的数量及其相应的维护成本。在单个主机器上运行多个虚拟机还提供了操作系统和应用程序软件隔离的好处。
此外,顾客经常希望继续使用传统的软件技术,例如,因为它们具有商业关键系统或一些因不能升级的任何现代操作系统而必须保持在传统操作系统上的应用程序。传统操作系统的例子包括MS-DOSTM,Windows3.XTM、Windows95TM、Windows98TM、WindowsMeTM、WindowsNTTM、和Windows2000TM。典型的软件制造商将及时在某一点结束产品寿命,这意味着不再为这些操作系统提供进一步的支持。例如,软件支持周期可以为七年,而顾客可能需要运行一个特定操作系统十五年。而且,这些操作系统典型地是通过使用永久许可证来购买的,但是在需要额外的能力时,扩展或获取寿命结束产品的额外许可证就成为问题。可选地,这些顾客可以选择非法运行传统软件,这是因为没有一种购买传统操作系统的机制。能够对于传统操作系统和传统软件应用程序实施许可证协议以便允许顾客确保合法使用而避免与非法运行相关的任何可能的惩罚将是很有益的。需要一种软件许可证机制来扩展和/或获得传统操作系统或应用程序的软件许可证,并且合法地来进行。
而且,软件制造商通常不提供对传统操作系统的跟踪支持,这是因为,如果这样做,他们必须例如维护各种Windows 95时代的PC以便支持Windows 95的所有配置,这由于提供这种支持的成本远超出从提供这种支持所产生的收益而变得不切实际。然而,解决该问题的一个方案是软件制造商使用虚拟机环境来虚拟化地复制计算设备中几乎所有的硬件设备的配置而并不物理上需要计算机的每个配置。在此方式中,单个虚拟机环境提供了一种支持传统操作系统的成本有效方式,从而为软件制造商提供了一个新的商业机会。使用这种增加的支持,对传统软件系统感兴趣的顾客也将增加,尤其是指望增加传统系统作为在它们现代系统上的虚拟机的顾客,这样就导致了额外的销售机会。因此,需要一种软件许可证机制,尤其是在虚拟机环境中,用来延伸软件许可证并维护对于传统操作系统或应用程序的支持。
软件许可证技术是软件制造商的主要收益来源。尤其是,这种商业的大部分在对于操作系统软件发放许可证。然而,当前的操作系统软件许可证方法是基于作为假设每个物理计算机系统只包括单个操作系统的体系模型的物理硬件(即,许可证是在每个硬件基础上做出的)。但是,这种许可证方法(以每个硬件的方法)和现有实施这种许可证方法的软件机制并不适合多个并发操作系统作为工作在单个物理主机器上的多个虚拟机一部分存在的环境。因此,需要一种对作为工作在单个物理主机器上的多个虚拟机的一部分存在的多个并发操作系统实施许可证的许可证方法和软件机制。
此外,在当前对操作系统发放许可证的机制中,对于软件开发商来说,还存在现金流的问题。在个人计算机(PC)的情况中,例如,当购买PC时,以一次性的交易来购买许可证,并且该许可证通常覆盖了单个计算机系统的软件产品的使用(即,该许可证是基于每个硬件)。因此,许可证收益只有在用户升级到新的计算机和新的的操作系统时每隔几年一次性地来收集。需要一种用于虚拟机环境中的软件许可证模型,其允许制造商获得持续性的许可证收益流,并允许顾客以成本有效并实际可行的方式接收增加的值,例如软件升级和支持。
发明内容
本发明的多个实施例提供了收集驻留在仿真计算机系统中的操作系统或应用程序软件的许可证收益的装置。(当在此使用时,术语“仿真计算机系统”指示为所有的虚拟化计算机系统,包括但不限制于在运行中仿真和/或直接执行客户操作系统指令的系统。)这些实施例的某一些具体涉及提供一种在虚拟机环境中以为软件制造商提供持续收益流而不是一次性的交易的方式收集传统操作系统或应用程序的许可证收益的装置。
本发明的某些实施例涉及一种在虚拟机环境中通过使用许可证管理器提供软件许可证实施的系统和方法,从而提供在支持传统操作系统和应用程序的计算机系统中收集许可证收益的改进方法。此外,某些实施例使用仿真的外设,包括许可证卡,其用来与许可证管理器通信来请求许可证密钥。许可证管理器的功能是在用于虚拟机的操作系统软件上监视并实施软件许可证限制。对于某些实施例来说,许可证管理器的功能可以驻留在计算机系统的主OS或VMM上,并可以通过硬件系统基础在硬件系统上执行;可选地,许可证管理器功能可以驻留在担当所有可用许可证的中央储存库的分离的物理机器上,从而通过在组织范围上的物理系统上提供对VMM的许可证来提供一种管理在企业级配置范围上的许可证的装置。最后,本发明的多个实施例涉及为运行在虚拟机环境中的操作系统和应用程序提供增加的软件支持和升级。
当结合附图进行阅读时,优选实施例的前述概括和下面的详细描述将更好得以理解。为了说明本发明,在附图中显示了本发明的典型结构;然而,本发明并不局限于所公开的特定方法和手段。在附图中图1是表示可以包括本发明的各方面的计算机系统的框图;图2显示了用于计算机系统中的仿真操作环境的硬件和软件结构的逻辑分层;图3A是显示显示了虚拟化的计算系统;图3B显示了包括与主操作系统一起运行的虚拟机监视器的虚拟化计算系统的可选实施例;图4是包括许可证卡和许可证管理器的计算机系统的硬件和软件结构的逻辑层的视图;图5是用来启动和许可证虚拟机操作系统软件的步骤流程图;和图6是用来收集使用虚拟机环境的操作系统许可证收益的步骤流程图。
具体实施例方式
本发明的主题是用细节来描述的,以满足法定要求。然而,该描述本身并不制造限制本专利的范围。相反,发明人构想所要求保护的本发明也可结合其它现有或未来技术用其它方法来实现,以包括不同的步骤或类似于本文档中所揭示的那些步骤的组合。此外,尽管此处使用了术语“步骤”意味着所采用方法的不同元素,然而该术语不应当被揭示为暗示此处所揭示的各个步骤之中或之间的任何特定顺序,除非当明确地描述了个别步骤的顺序。
计算机环境本发明的许多实施例可以在计算机上执行。图1及以下讨论旨在提供对适于在其中实现本发明的计算环境的简要概括描述。尽管并非所需,但本发明将在诸如由客户机工作站或服务器等计算机执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。此外,本领域的技术人员可以理解,本发明可以用其它计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费者电子设备、网络PC、小型机、大型机等等。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
如图1所示,示例性通用计算系统包括常规计算机20或类似装置,包括处理单元21、系统存储器22以及将包括系统存储器的各类系统组件耦合至处理单元21的系统总线23。系统总线23可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。系统存储器包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出系统(BIOS)26,包含如在启动时协助在计算机20内的元件之间传输信息的基本例程,可储存在ROM 24中。个人计算机20也可包括用于对硬盘(未示出)进行读写的硬盘驱动器27、用于对可移动磁盘29进行读写的磁盘驱动器28以及用于对可移动光盘31如CD ROM或其它光介质进行读写的光盘驱动器30。硬盘驱动器27、磁盘驱动器28以及光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34连接至系统总线23。驱动器及其相关的计算机可读介质为计算机20提供了计算机可执行指令、数据结构、程序模块和其它数据的非易失性存储。尽管这里描述的示例环境采用了硬盘39、可移动磁盘29以及可移动光盘31,然而本领域的技术人员可以理解,在示例性操作环境中也可以使用可储存可由计算机访问的数据的其它类型的计算机可读介质,如盒式磁带、闪存卡、数字视频盘、Bernoulli盒式磁盘、随机存取存储器(RAM)、只读存储器(ROM)等等。
多个程序模块可储存在硬盘、磁盘29、光盘31、ROM 24或RAM 25中,包括操作系统35、一个或多个应用程序36、其它程序模块37以及程序数据38。用户可以诸如通过键盘40和定位设备42等输入设备向计算机420输入命令和信息。其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常通过耦合至系统总线23的串行端口接口46连接到处理单元21,但也可以通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。监视器47或其它类型的显示设备也通过接口,如视频适配器48连接到系统总线23。除监视器47之外,个人计算机通常包括其它外围输出设备(未示出),如扬声器和打印机。图1的示例性系统也包括主机适配器55、小型计算机系统接口(SCSI)总线56以及连接到SCSI总线56的外部存储设备62。
个人计算机20可以在使用到一个或多个远程计算机,如远程计算机49的逻辑连接的网络化环境中操作。远程计算机49可以是另一个人计算机、服务器、路由器、网络PC、对等设备或其它公用网络节点,并通常包括许多或所有相对于计算机20所描述的元件,尽管在图1中仅示出了存储器存储设备50。图1描述的逻辑连接包括局域网(LAN)51和广域网(WAN)52。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,个人计算机20通过网络接口或适配器53连接至LAN 51。当在WAN网络环境中使用时,计算机20可包括调制解调器54或用于通过广域网52,如因特网建立通信的其它装置。调制解调器54可以是内置或外置的,通过串行端口接口46连接至系统总线23。在网络化环境中,相对于个人计算机20所描述的程序模块或其部分可储存在远程存储器存储设备中。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它装置。此外,尽管预想本发明的多个实施例尤其适合于计算机化的系统,然而本文档中没有任何内容旨在将本发明限于这样的实施例。
虚拟机从概念上的观点来看,计算机系统一般包括运行在硬件的功能层上的一个或多个软件层。这一分层是为了抽象的原因而完成的。通过为给定软件层定义接口,该层可由其上的其它层来不同地实现。在设计良好的计算机系统中,每一层仅知道(并且仅依赖于)紧靠其之下的那一层。这允许层或“栈”(多个邻接的层)被替换,而不会对所述层或栈上的层产生消极的影响。例如,软件应用程序(较高层)通常依赖于操作系统的较低层(较低层)来将文件写入某一形式的永久存储中,并且这些应用程序不需要理解将数据写入软盘、硬盘驱动器或网络文件夹之间的区别。如果较低层用用于写文件的新操作系统来替换,则较高层软件应用程序的操作保持不受影响。
分层软件的灵活性允许虚拟机(VM)呈现一虚拟硬件层,它实际上是另一软件层。以此方式,VM可为其上的软件层创建所述软件层正运行在其自己的专用计算机系统上的假象,并且由此,VM可允许多个“访客系统”并发地运行在单个“主机系统”上。
图2所示是用于计算机系统中仿真的操作环境的硬件和软件体系结构的逻辑分层的图示。仿真程序94运行在主机操作系统和/或硬件体系结构92上。仿真程序94仿真访客硬件体系结构96和访客操作系统98。软件应用程序100进而运行在访客操作系统98上。在图2的被仿真操作环境中,由于仿真程序94的操作,即使软件应用程序100被设计成运行在一般与主机操作系统和硬件体系结构92不兼容的操作系统上,软件应用程序100也可运行在计算机系统90上。
图3A示出了一个虚拟化的计算系统,它包括直接运行在物理计算机硬件102上的主机操作系统软件层104,并且主机操作系统(主机OS)通过展示与主机OS正在虚拟化(令主机OS能够不被其上运行的操作系统层注意到)的硬件相同的接口,来虚拟化机器的所有资源。
或者,虚拟机监控程序,或VMM软件层104′可以代替主机OS 104″或与其并排地运行,后一选项在图3B中示出。为了简明起见,后文所有的讨论(尤其是关于主机OS 104的讨论)应当针对图3A所示的实施例;然而,这些讨论的每一方面应当同等地应用于图3B的实施,其中图3B的VMM 104′本质上在功能层替换了下文描述的图3A的主机OS 104的角色。
再次参考图3A,在主机OS 104(或VMM 104′)上的是两个虚拟机(VM)实现-VM A 108,它可以是,例如虚拟化的Intel 386处理器;以及VM B 110,它可以是,例如Motorola 680X0处理器家族之一的虚拟化版本。在每一VM A 108和110之上的分别是访客操作系统(访客OS)A 112和B 114。在访客OS A 112上运行两个应用程序-应用程序A1 116和应用程序A2 118,在访客OS B 114上的是应用程序B1 120。
VM软件许可证实施本发明的各种实施例涉及一种修订的许可证模型,其中例如操作系统的软件产品被基于每种实施例给予许可证(而不是基于每硬件)。对于虚拟机环境来说,每个VM将包括需要许可证的“实例”。为了支持这种许可证模型,自动实施许可证和获得所需许可证的自动装置都是有益的。
图4显示了图3B系统的部分,进一步包括仿真硬件设备,在此情况下,包括每个虚拟机的许可证卡。图4所示是逻辑连接到许可证卡虚拟设备A 122的VM A108和逻辑连接到许可证卡虚拟设备B 124的VM B110。图4还显示了VMM 104′进一步包括逻辑连接到每个许可证卡虚拟设备122和124的许可证管理器(LM)126。有关VM A108和VM B110的图4所述仿真硬件设备是示例性的,并且在该虚拟机环境种的任何其它VM将包括耦合到LM 126的自身类似的许可证卡虚拟设备。当然,这些许可证卡(例如,122和124)被仿真为在计算机硬件102中不一定具有(或需要)物理相应部件的硬件设备。
从访客OS A112的角度考虑,许可证卡A 122显示为类似于通过软件驱动器控制的任何其它外设。在启动或引导阶段期间,一旦识别到许可证卡A 122的存在,访客OS A112就确定是否安装了许可证卡A 122的相关驱动器。如果还没有安装许可证卡A 122的相关驱动器,那么访客OS A112尝试搜索并安装相关的软件的驱动器。
LM 126的功能是自动对在VMM上运行的每个虚拟机器的操作系统,例如VM A108和VM B110,监视和实施软件许可证限制。LM 126包括可以同时工作在虚拟计算系统的虚拟机器中许可的访客OS数量的计数。许可的OS的数量可以是一个、两个、两个、或更多,其依赖于计算机用户购买的许可证权利。至于实施,由于VMM 104′通过每个访客OS,例如访客OS A 112和访客OS B114监视即插即用设备的逐条记载,所以由VMM 104′识别通过它们各自的许可证卡虚拟设备122和124的每个VM 108和110的添加并自动使用LM 126进行格式化——即,在访客OS 112和114识别所述虚拟设备122和124时,每个许可证卡122和124自动连接到LM 126,当每个VM的操作系统开始时,该过程自动进行。此后,当许可证卡122或124需要许可证时,需要自动与LM 126自动进行通信来请求必需的许可证密钥。如果LM不能获得必需的许可证密钥和特定VM的OS,那么该VM就被VMM关闭。
图5是显示启动和许可证虚拟机的操作系统软件的方法130的流程图。在步骤132,该方法首先包括虚拟机的初始化序列。在步骤134,请求操作系统识别许可证卡。在步骤136,VMM 104,与LM 126进行通信来请求许可证密钥。在步骤138,LM126将密钥和其它授权代码传递给VMM 104′,其允许访客OS继续启动。如果为否,在步骤144,VMM 104′停止访客操作系统并结束方法130。随后,在步骤142,LM 126减少其可用访客OS许可证或密钥的计数。在此点,经许可的访客OS假设已经消耗了来自LM 126的一个密钥。一旦可用访客OS许可证的计数达到零,LM 126就不再发布额外的密钥或授权。在可选实施例中,LM还可以包括用来自动从许可证经销商获得额外许可证的子系统,并且,如果获得额外许可证不成功,那么继续进到关闭未许可证的访客OS。
例如,如果可用访客OS的计数为零,并且如果VMM 104′请求许可证密钥,那么LM 126将通知VMM 104′没有可用的额外访客OS许可证。然后,VMM 104′将中断虚拟机的启动序列并阻止相关虚拟机的操作系统软件运行,如在步骤144中所示的那样。LM 126维护许可证访客OS的记录。如果许可证访客操作系统被终止,那么VMM 104,就通知LM 126,其增加可用访客OS的计数。许可证访客OS的终止具有的效果是将密钥返回给LM 126。
从LM 126到每个虚拟机的传递许可证密钥是在安全传输介质中完成的。作为密钥传送处理的一部分,操作系统经销商可以寻求传送加密的握手信号到访客OS来确保该访客OS是主OS 104″的可许可版本。与访客OS之间的通信可以通过仿真硬件设备来完成,例如,许可证卡A 124。许可证卡A 124将加密的信号传输到VMM 104′,其将加密的信号传递到主OS 104″的LM 126。图4显示了许可证卡124、VMM 104′和LM 126的逻辑关系。可选地,主OS 104和访客OS通过虚拟计算系统硬件抽象层传输加密信号。
LM 126将周期性地查询每个虚拟机来确认每个虚拟机的操作系统的软件许可证状态。该周期性的许可证检查确认每个虚拟机的操作系统是由LM126许可证的,并且没有虚拟机停止或超时。如果确定任意一个访客OS没有被LM 126许可证,那么LM 126将确定许可证是否可用于未许可证的访客OS,即,可用访客OS许可证的计数是否大于零。如果检查到未许可证的访客OS,并且如果额外的许可证密钥可用,那么可用许可证的计数将被递减,并且未许可的访客OS将由LM 126许可证。如果检测到未许可的访客OS,并且如果没有额外许可证密钥可用,那么未许可的访客OS将停止或终止。
由未许可的访客OS导致的问题可能发生在虚拟机已经停止并在物理计算机系统之间迁移的例子。在该例子中,虚拟机可以被启动并使用可用许可证密钥许可证用于计算机系统上。该虚拟机接着可以停止或使用不可用许可证密钥迁移到另一个计算机系统上。由许可证管理器对虚拟机的周期查询将检查该迁移的虚拟机,其将导致在目的计算机中获得迁移虚拟机的额外许可证(或通过购买或从另一个LM)或在目的计算机系统中终止迁移的虚拟机。
VM软件许可证收益收集图6是显示通过使用虚拟机环境收集操作系统许可证的方法150的流程图。更具体来说,本发明的方法150提供了在虚拟机环境中为现代或传统的操作系统或应用程序以为软件制造商提供持续收益流而不是一次性交易的方式收集许可证收益的装置。
在步骤152,该方法首先包括顾客从软件制造商请求软件许可证。在步骤154,软件制造商(或许可人)例如根据所请求许可证的时间周期设置所请求软件许可证的费用量并从顾客接收相应付费。该付费可以是永久许可证协议的一次性付费方式;然而,在优选实施例中,该付费是与可更新的许可证协议相关的月或年付费(或任何其它预定的时间周期),其为软件制造商保证固定的收益流,并如果可以升级,那么每次更新时,还向接收软件升级的顾客提供好处。一旦顾客开始购买或更新软件许可证,软件制造商就创建软件许可证,并随后,例如电子方式(即,通过电子邮件)通过光盘(CD)或任何合适的装置向顾客传送软件许可证。在步骤156,顾客确定该许可证将配置在哪一个虚拟计数系统上。继续参考图4,然后,将该许可证配置在给定VMM 104′的LM 126。在图6的步骤158,根据方法130启动虚拟机和相关访客OS,例如图4的VM A108和访客OS A 112,如图5所述。在步骤160,任意给定VMM 104′的LM 126继续通过监视许可证属性确定是否存在不允许其使用的条件来监视该许可证的状态。属性包括例如OS类型或版本、开始日期,其建立许可证的开始、许可证的持续时间,然后,确定结束日期、和容量(即,允许多少用户),等等。在步骤162,如果由于不违反该许可证属性而导致该许可证有效,那么在继续监视的同时,如在步骤160中描述的那样,允许执行VM和访客OS,如在步骤164指示的那样。然而,在步骤162,如果该许可证因为违反而不再有效,例如,在许可证属性中建立的时间到期,那么VMM104′停止VM和访客OS,如在步骤166中指示的那样。在步骤168,当VM和访客OS被停止时,那么就通知顾客并随后决定他/她是否希望延伸(更新)该软件许可证。如果顾客不希望更新该许可证协议,那么讨论中的VM和访客OS保持停止。如果顾客希望更新该许可证协议,那么顾客从软件制造商获得软件许可证请求,如在步骤152指示的那样。进一步,在更新时,软件制造商可以向可能存在的顾客提供任何增加的软件升级或支持。
继续参考图4、5和6,在可选实施例中,许可证管理器功能性地驻留在分离的物理机器上,该机器担当所有可用许可证的中央储存库,并因此而通过提供许可证给组织范围内的物理系统上的VMM来提供管理在企业级配置上的许可证的装置。该安排提供了进一步的好处,在于它允许顾客动态平衡它们组织内的许可证,例如企业、服务器级的数据中心、或在较大组织内的台式PC上。
本发明并不限制于应用到仿真特定的计算机系统结构,尤其是Intel 80X86结构。相反,在需要在虚拟或仿真计算环境中许可证多个软件的任何时候,都可以使用在此所公开的仿真技术。还应该明白,本发明并不限制于许可证操作系统软件。在此所描述的技术可以用来在虚拟或仿真计算环境中建立应用软件的许可证协议。还应该明白,本发明的用途不限制于主操作系统和许可证操作系统相同的那些计算环境中。本发明的技术可以用于主操作系统和访客操作系统在同一家族的操作系统内的变体的那些情况中。可选地,主操作系统和一个或多个访客操作系统可以是与不同硬件平台相关的操作系统。
虽然已经详细描述了本发明,但是应该明白,在不脱离由所附权利要求书定义的本发明的精神和范围的情况下,可以对本发明做出各种变化、替换和修改。
结论此处所描述的各种系统、方法和技术可以用硬件或软件,或在适当时用两者的组合来实现。由此,本发明的方法和装置,或其某些方面,可以采用包含在有形介质,如软盘、CD-ROM、硬盘或任何其它机器可读存储介质中的程序代码(即,指令)的形式,其中,当程序代码被加载到诸如计算机等机器上并由其执行时,该机器变为用于实施本发明的装置。在可编程计算机上的程序代码执行的情况下,计算机一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。一个或多个程序较佳地以高级过程语言或面向对象的编程语言来实现,以与计算机系统通信。然而,如有需要,程序可以用汇编语言或机器语言来实现。在任何情况下,语言可以是已编译或已解释的语言,并与硬件实现相组合。
本发明的方法和装置也可以用程序代码的形式来实施,该程序代码通过某一传输介质来发送,如通过电线或电缆、通过光纤或通过任一其它形式的传输,其中,当程序代码由诸如EPROM、门阵列、可编程逻辑器件(PLD)、客户机计算机、录像机等机器接收被装载到其中由其执行时,该机器变为用于实施本发明的装置。当在通用处理器上实现时,程序代码与处理器相结合,以提供用于调用本发明的功能的唯一装置。
尽管结合各个附图的较佳实施例描述了本发明,然而可以理解,在不脱离本发明的情况下,可以使用其它类似的实施例,或对所描述的实施例作出修改和添加,以执行本发明的相同功能。例如,尽管本发明的示例性实施例是在仿真个人计算机的功能的数字设备的环境中描述的,然而本领域的技术人员可以认识到,本发明不限于这类数字设备,如本申请中所描述的,本发明可应用于任何数量的现有或新兴计算设备或环境,如游戏控制台、手持式计算机、便携式计算机等等,无论它们是有线还是无线的,并且本发明可应用于通过通信网络连接并在网络上交互的任何数量的这类计算设备。此外,应当强调,此处构想了各种计算机平台,包括手持式设备操作系统和其它应用专用硬件/软件接口系统,尤其是当无线联网的设备的数量持续增长时。因此,本发明不应当限于任何单个实施例,而是相反,应当依照所附权利要求书的宽度和范围来解释。
最后,此处所描述的揭示的实施例可适用于其它处理器体系结构、基于计算机的系统、或系统虚拟化,并且这些实施例由此处的揭示明确地考虑在内,因此,本发明不应限于此处所描述的具体实施例,而是相反,应当被更广泛地解释。同样,为除处理器虚拟化之外的目的而使用合成指令也由此处的揭示考虑在内,并且在除处理器虚拟化之外的环境中对合成指令的任何这样的使用应当被更广泛地包含在此处的揭示的意义之内。
权利要求
1.一种用来在虚拟机环境中许可用于多个虚拟机的软件产品的方法,所述方法包括在虚拟机环境中按虚拟机基础许可所述软件产品。
2.如权利要求1所述的方法,其特征在于,还包括在所述虚拟机环境中为所述多个虚拟机中的每个虚拟机实施许可证符合。
3.如权利要求2所述的方法,其特征在于,在所述虚拟机环境中为所述多个虚拟机中的每个虚拟机实施许可证符合的所述元素还包括自动利用每个所述虚拟机的许可证卡虚拟设备,所述许可证卡虚拟设备逻辑上耦合到许可证管理器,只有当所述虚拟机的所述软件产品的许可证对于该虚拟机可用并可以分配给所述虚拟机时,所述许可证管理器才允许所述软件产品在所述虚拟机上执行。
4.如权利要求3所述的方法,其特征在于,所述软件产品是操作系统。
5.如权利要求3所述的方法,其特征在于,当虚拟机需要额外的许可证时,所述许可证管理器从许可证经销商获得至少一个新的许可证。
6.如权利要求1所述的方法,其特征在于,还包括当这种许可证不存在并且对于所述虚拟机不可用时,自动获得所述虚拟机环境中的虚拟机的至少一个额外许可证。
7.如权利要求1所述的方法,其特征在于,所述软件产品是操作系统,所述方法还包括用于实现所述方法的下述元素启动虚拟机,所述虚拟机包括许可证卡虚拟设备;如果许可证密钥可用,就分配许可证密钥给所述虚拟机的所述许可证卡;以及如果许可证卡不可用,则停止执行所述虚拟机。
8.如权利要求7所述的方法,其特征在于,还包括,在分配许可证密钥的元素之前,如果需要,确定许可证密钥是否可用,如果不可用,则从许可证经销商获取至少一个额外的许可证密钥。
9.一种在虚拟机环境中许可由多个虚拟机使用的软件产品的系统,所述系统包括用来按虚拟机基础许可虚拟机上的所述软件产品的至少一个子系统。
10.如权利要求9所述的系统,其特征在于,还包括用来在所述虚拟机环境中为所述多个虚拟机中的每个虚拟机实施许可证符合的至少一个子系统。
11.如权利要求10所述的系统,其特征在于,还包括用来使用每个所述虚拟机的许可证卡虚拟设备的至少一个子系统,所述许可证卡虚拟设备逻辑上耦合到许可证管理器,只有当所述虚拟机的所述软件产品的许可证对于该虚拟机可用并可以分配给所述虚拟机时,所述许可证管理器才允许所述软件产品在所述虚拟机上执行。
12.如权利要求11所述的系统,其特征在于,所述软件产品是操作系统。
13.如权利要求11所述的系统,其特征在于,还包括当所述虚拟机需要额外的许可证时,用来使得所述许可证管理器从许可证经销商获得至少一个新的许可证的至少一个子系统。
14.如权利要求9所述的系统,其特征在于,还包括当这种许可证不存在并且对于所述虚拟机不可用时,用来在所述虚拟机环境中获得虚拟机的至少一个额外许可证的至少一个子系统。
15.如权利要求9所述的系统,其特征在于,所述软件产品是操作系统,所述方法还包括至少一个子系统,用来启动虚拟机,所述虚拟机包括许可证卡虚拟设备;如果许可证密钥可用,分配许可证密钥给所述虚拟机的所述许可证卡;以及如果许可证密钥不可用,停止执行所述虚拟机。
16.如权利要求15所述的系统,其特征在于,还包括至少一个子系统,用于在分配许可证密钥的元素之前,如果需要,确定许可证密钥是否可用,并且如果不可用,从许可证经销商获取至少一个额外许可证。
17.一种计算机可读介质,包括用来在虚拟机环境中许可由多个虚拟机使用的软件产品的计算机可读指令,所述计算机可读指令包括用来按虚拟机基础在虚拟机上许可所述软件产品的指令。
18.如权利要求17所述的计算机可读指令,其特征在于,还包括用来在所述虚拟机环境中为所述多个虚拟机的每个虚拟机实施许可证符合的指令。
19.如权利要求18所述的计算机可读指令,其特征在于,在所述虚拟机环境中通过使用每个所述虚拟机的许可证卡虚拟设备来对所述多个虚拟机的每个虚拟机实施许可证符合,所述许可证卡虚拟设备逻辑上耦合到许可证管理器,只有当所述虚拟机的所述软件产品的许可证对于该虚拟机可用并可以分配给所述虚拟机时,所述许可证管理器才允许所述软件产品在所述虚拟机上执行。
20.如权利要求19所述的计算机可读指令,其特征在于,还包括指令,其中,所述软件产品是操作系统。
21.如权利要求19所述的计算机可读指令,其特征在于,还包括指令,用于当虚拟机需要额外的许可证时,使得所述许可证管理器从许可证经销商获得至少一个新的许可证。
22.如权利要求17所述的计算机可读指令,其特征在于,还包括指令,用于当这种许可证不存在并且对于所述虚拟机不可用时,在所述虚拟机环境中自动获得虚拟机的至少一个额外许可证。
23.如权利要求17所述的计算机可读指令,其特征在于,所述软件产品是操作系统,所述计算机可读指令还包括指令,用来启动虚拟机,所述虚拟机包括许可证卡虚拟设备;如果许可证密钥可用,分配许可证密钥给所述虚拟机的所述许可证卡;以及如果许可证密钥不可用,停止执行所述虚拟机。
24.如权利要求23所述的计算机可读指令,其特征在于,还包括指令,用于在分配许可证密钥的元素之前,如果需要,确定许可证密钥是否可用,并且如果不可用,从许可证经销商获取至少一个额外许可证。
25.一种用来在虚拟机环境中许可由多个虚拟机使用的软件产品的硬件控制设备,所述硬件控制设备包括用来按虚拟机基础在虚拟机上许可所述软件产品的装置。
26.如权利要求25所述的硬件控制设备,其特征在于,还包括用来在所述虚拟机环境中为所述多个虚拟机中的每个虚拟机实施许可证符合的装置。
27.如权利要求26所述的硬件控制设备,其特征在于,还包括用来自动使用每个所述虚拟机的许可证卡虚拟设备的装置,所述许可证卡虚拟设备逻辑上耦合到许可证管理器,只有当所述虚拟机的所述软件产品的许可证对于该虚拟机可用并可以分配给所述虚拟机时,所述许可证管理器才允许所述软件产品在所述虚拟机上执行。
28.如权利要求27所述的硬件控制设备,其特征在于,所述软件产品是操作系统。
29.如权利要求27所述的硬件控制设备,其特征在于,还包括装置,其中当虚拟机需要额外许可证时,所述许可证管理器从许可证经销商获得至少一个新的许可证。
30.如权利要求25所述的硬件控制设备,其特征在于,还包括用于当这种许可证不存在并且对于所述虚拟机不可用时,在所述虚拟机环境中自动获得虚拟机的至少一个额外许可证的装置。
31.如权利要求25所述的硬件控制设备,其特征在于,所述软件产品是操作系统,所述硬件控制设备还包括装置,用来启动虚拟机,所述虚拟机包括许可证卡虚拟设备;如果许可证密钥可用,分配许可证密钥给所述虚拟机的所述许可证卡;以及如果许可证密钥不可用,停止执行所述虚拟机。
32.如权利要求31所述的硬件控制设备,其特征在于,还包括装置,用于在分配许可证密钥的元素之前,如果需要,确定许可证密钥是否可用,并且如果不可用,从许可证经销商获取至少一个额外许可证。
全文摘要
本发明的多个实施例提供了用来收集驻留在虚拟计算机系统中的操作系统和应用程序软件的许可证收益的装置。这些实施例的某些具体涉及到提供用来在虚拟机环境中收集现代或传统操作系统或应用程序的许可证收益,并进一步为软件制造商提供持续收益流,而不是一次性交易的装置。更具体来说,某些实施例涉及通过使用在虚拟机环境中的许可证管理器提供软件许可证实施的系统和方法,从而提供在支持传统操作系统和应用程序的计算机系统中收集许可证收益的改进方法。最后,本发明的多个实施例涉及为运行在虚拟机环境中的操作系统和应用程序提供增加的软件支持和升级。
文档编号G06F9/455GK1716148SQ200510076069
公开日2006年1月4日 申请日期2005年5月30日 优先权日2004年6月30日
发明者M·内尔 申请人:微软公司