CN101382905B - 用于虚拟机环境中的仿真设备的开发的系统和方法 - Google Patents

用于虚拟机环境中的仿真设备的开发的系统和方法 Download PDF

Info

Publication number
CN101382905B
CN101382905B CN2008101490820A CN200810149082A CN101382905B CN 101382905 B CN101382905 B CN 101382905B CN 2008101490820 A CN2008101490820 A CN 2008101490820A CN 200810149082 A CN200810149082 A CN 200810149082A CN 101382905 B CN101382905 B CN 101382905B
Authority
CN
China
Prior art keywords
virtual
computation environmental
hardware
subsystem
test
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2008101490820A
Other languages
English (en)
Other versions
CN101382905A (zh
Inventor
E·P·特罗特
瑞内安东西尼奥维加
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101382905A publication Critical patent/CN101382905A/zh
Application granted granted Critical
Publication of CN101382905B publication Critical patent/CN101382905B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Abstract

本发明提供了一种适用于向虚拟计算环境动态地添加虚拟设备的装置。本发明所讨论的系统包括具有清单的虚拟化计算系统,该清单还包括设备列表和外部设备目录,所述外部设备目录为所述虚拟化计算系统的用户提供了用于添加软件插件的目录,所述软件插件包含将虚拟设备添加到虚拟计算环境中所需的规范。某些实施例特别地涉及提供添加和配置虚拟设备的方法。某些实施例特别地涉及提供运行虚拟化计算系统的方法,其中主机操作系统和所述虚拟设备经过一系列的状态,具体包括:初始化、加电、加载被存储的状态、以正常状态运行、保存状态以便将来恢复、断电、以及卸下和关闭。

Description

用于虚拟机环境中的仿真设备的开发的系统和方法
本申请是申请人于2005年5月30日提交的、申请号为“200510076075.9”的、发明名称为“用于虚拟机环境中的仿真设备的开发的系统和方法”的发明专利申请的分案申请。
交叉引用
本申请涉及在下面共同转让的申请中所公开的发明的主题:2003年12月12日提交的、标题为“SYSTEMS AND METHODS FOR BIMODAL DEVICEVIRTUALIZATION OF ACTUAL AND IDEALIZED HARDWARE-BASED DEVICES”的美国专利申请No.(10/734,450)(代理卷号:No.MSFT-2772/305423.01),此处通过引用将其全部结合。
技术领域
本发明一般涉及虚拟机(也被称为“处理器虚拟化”)以及在虚拟机环境中运行软件领域。尤其是,本发明涉及适用于开发和使用仿真物理设备行为的虚拟设备的系统和方法。
背景技术
计算机包括被设计成执行特定的系统指令集的通用中央处理单元(CPU)。具有类似的体系结构或设计规范的一组处理器被认为是同一处理器家族的成员。当前的处理器家族的示例包括由亚利桑那州菲尼克斯市的Motorola公司生产的Motorola680X0处理器家族;由加利福尼亚州桑尼维尔市的Intel公司生产的Intel80X86处理器家族;以及由Motorola公司生产的,并在由加利福尼亚州库珀蒂诺市的Apple计算机公司生产的计算机中使用的PowerPC处理器家族。尽管一组处理器由于其类似的体系结构和设计考虑可处于同一家族中,然而根据其时钟速度和其它参数性能,家族中的处理器也会有很大的不同。
每一微处理器家族执行对该处理器家族唯一的指令。处理器或处理器家族可执行的一组集体的指令被称为处理器的指令集。作为一个示例,由Intel80X86处理器家族使用的指令集与由PowerPC处理器家族使用的指令集不兼容。Inter80X86指令集基于复杂指令集计算机(CISC)格式。Motorola Power PC指令集基于精简指令集计算机(RISC)格式。CISC处理器使用大量的指令,其中一些可执行相当复杂的功能,但是它一般需要许多时钟周期来执行。RISC处理器使用较少数量的可用指令,来执行以更高的速率执行的一组较简单的功能。
处理器家族在计算机系统之中的唯一性通常导致计算机系统的硬件体系结构的其它元件之间的不兼容性。用来自Intel80X86处理器家族的处理器制造的计算机系统具有与用来自PowerPC处理器家族的处理器制造的计算机系统的硬件体系结构不同的硬件体系结构。由于处理器指令集以及计算机系统的硬件体系结构的唯一性,应用软件程序通常被书写成在运行特定操作系统的特定计算机系统上运行。
计算机制造商希望通过令更多而不是更少的应用程序运行在与计算机制造商的产品线相关联的微处理器家族上来将其市场份额最大化。为扩展可运行在计算机系统上的操作系统和应用程序的数量,开发了一种技术领域,其中,称为主机的具有一种类型CPU的给定计算机将包括一仿真器程序,它允许主机计算机仿真一种称为访客的CPU的不相关类型指令。由此,主机计算机将执行促使一个或多个主机指令响应于给定访客指令而被调用的应用程序。由此,主机计算机可运行为其自己的硬件体系结构设计的软件和为具有不相关硬件体系结构的计算机书写的软件两者。作为一个更具体的示例,例如,由Apple计算机制造的计算机系统可运行为基于PC的计算机系统书写的操作系统和程序。也可能使用一仿真器程序以在单个CPU上并发地操作多个不兼容的操作系统。在这一装置中,尽管每一操作系统与其它操作系统不兼容,但是仿真器程序可主宿两个操作系统之一,从而允许不兼容的操作系统在同一计算机系统上并发地运行。
当在主机计算机系统上仿真访客计算机系统时,访客计算机系统被称为“虚拟机”,因为访客计算机系统仅作为一种特定硬件体系结构的纯软件表示存在于主机计算机系统中。术语仿真器、虚拟机和处理器仿真有时可互换地使用,以表示模仿或仿真一个完整的计算机系统的硬件体系结构的能力。作为一个示例,由加利福尼亚州圣马特奥市的Connectix公司创建的Virtual PC软件仿真包括Intel80X86Pentium处理器和各种主板组件和卡的整个计算机。这些组件的操作在运行于主机上的虚拟机中仿真。在诸如具有PowerPC处理器的计算机系统等主机计算机的操作系统软件和硬件体系结构上执行的仿真器程序模仿整个访客计算机系统的操作。
仿真器程序担当主机机器的硬件体系结构和由运行在被仿真的环境中的软件发送的指令之间的交换点。该仿真器程序可以是一主机操作系统(HOS),它是直接运行在物理计算机硬件上的操作系统。或者,被仿真的环境也可以是虚拟机监控程序(VMM),它是一软件层,其直接运行在硬件之上,并通过展示与VMM正在虚拟化(允许VMM不被其上运行的操作系统层注意)的硬件相同的接口来虚拟化该机器的所有资源。主机操作系统和VMM可在同一物理硬件上并排运行。
虚拟设备是用软件实现的逻辑设备,它相应于某种类型的实际的或理想化的物理设备。一般地,有两种用于模仿虚拟设备的方法:“硬件虚拟设备”方法,它可直接模仿现有的一种硬件;以及“理想化虚拟设备”方法,它不是物理硬件的单纯映像,而是对虚拟机(VM)环境的优化。
硬件虚拟设备的方法提供了兼容性方面的优点;由于在各个方面虚拟设备就像真实的设备一样运行,所以被设计为与设备交互的软件(例如,驱动)可将在不修改的情况下工作于硬件虚拟设备。然而,硬件虚拟设备在性能方面有缺点,在不造成明显的负载开销(以及低效率)的情况下,常常难以用虚拟设备来仿真物理硬件,因为硬件设计者一般不考虑虚拟化问题,并且因此,硬件虚拟设备常常明显地慢于它们的真实的硬件相对物。
另一方面,理想化虚拟设备为开发者提供极大的自由度,以便设计容易实现并且能高效使用的虚拟设备。由于理想化虚拟设备的设计不需要遵守由物理硬件设计能强加的限制,所以理想化虚拟设备可以进行优化以便在VM环境内使用。还有,理想化虚拟设备的开发者自己不需要关心难以理解的副作用(例如,时序和状态改变),现有软件可能依赖这些副作用进行正确的操作。还有,开发者还可以创建这样的理想化虚拟设备,所述理想化虚拟设备可模拟事实上并不存在的硬件,例如,允许在访客系统和主机系统之间进行通信的虚拟设备。然而,当使用理想化虚拟设备的方法时,由于所述虚拟设备事实上可能不会在各个方面完全与真实设备一样地操作,所以存在可能引发兼容性问题的风险,并且可设计为与物理设备交互的软件(例如,驱动)在不被修改的情况下,可能不能正确地或者根本不能工作于理想化虚拟设备。
目前,可以用在虚拟机中的虚拟设备(理想化的或硬件)组是在编写该虚拟机软件时预先确定的,并且当前的虚拟机产品不包括用于添加新的虚拟设备的装置。这意味着设备的数量和种类限定为虚拟机软件中所包含的那些数量和种类。由于技术的改进和设备(物理的和虚拟的)的数量不断增加,所以能够将新的虚拟设备添加到虚拟机软件的能力已经变得更加关键。需要一种方法来根据需要在虚拟机环境中动态地添加新的虚拟设备。
除了虚拟机环境的需要之外,一般也需要可以将新的虚拟设备添加到系统以便支持硬件的开发以及用于该硬件的软件驱动的开发的手段。对于新的硬件,需要质量测试以便发现并消除新的硬件设备中的缺陷和不曾预料的错误。一般地,这种类型的测试方法是等待,直到已经设计了硬件设备并且已经制造了原型之后为止。然而,这种设计—原型—测试的过程效率很低,如果在测试期间发现错误,则该过程就要再次从开头开始,并且因此导致开发新设备的周期很长。需要一种方法来减少物理设备产品上市所需的时间。类似地,就物理硬件设备而言,无论旧的还是新的,进行新的设备驱动程序软件的完整检测都是最耗时的,并且在一些情况下,很难或者甚至不可能完成,因为很难以及时而有效的方式引发物理硬件设备产生多种错误以便由设备驱动程序处理。结果是,软件驱动中的驱动代码的许多路径不能全部运行,因为在其上运行该测试的物理硬件设备没有(并且实际上不能)在有限的测试周期内显示出全部范围的错误。因此,需要一种方法来减少设备驱动程序软件测试所需的时间,并且提高设备驱动程序软件测试的质量。
虚拟设备似乎已提供了关于两个方面的解决方法:能够镜像所提议的物理硬件设备的功能的硬件虚拟设备可以在开发物理原型之前用于测试某些硬件功能和兼容性,由于修改虚拟设备比修改物理原型设备更容易,因此缩短了设计过程。类似地,对于测试新的设备驱动程序软件,理想化虚拟设备可以用于引发为了全面测试新的设备驱动程序所需的所有所期望的硬件设备错误(其中,就创建所期望的错误的意义而言,虚拟设备是“理想化的”,从而消除为了故意这么做而物理创建硬件设备的需要)。然而,这种方法的缺点是这样的事实,即,虚拟设备往往可硬编码,也就是,它们往往被直接写入虚拟计算环境的单片集成电路中,并且因此不容易被修改。例如,在现有虚拟机环境中,虚拟设备只装载那些可硬编码以便装载的虚拟设备。因此在本领域中,需要一种虚拟计算环境,该虚拟计算环境允许新的虚拟设备可进行动态的和可修改的装载。
发明概述
本发明的多个实施例提供了用于将虚拟设备动态地添加到虚拟计算环境的方法。该发明包括具有清单(它包括内部设备列表)以及外部设备目录的虚拟化计算系统,所述外部设备目录向所述虚拟化计算系统的用户提供添加软件插件程序的方法,所述软件插件程序包含向所述虚拟计算环境添加虚拟设备所需的规范。说明了添加虚拟设备的方法,其中,扫描该外部设备目录,使用户获得、指定和保存适当的设备属性,并且将新的虚拟设备添加到所述清单,并且可在虚拟计算环境中使用。
这些实施例中的某些特别涉及提供运行虚拟化计算系统的方法,其中主机操作系统和虚拟设备经过一系列的状态,具体地:初始化、加电、加载存储状态、以正常状态运行、保存状态以便将来恢复、断电、卸载以及关闭。在正常运行之前的状态可认为是虚拟设备操作的准备。所述正常运行状态是这样的状态,在这种状态中,所有设备都准备好了,并且主机操作系统接受来自访客操作系统的请求。正常运行之后的状态可以是取消正常运行之前的步骤,以便为关闭计算设备做准备。
这些实施例中的某些特别地涉及提供用于在物理设备的开发中测试虚拟设备的方法。这些实施例以两种重要的方式辅助物理设备的开发:1)它们允许在物理地制造出原型之前开始设备的测试,以及2)它们允许有意图地向设备中引入错误,这提供了与以前所能做到的相比更加完整的设备驱动程序软件中的路径的测试。
某些附加实施例特别地涉及提供一种方法,以便提供用于测试和辅助设备驱动程序软件的开发的容易产生错误(error-prone)的理想化的虚拟设备。这些实施例以两个重要的方式辅助设备驱动程序的开发:(1)它们允许测试设备而不必有目的地开发容易产生错误的原型,以及(2)它们允许为更完整地和更充分地测试新的设备驱动程序有意图地产生多种错误。
附图的简要说明
当结合所附附图进行了阅读时,将能更好地理解之前的概述,以及下面优选实施例的详细说明。出于说明本发明的目的,在附图中示出了本发明的示例性结构;然而,本发明并不限于所公开的特定方法和手段。在附图中:
图1是表示,可以结合本发明各个方面的计算机系统的框图;
图2示出了用于在计算机系统中仿真操作环境的硬件和软件结构的逻辑分层;
图3A示出了虚拟化计算系统;
图3B示出了虚拟化计算系统的替换实施例,它包括与主机操作系统一起运行的虚拟机监视器;
图4示出了图3B的虚拟化计算系统,包括与虚拟机监视器内的虚拟设备有关的文件结构;
图5示出了用于添加外部设备以供虚拟化计算系统使用的方法;
图6示出了操作虚拟化计算环境的方法,其中灵活地添加虚拟设备;
图7示出了使用虚拟计算环境设计并测试虚拟硬件设备的方法;以及
图8示出了使用虚拟计算环境中的虚拟硬件设计并测试硬件驱动的方法。
具体实施方式
本发明的主题是用细节来描述的,以满足法定要求。然而,该描述本身并不制造限制本专利的范围。相反,发明人构想所要求保护的本发明也可结合其它现有或未来技术用其它方法来实现,以包括不同的步骤或类似于本文档中所揭示的那些步骤的组合。此外,尽管此处使用了术语“步骤”意味着所采用方法的不同元素,然而该术语不应当被揭示为暗示此处所揭示的各个步骤之中或之间的任何特定顺序,除非当明确地描述了个别步骤的顺序。
计算机环境
本发明的许多实施例可以在计算机上执行。图1及以下讨论旨在提供对适于在其中实现本发明的计算环境的简要概括描述。尽管并非所需,但本发明将在诸如由客户机工作站或服务器等计算机执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。此外,本领域的技术人员可以理解,本发明可以用其它计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费者电子设备、网络PC、小型机、大型机等等。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
如图1所示,示例性通用计算系统包括常规计算机20或类似装置,包括处理单元21、系统存储器22以及将包括系统存储器的各类系统组件耦合至处理单元21的系统总线23。系统总线23可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。系统存储器包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出系统(BIOS)26,包含如在启动时协助在计算机20内的元件之间传输信息的基本例程,可储存在ROM24中。个人计算机20也可包括用于对硬盘(未示出)进行读写的硬盘驱动器27、用于对可移动磁盘29进行读写的磁盘驱动器28以及用于对可移动光盘31如CD ROM或其它光介质进行读写的光盘驱动器30。硬盘驱动器27、磁盘驱动器28以及光盘驱动器30分别通过硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34连接至系统总线23。驱动器及其相关的计算机可读介质为计算机20提供了计算机可执行指令、数据结构、程序模块和其它数据的非易失性存储。尽管这里描述的示例环境采用了硬盘39、可移动磁盘29以及可移动光盘31,然而本领域的技术人员可以理解,在示例性操作环境中也可以使用可储存可由计算机访问的数据的其它类型的计算机可读介质,如盒式磁带、闪存卡、数字视频盘、Bernoulli盒式磁盘、随机存取存储器(RAM)、只读存储器(ROM)等等。
多个程序模块可储存在硬盘、磁盘29、光盘31、ROM24或RAM25中,包括操作系统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连接至LAN51。当在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′可以代替主机操作系统104"或与其并排地运行,后一选项在图3B中示出。为了简明起见,后文所有的讨论(尤其是关于主机操作系统104的讨论)应当针对图3A所示的实施例;然而,这些讨论的每一方面应当同等地应用于图3B的实施,其中图3B的VMM104′本质上在功能层替换了下文描述的图3A的主机操作系统104的角色。
再次参考图3A,在主机OS104(或VMM104′)上的是两个虚拟机(VM)实现—VM A108,它可以是,例如虚拟化的Intel386处理器;以及VM B110,它可以是,例如Motorola680X0处理器家族之一的虚拟化版本。在每一VM A108和110之上的分别是访客操作系统(访客OS)A112和B114。在访客OS A112上运行两个应用程序—应用程序A1116和应用程序A2118,在访客OS B114上的是应用程序B1120。
动态地增加虚拟设备
图4示出了虚拟化的计算系统,诸如图3B中示出的虚拟机监视器(VMM)系统(或,对于另外的实施例,诸如图3A示出的主机OS系统)。在该图中,清单122是一个主机OS104中的配置文件,清单122进一步包括设备列表A124和设备列表B126。清单122可用于配置和列举将被由主机OS104所使用的虚拟设备。设备列表A124和设备列表B126包含用于分别可由VM A108和VM B110所使用的所有虚拟设备的列表和相关联的参数。根据本发明,除了当虚拟机软件(例如,虚拟PC)安装时所包括的那些之外,被列于清单122的设备列表124和设备列表126内的某些设备随时间增加到该列表内(外部定义的设备)。标识和说明虚拟设备的信息存储在设备列表A124和设备列表B126内。此外,在某些例子中,所述虚拟设备包含一个文件名,在一个例子中,所述文件名可用于一个动态链接库(DLL)文件,当被选用时,所述的动态链接库文件可用于进一步定义设备。
外部设备目录128是主机OS104内的目录,并且关于新的虚拟设备的信息在增加到清单122中之前可放置在其内,并且可以由VM A108或VM B110使用。在一个例子中,一个插件可编写并存储在外部设备目录128中,直到使得虚拟设备可由虚拟计算设备使用的方法开始为止。
图5示出了使得虚拟设备可由虚拟计算设备使用的方法130。方法130可以关于VM A108的例子描述;然而,本领域的技术人员应当理解,该方法适用于运行在主机OS104上的其它虚拟机。在步骤132,主机OS104扫描外部设备目录128来寻找外部设备插件。在步骤134,主机OS104获得与每个外部设备相关的属性。在一个例子中,主机OS104为每个外部设备调用一个DLL,并且该DLL将要用于每个设备的适当属性返回给主机OS104。
在步骤136,适用于每个设备的属性都呈现给用户。在一个例子中,一个图形化用户接口(GUI)将每个设备和相关联的属性呈现给用户。在步骤138,用户为每个设备选择所希望的设备和它们的属性(诸如,例如存储器大小、位速率和显示分辨率)。在步骤140,用户保存所希望的设备和它们相应的设备属性,并且主机OS104将所希望的设备增加到清单122。在完成步骤140之后,方法130结束并且新的设备已经配置好并增加到清单122的设备列表A124内,以及准备好在需要时可由VM A108使用。
图6示出了运行一个虚拟化的计算系统(如参考图4说明的)的方法150,其中虚拟设备动态地添加。方法150说明了当主机操作系统和所有的虚拟设备在虚拟化计算系统内运行时(如参考图4说明的),主机操作系统和所有的虚拟设备所经过的“状态”进展。
在步骤152,计算机20(图1)开启,并且主机OS104进行初始化和分配资源(诸如存储器)。在步骤154,主机OS104加电,并且虚拟设备虚拟地将它们自己布线在主板上,从而它们可以被配置成与主机OS104通信。包括在这个“虚拟布线”中,主机OS104执行方法130,方法130配置所述新的设备,并且将它们添加到清单122内的设备列表A124和B126,以及准备好可在需要时由VM A108和VM B110使用。在一个虚拟PC卡的例子中,虚拟PCI卡与虚拟PCI总线通信,以便通知虚拟PCI总线,例如,所述虚拟PCI卡出现了,以及在哪个插槽内。在步骤154中还定义了I/O端口范围。在另一个例子中,当中断控制器(未示出)在这个步骤中加电时,为了给正常运行做准备,所述中断控制器与I/O控制器(未示出)通信。
在判断步骤156,由主机OS104判断以前存储的状态是否要恢复。如果主机OS104是恢复所存储的状态,方法150进入步骤158;如果主机OS104没有恢复,所有的设备可设置为默认状态值,并且方法150进入步骤160。
在步骤158,主机OS104访问并加载所存储的快照文件,所述的快照文件包含用于所述虚拟处理器和所述虚拟设备的状态数据,以及在保存所述快照文件时所产生的设备列表。加载快照文件允许虚拟机处理器和设备将它们自己“复苏”到最后保存虚拟机的状态时的状态。在一个例子中,与装载快照文件(未示出)以便复苏VM A108和它的设备以及它们相应存储在清单122内的设备列表中的配置。
在步骤160,初始化完成,主机OS104进入正常运行模式(即,加电状态)。在正常运行模式中,主机OS104处理来自VM A108和VM B110的请求。在一个例子中,VM A108可使用存储在设备列表A和主机OS104内的虚拟设备,与这些虚拟设备传递通信,并且在必要时ke使用计算机硬件102内的硬件设备。
在判断步骤162,主机OS104判断是否收到了关闭电源请求。如果已经收到了关闭电源请求,方法150进入步骤164;如果没有,方法150通过返回到步骤160继续正常运行模式。
在判断步骤164,为了准备关闭电源,主机OS104判断是否做出了为将来的恢复保存虚拟机和虚拟设备的状态的请求。如果已经做出了为将来的恢复保存虚拟机状态的请求,方法150进入步骤166,如果没有,方法150进入步骤168。
在步骤166,主机OS104保存虚拟处理器和所有虚拟设备的状态以便将来进行恢复。在判断168,主机OS判断所述的关闭电源请求是否是“重启动请求”。如果该请求是重启动请求,方法150返回步骤154。如果不是,方法150进入步骤170。
在步骤170,主机OS104释放资源并且解除虚拟设备的布线。步骤170是步骤154的反转,并且因此反转在步骤154中所执行的任务。步骤170进入步骤172。
在步骤172,主机OS104解除初始化,并且准备关闭计算机。步骤172是步骤152的反转,并且因此反转步骤152中所执行的任务。当完成步骤172之后,关闭计算机20,并且方法150结束。
图7示出了在虚拟计算环境设计和测试物理硬件设备的方法180。通过允许在任何设备(包括原型)已经被物理地制造之前,通过在允许进行更完善的设备测试的虚拟化环境中完整地测试所述设备,方法180可简化和改进物理硬件设备设计中的时效性。
在步骤182,可使用软件工具设计一个物理硬件设备,并且然后作为虚拟硬件设备(VHD)实现(它可添加到图4的外部设备目录128中)。在步骤184,开发一个用于测试所述设备的专用软件测试设备驱动程序(TDD)。在步骤186,VHD由VMM添加到清单122,并且如图5的方法130中所说明的,成为可由VM A108和VM B110所使用的,并且所述TDD被添加到访客OS A112。在步骤188,所述VHD可由所述TDD在虚拟机环境中测试。以这种方式,设备设计可由通过虚拟环境中的TDD来实现传统的硬件测试例程测试。
在判断步骤190,判断VHD的性能是否通过了步骤188的测试,并且如果没有,则方法180返回步骤182,修改设备的设计并且重复所述处理。然而,如果在步骤190通过了测试,则方法180进入可选择的步骤192,其中可开发和测试一个原型(由于VHD测试的成功,可能是一个可省略的过程),并且在步骤194,新的硬件设备规范被定稿并且发送到制造工程,并且方法180结束。
图8示出了通过在虚拟计算环境中使用虚拟硬件设备设计和测试用于物理硬件设备的设备驱动程序的方法280。通过允许进行虚拟设备驱动程序测试而不需要设计可以再现所述设备驱动程序所需期望处理的所有错误的专用物理演讲设备,方法280简化并改进了设备驱动程序设计中的时效性。
在步骤282,可使用软件工具开发设备驱动程序(DD),并且然后作为虚拟机(例如,VM A108)上的虚拟设备来实现。在步骤284,开发专用的虚拟测试硬件设备(VTHD)以便测试所述的设备驱动程序。在步骤286,所述的VTHD可由所述VMM添加到清单122,并且如图5的方法130中所说明的,成为VM A108和VM B110所使用的,并且所述DD被添加到访客OS A112。在步骤288,基于由所述VTHD所产生的错误,所述DD在虚拟机环境中测试。以这种方式,DD的设计可由通过虚拟环境中的VTHD来实现传统的设备驱动程序测试例程测试。这种测试可以包括向设备设计中引入有意图的错误,以便测试驱动软件的路径。此外,通过在不同的访客OS上安装所述的驱动,可以跨虚拟计算环境中的多种操作系统快速地测试所述的驱动软件。
在判断290,判断所述DD的性能是否通过了步骤288的测试,并且如果没有,方法280返回步骤282,修改所述DD的设计并且重复所述处理。然而,如果在步骤290通过了测试,方法280进入可选择的步骤292,其中可以开发并测试专用的物理硬件设备(由于VHD测试的成功,可能在简单修改的硬件设备上忽略该过程),并且在步骤294,新的设备驱动程序被定稿,并且进行分发,并且方法280结束。
结论
此处所描述的各种系统、方法和技术可以用硬件或软件,或在适当时用两者的组合来实现。由此,本发明的方法和装置,或其某些方面,可以采用包含在有形介质,如软盘、CD-ROM、硬盘或任何其它机器可读存储介质中的程序代码(即,指令)的形式,其中,当程序代码被加载到诸如计算机等机器上并由其执行时,该机器变为用于实施本发明的装置。在可编程计算机上的程序代码执行的情况下,计算机一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。一个或多个程序较佳地以高级过程语言或面向对象的编程语言来实现,以与计算机系统通信。然而,如有需要,程序可以用汇编语言或机器语言来实现。在任何情况下,语言可以是已编译或已解释的语言,并与硬件实现相组合。
本发明的方法和装置也可以用程序代码的形式来实施,该程序代码通过某一传输介质来发送,如通过电线或电缆、通过光纤或通过任一其它形式的传输,其中,当程序代码由诸如EPROM、门阵列、可编程逻辑器件(PLD)、客户机计算机、录像机等机器接收被装载到其中由其执行时,该机器变为用于实施本发明的装置。当在通用处理器上实现时,程序代码与处理器相结合,以提供用于调用本发明的功能的唯一装置。
尽管结合各个附图的较佳实施例描述了本发明,然而可以理解,在不脱离本发明的情况下,可以使用其它类似的实施例,或对所描述的实施例作出修改和添加,以执行本发明的相同功能。例如,尽管本发明的示例性实施例是在仿真个人计算机的功能的数字设备的环境中描述的,然而本领域的技术人员可以认识到,本发明不限于这类数字设备,如本申请中所描述的,本发明可应用于任何数量的现有或新兴计算设备或环境,如游戏控制台、手持式计算机、便携式计算机等等,无论它们是有线还是无线的,并且本发明可应用于通过通信网络连接并在网络上交互的任何数量的这类计算设备。此外,应当强调,此处构想了各种计算机平台,包括手持式设备操作系统和其它应用专用硬件/软件接口系统,尤其是当无线联网的设备的数量持续增长时。因此,本发明不应当限于任何单个实施例,而是相反,应当依照所附权利要求书的宽度和范围来解释。
最后,此处所描述的揭示的实施例可适用于其它处理器体系结构、基于计算机的系统、或系统虚拟化,并且这些实施例由此处的揭示明确地考虑在内,因此,本发明不应限于此处所描述的具体实施例,而是相反,应当被更广泛地解释。同样,为除处理器虚拟化之外的目的而使用合成指令也由此处的揭示考虑在内,并且在除处理器虚拟化之外的环境中对合成指令的任何这样的使用应当被更广泛地包含在此处的揭示的意义之内。

Claims (10)

1.一种用于测试物理硬件设备PHD的设计的方法,所述方法包括:
基于所述PHD的设计实现虚拟硬件设备VHD;
开发用于测试所述VHD的测试设备驱动程序TDD;
将所述VHD和所述TDD添加到虚拟计算环境VCE中,其中所述虚拟计算环境动态地添加所述的VHD,并且所述虚拟计算环境动态地添加所述VHD的步骤包括以下四个步骤:
所述虚拟计算环境扫描外部服务目录;
所述虚拟计算环境采集一组用于新的虚拟硬件设备的设备属性;
所述虚拟计算环境向运行于所述虚拟计算环境中的虚拟机呈现出所述的设备属性组;以及
所述虚拟机使用所述新的虚拟硬件设备;
使用所述VCE中的TDD来测试所述的VHD。
2.如权利要求1所述的方法,其特征在于,还包括:
制作对应于在所述VCE中用所述TDD测试的VHD的PHD的原型;以及
使用所述TDD测试所述PHD的原型。
3.一种用于测试设备驱动程序DD的设计的方法,所述方法包括:
开发用于测试所述DD的虚拟测试硬件设备VTHD;
将所述VTHD和所述DD添加到虚拟计算环境VCE中,其中所述虚拟计算环境动态地添加所述VTHD,并且所述虚拟计算环境动态地添加所述VTHD的步骤包括以下四个步骤:
所述虚拟计算环境扫描外部服务目录;
所述虚拟计算环境采集一组用于新的虚拟硬件设备的设备属性;
所述虚拟计算环境向运行于所述虚拟计算环境中的虚拟机呈现出所述的设备属性组;以及
所述虚拟机使用所述新的虚拟硬件设备;
使用所述VCE中的所述VTHD来测试所述DD。
4.如权利要求3所述的方法,其特征在于,还包括:
制作所述VTHD的原型硬件设备,在所述VCE内在所述VTHD上测试所述DD;以及
在所述原型硬件设备上测试所述DD。
5.一种用于测试物理硬件设备PHD的设计的系统,所述系统包括:
用于基于所述PHD的设计实现虚拟硬件设备VHD的子系统;
用于开发测试所述VHD所需的测试设备驱动程序TDD的子系统;
用于将所述VHD和所述TDD添加到虚拟计算环境中VCE的子系统,其中所述虚拟计算环境还包括用于动态地添加所述的VHD的子系统,并且其中用于动态地添加VHD的所述子系统包括以下四个子系统:
用于所述虚拟计算环境扫描外部服务目录的子系统;
用于所述虚拟计算环境采集一组用于新的虚拟硬件设备的设备属性的子系统;
用于所述虚拟计算环境向运行于所述虚拟计算环境中的虚拟机呈现所述的设备属性组的子系统;以及
用于所述虚拟机使用所述新的虚拟硬件设备的子系统;
用于在所述VCE中使用所述TDD测试所述的VHD的子系统。
6.如权利要求5所述的系统,其特征在于,还包括:
用于制作对应于在所述VCE中用所述TDD来测试VHD的PHD的原型的子系统;以及
用于使用所述TDD测试所述PHD的原型的子系统。
7.一种用于测试设备驱动程序DD的设计的系统,所述系统包括:
用于开发测试所述DD所需的虚拟测试硬件设备VTHD的子系统;
用于将所述VTHD和所述DD添加到虚拟计算环境VCE中的子系统,其中所述虚拟计算环境还包括用于动态地添加所述的VTHD的子系统,并且其中所述用于动态地添加所述VTHD的子系统包括以下四个子系统:
用于所述虚拟计算环境扫描外部服务目录的子系统;
用于所述虚拟计算环境采集一组用于新的虚拟硬件设备的设备属性的子系统;
用于所述虚拟计算环境向运行于所述虚拟计算环境中的虚拟机呈现所述设备属性组的子系统;以及
用于所述虚拟机使用所述新的虚拟硬件设备的子系统;
用于在所述VCE中使用所述VTHD测试所述DD的子系统。
8.如权利要求7所述的系统,其特征在于,还包括:
用于制作所述VTHD的原型硬件设备的子系统,在所述VCE内在所述VTHD上测试所述的DD;以及
用于在所述的原型硬件设备上测试所述DD的子系统。
9.一种用于测试物理硬件设备PHD的设计的硬件控制设备,所述硬件控制设备包括:
用于基于所述PHD所述设计来实现虚拟硬件设备VHD的装置;
用于开发测试所述VHD所需的测试设备驱动程序TDD的装置;
用于将所述VHD和所述TDD添加到虚拟计算环境中VCE的装置,其中所述虚拟计算环境还包括用于动态地添加所述VHD的装置,并且其中所述用于动态地添加所述VHD的装置还包括以下四个装置:
用于所述虚拟计算环境扫描外部服务目录的装置;
用于所述虚拟计算环境采集一组用于新的虚拟硬件设备的设备属性的装置;
用于所述虚拟计算环境向运行于所述虚拟计算环境中的虚拟机呈现所述的设备属性组的装置;和
用于所述虚拟机使用所述新的虚拟硬件设备的装置;
用于在所述VCE中使用所述TDD来测试所述VHD的装置。
10.一种用于测试设备驱动程序DD的设计的硬件控制设备,所述硬件控制设备包括:
用于开发测试所述DD所需的虚拟测试硬件设备VTHD的装置;
用于将所述VTHD和所述DD添加到虚拟计算环境VCE中的装置,其中述虚拟计算环境还包括用于动态地添加所述VTHD的装置,并且其中所述用于动态地添加所述VTHD的装置还包括以下四个装置:
用于所述虚拟计算环境扫描外部服务目录的装置;
用于所述虚拟计算环境采集一组用于新的虚拟硬件设备的设备属性的装置;
用于所述虚拟计算环境向运行于所述虚拟计算环境中的虚拟机呈现所述设备属性组的装置;以及
用于所述虚拟机使用所述新的虚拟硬件设备的装置;
用于在所述VCE中使用所述VTHD测试所述DD的装置。
CN2008101490820A 2004-06-30 2005-05-30 用于虚拟机环境中的仿真设备的开发的系统和方法 Active CN101382905B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/883,620 2004-06-30
US10/883,620 US7580826B2 (en) 2004-06-30 2004-06-30 Systems and methods for development of emulated devices in a virtual machine environment

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100760759A Division CN100511150C (zh) 2004-06-30 2005-05-30 用于虚拟机环境中的仿真设备的开发的系统和方法

Publications (2)

Publication Number Publication Date
CN101382905A CN101382905A (zh) 2009-03-11
CN101382905B true CN101382905B (zh) 2012-09-05

Family

ID=35148940

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2008101490820A Active CN101382905B (zh) 2004-06-30 2005-05-30 用于虚拟机环境中的仿真设备的开发的系统和方法
CNB2005100760759A Active CN100511150C (zh) 2004-06-30 2005-05-30 用于虚拟机环境中的仿真设备的开发的系统和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNB2005100760759A Active CN100511150C (zh) 2004-06-30 2005-05-30 用于虚拟机环境中的仿真设备的开发的系统和方法

Country Status (5)

Country Link
US (1) US7580826B2 (zh)
EP (1) EP1615126A3 (zh)
JP (1) JP2006018814A (zh)
KR (1) KR20060047766A (zh)
CN (2) CN101382905B (zh)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689723B1 (en) * 2004-11-08 2010-03-30 Sun Microsystems, Inc. Virtual cloned device node
US7774794B2 (en) * 2005-08-19 2010-08-10 Intel Corporation Method and system for managing bandwidth in a virtualized system
CN100399274C (zh) * 2005-09-19 2008-07-02 联想(北京)有限公司 一种虚拟机系统输入/输出设备动态分配的方法及其设备
WO2007065307A2 (en) * 2005-12-10 2007-06-14 Intel Corporation Handling a device related operation in a virtualization environment
US8249853B2 (en) * 2006-03-31 2012-08-21 Intel Corporation Exposing device features in partitioned environment
US8321377B2 (en) 2006-04-17 2012-11-27 Microsoft Corporation Creating host-level application-consistent backups of virtual machines
US7406407B2 (en) * 2006-06-01 2008-07-29 Microsoft Corporation Virtual machine for operating N-core application on M-core processor
US7725305B2 (en) * 2006-06-08 2010-05-25 Microsoft Corporation Partial virtualization on computing device
WO2008017001A2 (en) * 2006-08-02 2008-02-07 Moka5, Inc. Sharing live appliances
US8181025B2 (en) 2006-10-31 2012-05-15 Intel Corporation Method and apparatus for registering agents onto a virtual machine monitor
US7881919B2 (en) * 2007-04-03 2011-02-01 Microsoft Corporation USB device simulator
US7747814B2 (en) * 2007-06-26 2010-06-29 Microsoft Corporation Virtual machine state snapshots
US8612972B2 (en) 2007-06-27 2013-12-17 Microsoft Corporation Running add-on components in virtual environments
US9588511B2 (en) * 2007-08-03 2017-03-07 Hurco Companies, Inc. Virtual machine manager
US8839231B2 (en) * 2007-12-04 2014-09-16 Dell Products L.P. Method and system for software installation
US8209686B2 (en) * 2008-02-12 2012-06-26 International Business Machines Corporation Saving unsaved user process data in one or more logical partitions of a computing system
KR101489301B1 (ko) * 2008-03-20 2015-02-06 삼성전자주식회사 가상환경 시스템 및 그의 구동방법
US9946493B2 (en) * 2008-04-04 2018-04-17 International Business Machines Corporation Coordinated remote and local machine configuration
US8024169B2 (en) 2008-04-23 2011-09-20 International Business Machines Corporation Storage area network management modeling simulation
US8543998B2 (en) * 2008-05-30 2013-09-24 Oracle International Corporation System and method for building virtual appliances using a repository metadata server and a dependency resolution service
US8862633B2 (en) 2008-05-30 2014-10-14 Novell, Inc. System and method for efficiently building virtual appliances in a hosted environment
US9262194B2 (en) * 2008-06-10 2016-02-16 Apple Inc. Virtual machine communications
US9170904B1 (en) * 2008-06-30 2015-10-27 Emc Corporation I/O fault injection using simulated computing environments
US20100115508A1 (en) * 2008-10-30 2010-05-06 Lenovo Plug-in architecture for hypervisor-based system
CN101430649B (zh) * 2008-11-19 2011-09-14 北京航空航天大学 基于虚拟机的虚拟计算环境系统
CN101770410B (zh) * 2009-01-07 2016-08-17 联想(北京)有限公司 基于客户操作系统的系统还原方法、虚拟机管理器及系统
US8219990B2 (en) * 2009-05-28 2012-07-10 Novell, Inc. Techniques for managing virtual machine (VM) states
US8335854B2 (en) 2009-07-21 2012-12-18 Empire Technology Development Llc Performing services on behalf of low-power devices
US8266256B2 (en) * 2009-07-21 2012-09-11 Empire Technology Development Llc Virtualization for low-power networks
US8301818B2 (en) * 2009-12-11 2012-10-30 Oracle America, Inc. Virtual hot plugging of devices and virtual devices
US8612633B2 (en) 2010-03-31 2013-12-17 Microsoft Corporation Virtual machine fast emulation assist
US20110289469A1 (en) * 2010-05-21 2011-11-24 Huang Thomas B Virtual interconnection method and apparatus
US8533531B2 (en) 2010-06-10 2013-09-10 Microsoft Corporation Multimedia hardware emulation for application testing
DE102010053485A1 (de) * 2010-12-04 2012-06-06 Robert Bosch Gmbh Verfahren zum Betreiben einer Arbeitsmaschine und Arbeitsmaschine mit virtueller Automatisierung
CA2802026C (en) * 2011-05-09 2016-04-26 Hyundai Motor Company Exception handling test apparatus and method
CA2764354A1 (en) 2012-01-16 2013-07-16 Giovanni J. Morelli Host-emulator bridge system and method
CA2764362A1 (en) * 2012-01-16 2013-07-16 Giovanni J. Morelli Rdp session monitor/control system and application
CA2764283A1 (en) 2012-01-16 2013-07-16 Giovanni J. Morelli Mobile device control application for improved security and diagnostics
US9965301B2 (en) 2013-03-28 2018-05-08 Sphere 3D Inc. Systems and methods for managing emulation resources
CN103697916B (zh) * 2013-12-24 2017-01-11 河北汉光重工有限责任公司 惯性测量单元虚拟仪器
CN104765637A (zh) * 2014-01-02 2015-07-08 深圳迈瑞生物医疗电子股份有限公司 一种在监护仪上安全运行桌面应用程序的系统
TWI598819B (zh) * 2015-04-30 2017-09-11 捷鼎國際股份有限公司 基於虛擬機器進行硬體裝置測試之電腦系統及方法
US10234921B2 (en) * 2016-03-04 2019-03-19 Schneider Electric USA, Inc. Systems and methods for operating a virtual power environment
CN106371962B (zh) * 2016-08-30 2019-01-01 广州广电运通金融电子股份有限公司 一种跨平台的驱动测试方法、装置及系统
US10942757B2 (en) * 2017-02-27 2021-03-09 Red Hat, Inc. Virtual machine security through guest-side emulation
US10409632B2 (en) * 2017-03-31 2019-09-10 The Boeing Company Emulation of hardware components based on interrupt design
CN107436810A (zh) * 2017-07-03 2017-12-05 北京东土科技股份有限公司 一种计算机系统资源调度方法及装置
US10705933B2 (en) 2017-07-18 2020-07-07 The Boeing Company System integration using virtualization
WO2019111400A1 (ja) 2017-12-08 2019-06-13 株式会社アキブシステムズ コンピュータの起動方法
US11347531B2 (en) * 2018-10-31 2022-05-31 The Boeing Company Generalized virtualization platform for systems using hardware abstraction software layers
EP3961389A1 (en) * 2020-08-26 2022-03-02 The Boeing Company Virtual machine for developing and testing target code for hardware designs
US11544234B2 (en) 2020-11-12 2023-01-03 International Business Machines Corporation Virtualizing specific values in a guest configuration based on the underlying host symbol repository
JP2023145128A (ja) 2022-03-28 2023-10-11 パナソニックIpマネジメント株式会社 開発環境構築システム、開発環境構築方法およびプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6243833B1 (en) * 1998-08-26 2001-06-05 International Business Machines Corporation Apparatus and method for self generating error simulation test data from production code

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4649479A (en) 1985-02-28 1987-03-10 International Business Machines Corp. Device driver and adapter binding technique
US5717903A (en) * 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
US6253224B1 (en) 1998-03-24 2001-06-26 International Business Machines Corporation Method and system for providing a hardware machine function in a protected virtual machine
US6496847B1 (en) 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
DE10036387A1 (de) * 1999-08-16 2001-03-01 Advantest Corp Halbleitertestprogramm-Diagnosevorrichtung
GB0001585D0 (en) 2000-01-24 2000-03-15 Radioscape Ltd Method of designing,modelling or fabricating a communications baseband stack
US6968307B1 (en) * 2000-04-28 2005-11-22 Microsoft Corporation Creation and use of virtual device drivers on a serial bus
BR0112170A (pt) * 2000-07-05 2004-07-27 Ernst & Young Llp Aparelho provendo um ou mais serviços de computador para diversos clientes, combinação de um primeiro aparelho e um segundo aparelho substancialmente idêntico ao citado primeiro aparelho, e, processos para prover um ou mais serviços de computador para diversos clientes, para operar um computador real em nome de diversos clientes, e para prover, para diversos clientes, um ou mais serviços de computador
EP1191443A3 (en) 2000-09-22 2004-03-03 International Business Machines Corporation Method and system for testing a processor
US7565398B2 (en) * 2002-06-27 2009-07-21 International Business Machines Corporation Procedure for dynamic reconfiguration of resources of logical partitions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6243833B1 (en) * 1998-08-26 2001-06-05 International Business Machines Corporation Apparatus and method for self generating error simulation test data from production code

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DIKE J.《User-mode Linux》.《PROCEEDINGS OF ANNUAL LINUX SHOWCASE AND CONFERENCE》.2001,1-12. *

Also Published As

Publication number Publication date
KR20060047766A (ko) 2006-05-18
EP1615126A3 (en) 2007-10-31
CN100511150C (zh) 2009-07-08
CN1716204A (zh) 2006-01-04
EP1615126A2 (en) 2006-01-11
CN101382905A (zh) 2009-03-11
US7580826B2 (en) 2009-08-25
JP2006018814A (ja) 2006-01-19
US20060004554A1 (en) 2006-01-05

Similar Documents

Publication Publication Date Title
CN101382905B (zh) 用于虚拟机环境中的仿真设备的开发的系统和方法
US10540191B2 (en) Systems and methods for using dynamic templates to create application containers
CN100527085C (zh) 用于初始化单个虚拟机内多个虚拟处理器的系统和方法
CN100474240C (zh) 用于在虚拟机环境中实现操作系统的系统和方法
CN102207896B (zh) 虚拟机崩溃文件生成技术
Golden Virtualization for dummies
EP2053509B1 (en) System for and method of migrating one or more virtual machines
CN102193817B (zh) 简化物理和虚拟部署的管理
CN104965757A (zh) 虚拟机热迁移的方法、虚拟机迁移管理装置及系统
CN105893234B (zh) 用于软件测试的方法和计算设备
US20060085784A1 (en) Systems and methods for authoring and accessing computer-based materials using virtual machines
CN1815440A (zh) 用于数字设备菜单编辑器的方法和系统
CN102193824A (zh) 虚拟机均质化以实现跨异构型计算机的迁移
CN114089975B (zh) 计算软件的扩展方法、装置、非易失性存储介质及处理器
CN107992381A (zh) 系统还原方法、装置、系统、备份还原服务器及存储介质
Cerling et al. Mastering Microsoft Virtualization
US20210158131A1 (en) Hierarchical partitioning of operators
US20130159689A1 (en) Method and apparatus for initializing embedded device
TW202018500A (zh) 在多次執行指令之間保存及恢復機器狀態
CN110597597A (zh) 硬件的虚拟化方法、系统、装置及存储介质
US20230168916A1 (en) Method and System for Interactive Cyber Simulation Exercises
CN105335203A (zh) 共享库的二进制翻译执行方法和装置
WO2014112973A1 (en) Server-platform simulation service
KR20190075508A (ko) 가상화된 시스템 상에서 임베디드 소프트웨어를 자동으로 생성하는 방법 및 컴퓨팅 시스템
US20190188023A1 (en) Method for data center storage evaluation framework simulation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150429

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150429

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.