CN102207886A - 虚拟机快速仿真辅助 - Google Patents

虚拟机快速仿真辅助 Download PDF

Info

Publication number
CN102207886A
CN102207886A CN2011100870129A CN201110087012A CN102207886A CN 102207886 A CN102207886 A CN 102207886A CN 2011100870129 A CN2011100870129 A CN 2011100870129A CN 201110087012 A CN201110087012 A CN 201110087012A CN 102207886 A CN102207886 A CN 102207886A
Authority
CN
China
Prior art keywords
virtual machine
controller
emulator
controller emulator
virtual
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.)
Granted
Application number
CN2011100870129A
Other languages
English (en)
Other versions
CN102207886B (zh
Inventor
L·R·克力顿
A·沃肯汀
A·尼克劳斯
R·A·维加
J·奥辛斯
J·A·斯塔克斯
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 CN102207886A publication Critical patent/CN102207886A/zh
Application granted granted Critical
Publication of CN102207886B publication Critical patent/CN102207886B/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明公开了一种虚拟机快速仿真辅助方法和系统。公开了用于减少虚拟机输入/输出仿真开销并减小虚拟机体系结构的攻击面的技术。

Description

虚拟机快速仿真辅助
技术领域
本发明涉及虚拟机技术,尤其涉及虚拟机快速仿真。
背景技术
虚拟机体系结构多年来已经演变为包括到物理计算机系统的输入/输出(IO)硬件的不同IO路径。例如,系统管理程序(hypervisor)可包括仿真的IO路径。IO控制器仿真器——例如硬件设备的软件模块,其是与硬件设备足够相似地做出响应以使得该设备的设备驱动程序正常地工作——能够在系统管理程序中执行,且用于该IO控制器的驱动程序能够在虚拟机中运行。在该体系结构中,IO控制器仿真器从集中位置运行,且用于服务所有的虚拟机。选择该体系结构是因为它减少了每一虚拟机的存储器占用量(footprint),并提供了更新一个仿真器且更新系统中的所有仿真器的方式。
系统管理程序中的仿真器可以在驱动程序接触资源时运行,例如,映射到控制器的存储器或该控制器的端口和系统管理程序能捕捉请求。系统管理程序可以挂起运行该驱动程序的虚拟处理器,并将控制连同驱动程序写入的值一起传递给IO控制器仿真器。IO控制器能够执行并确定驱动程序发出了什么操作,并代表该驱动程序来执行该操作。
然而,该体系结构在计算上是昂贵的,因为它需要对写入IO寄存器或存储器映射的IO空间的每一字节的上下文切换,并且在完成IO请求之前它可能需要对数百个寄存器的数百次写入。除了计算上昂贵之外,由于仿真器在系统管理程序内执行,因此它呈现了很大的攻击面,该攻击面可能会被恶意利用来获取对物理计算机系统的控制。例如,仿真器正在仿真复杂的硬件状态机,并且对于软件开发者而言,确保每一仿真器对该仿真器能被置于其中的状态的每一可能的组合都能工作是相对困难的。用户可能生成非法操作的流,这些非法操作会导致系统管理程序例如允许用户访问虚拟机外部的存储器或使系统管理程序崩溃。
虚拟化系统还包括另一IO路径,该另一IO路径更容易从安全观点来分析并需要较少的处理器周期来运行,因为它不对IO设备进行仿真。在该路径中,类虚拟化(paravirtualization)驱动程序,例如被专门设计成在虚拟化环境中操作的驱动程序,能够使用诸如SCSI等高级通信协议来将IO请求发送到虚拟化服务提供者,虚拟化服务提供者能够解析该协议并代表其自身来执行IO作业。该路径更为安全,因为它呈现了较小的攻击面,并且可使用安全协议来确定发送了什么通信。然而,该路径并不总是可用的。例如,由于未对IO设备创建类虚拟化驱动程序或者用户尚未安装类虚拟化驱动程序,该路径将是不可用的。该路径还通常依赖于客操作系统提供的服务,并且在引导期间可能是不可用的。因此,仿真路径不能被简单地消除,因为存在可能需要该仿真路径的情况。
因此,虚拟机体系结构已经演变到存在用于完成相同的事情的两条路径的程度。一条路径在计算上是昂贵的,且呈现大攻击面;另一条路径在计算上要廉价得多,且呈现较小的攻击面。由于仿真路径不能被简单地消除,因此需要用于使得仿真路径在计算上较不昂贵、更安全、并且更类似于类虚拟化路径的技术。
发明内容
本发明的一示例实施例描述了一种方法。在该示例中,该方法包括但不限于,将输入/输出控制器仿真器配置成在虚拟机中执行;以及将IO消息传递信道配置成将输入/输出控制器仿真器生成的输入/输出请求发送到虚拟化服务提供者。除了上述方面,构成本发明一部分的权利要求、附图、以及文本中描述了其他方面
本发明的一示例实施例描述了一种方法。在该示例中,该方法包括但不限于,响应于确定映射到输入/输出控制器仿真器的寄存器被访问,执行上下文切换来执行输入/输出控制器仿真器,其中该输入/输出控制器仿真器被配置成在虚拟机内执行;以及经由IO消息传递信道将输入/输出控制器仿真器生成的输入/输出请求发送到虚拟化服务提供者。除了上述方面,构成本发明一部分的权利要求、附图、以及文本中描述了其他方面
本发明的一示例实施例描述了一种方法。在该示例中,该方法包括但不限于,由虚拟处理器执行客操作系统,其中该客操作系统被配置成在虚拟机内执行;经由IO消息传递信道从虚拟化服务提供者接收与输入/输出作业有关的信号;加载将虚拟地址映射到虚拟客物理地址的页表;以及在虚拟机内执行输入/输出控制器仿真器。除了上述方面,构成本发明一部分的权利要求、附图、以及文本中描述了其他方面
本领域技术人员将理解,本发明的一个或多个方面可包括但不限于用于实现本发明的本文所述方面的电路和/或编程;该电路和/或编程实质上可以是被配置成实现本文所述方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。
以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域技术人员将明白,本概述只是说明性的并且决不旨在是限制性的。
附图说明
图1描绘其中可实现本发明的各方面的示例计算机系统。
图2描绘了用于实施本发明的各方面的操作环境。
图3描绘了用于实施本发明的各方面的操作环境。
图4示出了用于描绘本发明的各方面的操作环境。
图5描绘了用于实施本发明的各方面的操作过程。
图6描绘了图5的操作过程的替换实施例。
图7描绘了用于实施本发明的各方面的操作过程。
图8描绘了图7的操作过程的替换实施例。
图9描绘了用于实施本发明的各方面的操作过程。
图10描绘了图9的操作过程的替换实施例。
具体实施方式
各实施例可在一个或多个计算机系统上执行。图1和下面的讨论旨在提供其中可实现本发明的合适计算环境的简要概括描述。
贯穿本发明使用的术语电路可包括诸如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件。术语“电路”还可包括微处理器、专用集成电路、和/或一个或多个逻辑处理器,例如由固件和/或软件配置的多核通用处理单元的一个或多个核。逻辑处理器可由指令来配置,指令具体化可用于执行从例如RAM、ROM、固件和/或大容量存储等存储器加载的功能的逻辑。在其中电路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件实现的功能或软件实现的功能之间几乎没有差别的地步,因而选择硬件还是软件来实现此处描述的功能只是一个设计选择。换言之,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现留给了实现者。
现在参考图1,描绘了示例性计算系统100。计算机系统100可包括逻辑处理器102,如执行核。尽管示出了一个逻辑处理器102,但在其他实施例中,计算机系统100可具有多个逻辑处理器,例如每一处理器基板有多个执行核,和/或各自可具有多个执行核的多个处理器基板。如图所示,各种计算机可读存储介质110可由一个或多个系统总线互联,系统总线将各种系统组件耦合到逻辑处理器102。系统总线可以是几种类型的总线结构中的任何一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。在示例实施例中,计算机可读存储介质110可以包括例如随机存取存储器(RAM)104、存储设备106(例如电机硬盘驱动器、固态硬盘驱动器等)、固件108(例如闪存或ROM)、以及可移动存储设备118(例如CD-ROM、软盘、DVD、闪速驱动器、外部存储设备等)。本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如磁带盒、闪存卡、数字视频盘和柏努利盒式磁带。
计算机可读存储介质110可以为计算机100提供对处理器可执行指令122、数据结构、程序模块和其他数据的非易失性和易失性存储,实现管理器250的可执行指令在以下附图中描述。基本输入/输出系统(BIOS)120可被存储在固件108中,它包含帮助在诸如启动期间在计算机系统100内的各元件之间传递信息的基本例程。包括操作系统和/或应用程序的多个程序可被存储在固件108、存储设备106、RAM 104和/或可移动存储设备118上,并且可由逻辑处理器102来执行。
命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于键盘和定点设备。其它输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。这些和其它输入设备常通过耦合到系统总线的串行端口接口连接到逻辑处理器102,但也可通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备也可经由诸如视频适配器等可以是图形处理器112的一部分或可连接到图形处理器112的接口来连接到系统总线。除了显示器之外,计算机通常包括其他外围输出设备(未示出),如扬声器和打印机。图1的示例性系统还包括主适配器、小型计算机系统接口(SCSI)总线和连接到SCSI总线的外部存储设备。
计算机系统100可使用至一个或多个远程计算机,如远程计算机的逻辑连接在网络化环境中操作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并且通常包括上面关于计算机系统100所述的许多或全部元件。
当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡114连接至LAN或WAN。NIC 114可以是内置或外置的,其可以连接到系统总线。在联网环境中,相对于计算机系统100所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。虽然可构想本发明的许多实施例尤其适用于计算机化的系统,然而在本说明中不意味着将本发明限于那些实施例。
现在参考图2和3,描绘了被配置成实现虚拟机的计算机系统200和300的高级框图。在本发明的示例实施例中,计算机系统200和300可包括图以及下文中描述的元件。如图所示,可存在不同的体系结构;然而,它们一般具有相似的组件。例如,图2示出了一操作环境,其中本领域中也可被称为虚拟机监控程序的系统管理程序被拆分成微内核202和父分区204,而图3示出系统管理程序304包括图2的父分区204中找到的元素。
转向图2,系统管理程序微内核202可被配置成控制并仲裁对计算机系统200的硬件的访问。广泛而言,系统管理程序微内核202可以生成称为分区的执行环境,如子分区1到子分区N(其中N是大于1的整数)。在各实施例中,子分区是系统管理程序微内核202支持的基本隔离单元。即,每一子分区可被映射到一组在系统管理程序微内核202的控制下的硬件资源,例如存储器、设备、逻辑处理器周期等,并且系统管理程序微内核202可隔离一个分区中的进程不使其访问另一分区的资源,例如,一个分区中的客操作系统可与另一分区的存储器隔离,且因此不能检测到其分区外部的存储器地址。在各实施例中,系统管理程序微内核202可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件中、专用集成电路、或其组合。
在所描绘的示例中,父分区组件204也可被认为是类似于Xen的开源系统管理程序的域0。该操作环境中的父分区204可被配置成通过使用虚拟化服务提供者228(VSP)来向在子分区1-N中执行的客操作系统提供资源,虚拟化服务提供者在开源社区中通常被称为后端驱动程序。广泛而言,VSP 228可用于通过虚拟化服务客户端(VSC)(开源社区中通常称为前端驱动程序)复用到硬件资源的接口,并经由通信协议与虚拟化服务客户端进行通信。如图所示,虚拟化服务客户端可以在客操作系统的上下文中执行。这些驱动程序不同于客机中的其余驱动程序,因为可向它们提供系统管理程序而非客机。
微内核202可以通过限制客操作系统的系统存储器视图来实施分区。客存储器是由系统管理程序控制的分区的存储器视图。客物理地址能由系统物理地址(SPA)来支持,即,由系统管理程序管理的、物理计算机系统的存储器。附图所示,在一实施例中,GPA和SPA可被安排成存储器块,即,一个或多个存储器页。当客机使用其页表向一个块写入时,数据实际被存储在根据系统管理程序使用的系统级页表而具有不同系统地址的块中。
如图所示,在本发明的各实施例中,IO仿真器(234和236),例如虚拟化IDE设备、虚拟化视频适配器、虚拟化NIC等,能被配置成在其各自的子分区中运行。如以下更详细描述的,通过将仿真器配置为在子分区内运行,减小了系统管理程序的攻击面以及计算开销。
每一子分区可包括一个或多个虚拟处理器(230和232),客操作系统(220和222)可管理并调度线程以便在这些虚拟处理器上执行。一般而言,虚拟处理器是提供具有特定架构的物理处理器的表示的可执行指令以及相关联的状态信息。例如,一个虚拟机可具有带有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC处理器的特性。本例中的虚拟处理器可被映射到计算机系统的逻辑处理器,使得实现虚拟处理器的指令将受到逻辑处理器的支持。由此,在包括多个逻辑处理器的实施例中,虚拟处理器可以由逻辑处理器同时执行,同时例如其他逻辑处理器执行系统管理程序指令。分区中虚拟处理器和存储器的组合可被认为是虚拟机。
客操作系统可包括任何操作系统,如来自微软
Figure BSA00000468644200071
苹果
Figure BSA00000468644200072
开源社区等的操作系统。客操作系统可包括用户/内核操作模式,并且可具有能包括调度器、存储器管理器等的内核。一般而言,内核模式可包括逻辑处理器中的执行模式,该执行模式授予对至少特权处理器指令的访问。每一客操作系统可具有相关联的文件系统,该文件系统上存储有诸如终端服务器、电子商务服务器、电子邮件服务器等应用以及客操作系统本身。客操作系统可调度线程来在虚拟处理器上执行,并且可实现此类应用的实例。
现在参考图3,示出了对上述图2的替换体系结构。图3描绘了与图2的组件相类似的组件;然而,在该示例实施例中,系统管理程序304可包括微内核组件和来自图2的父分区204的组件,如虚拟化服务提供者228和设备驱动程序224,而管理操作系统302可包含例如用于配置系统管理程序304的配置实用程序。在该体系结构中,系统管理程序304可以执行与图2的系统管理程序微内核202相同或相似的功能;然而,在该体系结构中,系统管理程序304可被配置成向在子分区中执行的客操作系统提供资源。图3的系统管理程序304可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件内,或者系统管理程序304的一部分可以由专用集成电路来实现。
现在转向图4,示出了用于实施本发明的各方面的示例环境。如图所示,IO控制器仿真器406能被注入到虚拟机410中,例如,被配置成从分配给虚拟机410的客物理存储器运行。当IO控制器仿真器406由虚拟处理器执行时,指示仿真器的指令可配置虚拟处理器来仿真硬件IO控制器。
IO控制器仿真器406可被附连到多个寄存器和存储器映射的IO空间,使得对这些资源的访问被俘获并被重定向到IO控制器仿真器406。例如,诸如端口等寄存器可被用来标识IDE仿真器是主要还是次要IDE信道、对中断加掩码、启动事务等。在本发明的各实施例中,系统管理程序400可对这些端口设置俘获,并且如果驱动程序412试图写入像硬件端口一样工作的组件,则系统管理程序400可对寄存器访问进行俘获,例如,截取寄存器访问、停止运行驱动程序412的虚拟处理器,以及将被写入寄存器的内容传递给IO控制器仿真器406。IO控制器仿真器406然后可被执行并采取动作。例如,IO控制器仿真器406可向VSP 402发送取得数据块的请求,它可将数据移至客物理存储器中,返回它所具有的某些信息,等等。本领域的技术人员可以理解,多个IO仿真器可被映射到虚拟机410中的存储器,或者可存在系统管理程序400或虚拟机410中的仿真器的组合。此外,本领域的技术人员可以理解,例如寄存器和IO存储器等某些IO资源可使得对它们设置系统管理程序俘获,而其他IO资源则不能。
继续图4的描述,IO控制器仿真器406可经由IO消息传递信道408与系统管理程序400交互。系统管理程序400可包括能对到诸如盘等IO设备404的接口复用的虚拟化服务提供者402。IO消息传递信道408例如可包括映射到系统管理程序400和虚拟机410的存储器。在共享存储器内,可实现环形缓冲区,该环形缓冲区允许在VSP 402和IO控制器仿真器406之间传递消息和数据。在一示例存储实施例中,IO控制器仿真器406可使用像SCSI这样的高级通信协议来与VSP 402进行通信。通过使用高级协议,可显著减少执行真实IO作业所需的请求量。例如,用于生成从盘取得块的IO请求的硬件上的数百个动作可通过IO消息传递信道408使用的通信协议由单个命令来表达。在一示例实施例中,IO消息传递信道408是启用分区到分区(或系统管理程序)通信的逻辑信道。在本发明的一实施例中,IO消息传递信道可包括与题为“Partition Bus(分区总线)”的美国专利申请第11/128647号中描述的那些相似的特征,该申请的内容通过整体引用合并于此。
在一具体示例实施例中,虚拟化服务提供者402可以是被配置成代表子分区与诸如由SAN提供的逻辑单元号(LUN)等物理存储设备进行通信的存储服务,该物理存储设备例如可能已经通过其他存储虚拟化技术被虚拟化的盘。在一个实例中,虚拟化服务提供者402可以从虚拟机接收I/O请求并将他它们路由到LUN。在其中LUN是子分配的另一实例中,虚拟化服务提供者402可被配置成生成虚拟硬盘;将它们展示给虚拟机;以及将它们作为虚拟硬盘驱动器(VHD)文件存储在LUN或物理驱动器上。VHD文件表示可被封装在单个文件内的虚拟机硬盘。虚拟化服务提供者402可解析该文件,并实现被展示给客操作系统220的盘,就好像该盘是物理存储一样。由虚拟化服务提供者402生成的虚拟硬盘可按照表现为像本地一样的方式来表示给客操作系统可访问的总线。除了上述之外,虚拟化服务提供者402可以是担当对网络访问的仲裁者的网络适配器服务、担当对视频卡访问请求的仲裁者的图形适配器服务。
如图所示,在一示例实施例中,可向虚拟机410中运行的虚拟处理器给予另一操作模式。例如,当虚拟处理器正在运行客机代码,例如客操作系统220或IO控制器驱动程序412时,它在客机上下文416中运行,并且例如正在使用客操作系统的页表。在本发明的各实施例中,仿真上下文414可被添加到虚拟处理器来运行IO控制器仿真器406。仿真器模式414中的虚拟处理器可包括附加的每虚拟处理器状态块、页表、以及该虚拟处理器能够执行的一组专门的操作。例如,该仿真上下文414中的虚拟处理器可以只能执行超级调用(hypercall),例如发送给系统管理程序400的退出该模式的请求。例如,如果恶意用户攻击IO控制器仿真器406,则虚拟机410可以简单地不工作,例如,恶意用户最终使其自己的虚拟机崩溃。在另一实施例中,如果系统管理程序400检测到IO控制器406已经被篡改,则系统管理程序400可根据策略来采取行动。例如,如果检测到非法操作,则系统管理程序400可将该操作关闭、让该操作运行、停止该操作直到管理员授权进一步执行、将该操作复位、等等。
以下是描绘操作过程的一系列流程图。为便于理解,流程图被组织成使得初始流程图经由总体“大图”观点来呈现各实现,且后续的流程图提供进一步的附加和/或细节。此外,本领域的技术人员可以理解,虚线所描绘的操作过程被认为是任选的。
现在参考图5,示出了用于实施本发明的各方面的操作过程。如图所示,操作500开始该操作过程,并且操作502示出将输入/输出控制器仿真器配置成在虚拟机中执行。例如,转向图4,在本发明的一实施例中,可将指示IO控制器仿真器406的指令存储在与虚拟机410相关联的客物理地址中。诸如虚拟处理器230等虚拟处理器可被配置成在IO控制器驱动程序试图执行IO操作时,例如它接触映射到该仿真器的存储器或与IO仿真器406相关联的寄存器,执行仿真器指令。
在一示例实施例中,指示IO仿真器406的指令可被存储在客物理地址中,且客操作系统220可被配置成忽略该地址。例如,在引导客操作系统220之前,可执行将IO仿真器406加载到虚拟机的存储器地址中并将该存储器标记为保留的固件。通过将存储器标记为保留,客操作系统220在被加载时将不使用该存储器,从而不会盖写IO仿真器406。
IO仿真器406可被配置成在IO驱动程序412试图访问与该仿真器正在仿真的设备相关联的IO端口或IO映射的存储器时执行。例如,系统管理程序400可被配置成用系统管理程序截取来标记IO端口和存储器,并且如果IO驱动程序412接触到该资源,则系统管理程序400可截取访问并执行。系统管理程序400可检查标识了导致进入仿真上下文414的端口的表;保存虚拟处理器的状态;切换到仿真上下文414;以及将IO控制器驱动程序412试图写入的信息传递到分配给IO控制器仿真器406的资源。传递给IO控制器仿真器406的信息可引起各种结果。例如,并非所有俘获都会导致消息通过IO信道来发送。相反,某些请求可在仿真器内被处理,并且不需要被发送到虚拟化服务提供者402。
继续图5的描述,操作504示出将IO消息传递信道配置成将输入/输出控制器仿真器生成的输入/输出请求发送到虚拟化服务提供者。继续上述示例,在引导客操作系统220之前,可执行将IO消息传递信道408的副本加载到存储器中并将该存储器标记为保留的固件。IO消息传递信道408可具有为在虚拟机410中运行的每一类型的IO仿真器设置的协议,例如,联网栈、存储栈、串行端口栈、视频栈、鼠标栈等,并使用这些栈来生成可被传递给控制计算机系统的硬件的虚拟化服务提供者。
现在转向图6,其示出图5的操作过程的替换实施例,包括操作606-624。转向操作606,其示出了响应于从虚拟化服务提供者接收到输入/输出作业完成信号来执行输入/输出控制器仿真器。例如,在本发明的一实施例中,输入/输出控制器仿真器406可被异步地执行。即,输入/输出控制器仿真器406可由虚拟处理器在虚拟机410外部发生了某件事情时运行。例如,IO控制器仿真器406可响应于从虚拟化服务提供者402接收到信号来执行。响应于接收到该信号,系统管理程序400可切换到仿真上下文414并处理该信号。
在一具体示例中,IO控制器驱动程序412可发出将数据从存储上的位置读入客物理地址的指令,并将IO控制器仿真器406配置成在完成时将例如中断等信号发送到IO控制器驱动程序412。当完成该作业且虚拟化服务提供者402向IO控制器仿真器406发送了完成信号时,系统管理程序400可接收该信号,并将虚拟处理器切换到仿真上下文414,并运行输入/输出控制器仿真器406。输入/输出控制器仿真器406然后可处理虚拟化服务提供者402所取得的数据,并将其插入到IO控制器驱动程序412所请求的客物理存储器中。输入/输出控制器仿真器406然后可向客操作系统220发送中断,使得下一次其执行时,客操作系统可处理该中断并且确定数据已被写入存储器。在一具体示例中,IO控制器仿真器406可被连接到中断线。当IO控制器仿真器406运行时,它可设置虚拟处理器的状态来反映中断线正示出待决中断。当虚拟处理器被切换到客OS上下文416并运行客操作系统220时,客机将检测到该中断并通过例如运行IO控制器驱动程序412来服务该中断。
继续图6的描述,操作608示出用高速缓存在虚拟机中的数据来响应来自被配置成在虚拟机中执行的客操作系统的输入/输出请求。例如,在本发明的一实施例中,输入/输出控制器仿真器406可将它预期客操作系统220将请求的数据存储在虚拟机410的保留存储器中。在一示例实施例中,客操作系统220可接触与IO控制器仿真器406相关联的寄存器。这可导致系统管理程序400中的俘获,可将上下文切换到仿真上下文414。在客操作系统220请求数据的情况下,数据可从输入/输出控制器仿真器406控制的存储器返回,而不必向虚拟化服务提供者402发送请求。在一示例实施例中,虚拟化服务提供者402可使用描述在虚拟机410中有多少保留存储器可用于缓存数据、它正在服务来自物理计算机上的所有虚拟机的多少请求、与虚拟机410相关联的优先级等的信息,来确定要发回多少数据。在另一示例实施例中,该数据可被缓存在存储器中可由系统管理程序400访问的别处。在缓存的数据被请求的情况下,该数据可被发送到仿真器,或者包含该存储器的页可被重新映射,使得输入/输出控制器仿真器406可访问包含该数据的系统物理地址。
在IO控制器仿真器406是存储仿真器的具体示例中,当IO控制器仿真器406发送对“块78”存储的请求时,虚拟化服务提供者402可确定读取20个块或包含块78的整个磁道,并将该数据发送到输入/输出控制器仿真器406。IO控制器仿真器406可被配置成在它接收到读取数据的请求时在向虚拟化服务提供者402发送另一请求之前检查缓冲区。
转向操作610,其示出了在执行输入/输出控制器仿真器之前将虚拟地址映射到客物理地址。例如,在本发明的一实施例中,当虚拟处理器进入仿真上下文414时,可将客操作系统220使用的页表存储在存储器中,并且可加载将客虚拟地址映射到客物理地址的页表。在该操作模式中,虚拟处理器(仿真在物理地址上操作的硬件设备)可被配置成在用于存储器的虚拟地址总是等于物理地址的模式中运行。即,在该模式中,可打开分页,但是页表以一对一方式映射到物理地址。这允许对直接存储器地址操作的仿真。在相同的或另一示例实施例中,可以使客操作系统220使用的页表对输入/输出控制器仿真器406可用,使得客虚拟地址中发出的指令可被转换到客物理地址中。
继续图6的描述,操作612示出将系统管理程序配置成俘获对与输入/输出控制器仿真器相关联的存储器映射的IO空间的访问。例如,在本发明的一实施例中,系统管理程序400可被配置成截取对为IO控制器仿真器406保留的存储器的访问。在该示例实施例中,当客操作系统220接触到该存储器时,系统管理程序400可以截取该访问并切换到仿真上下文414;将客操作系统220试图写入的值传递到存储器;以及执行IO控制器仿真器406。
操作614示出将执行输入/输出控制器仿真器所花费的处理器时间自动归于虚拟机。例如,在本发明的一实施例中,虚拟处理器运行输入/输出控制器仿真器406所花费的时间量可被记录并向虚拟机410记账。通常,虚拟机环境中可被记录的唯一的记账机制是虚拟处理器在虚拟机中运行的时间量。在该实施例中,由于输入/输出控制器仿真器406正在虚拟机410中运行,因此它运行所花费的时间自然被归于子分区,并允许生成准确的记账记录。
在IO控制器在管理分区或系统管理程序中运行的体系结构中,难以确定虚拟机实际使用了多少处理器时间,因为虚拟化体系结构中的每一进程不一定能够记录它对不同虚拟机运行的时间量。为了获得虚拟机使用了多少处理器时间的准确概念,用于实现虚拟机的每一进程将不得不被重新设计来对在具体的虚拟机请求上工作所花费的时间进行记账。
操作616示出根据安全策略来确定经由IO消息传递信道发送的通信。例如,一进程可以执行来监视分区间通信总线上移动的通信,来确定该通信是否违背了安全策略。例如,系统管理程序400可包括类似于可监视在总线上移动的通信的网络安全程序的安全程序。如果该通信违背了安全策略,则系统管理程序400可被配置成将虚拟机关闭。
现在转向操作618,其示出了保存与虚拟机相关联的状态。例如,在本发明的一实施例中,可保存虚拟机的状态,该状态可包括IO控制器仿真器406的状态。例如,虚拟机的状态可包括基于文件的状态快照、盘数据、以及在特定时间点虚拟机的配置。稍后,用户可将虚拟机实例化到该状态。当在虚拟机的上下文中执行输入/输出仿真器406时,即,输入/输出仿真器406在客物理地址中运行时,快照操作自然地获得输入/输出仿真器406的状态,并允许用户保存/还原该状态而不必获得存储在管理分区或系统管理程序的存储器中的数据。
现在转向操作620,其示出了将指令完成引擎配置成在虚拟机中执行。例如,在本发明的一实施例中,指令完成引擎418可在虚拟机410中执行。例如,在一实施例中,指令完成引擎418可配置与客OS上下文416和/或客物理存储器相关联的状态来反映输入/输出仿真器406已经完成了一个操作。例如,当IO驱动程序412将指令写入IO控制器仿真器406时,执行停止且该仿真器运行。除了运行仿真器之外,在客OS上下文416中发出指令对虚拟处理器的影响也需要被仿真。在一具体示例中,输入/输出仿真器406可执行并获得某些数据。指令完成引擎418可执行并确定仿真器所执行的操作类型,并确定当在客OS上下文416中时,数据需要从输入/输出仿真器406移至虚拟处理器上的EAX寄存器。在该示例中,指令完成引擎418可操纵在进入客OS上下文416时用于配置虚拟处理器的状态信息,使得当虚拟处理器运行时,它具有EAX寄存器中的数据,并且所指向的指令已前进到下一指令。
现在转向操作622,其示出将与输入/输出控制器仿真器生成的指令相关联的信息发送到输入/输出控制器仿真器。例如,在本发明的一实施例中,系统管理程序400可在发生截取时执行。在该示例实施例中,系统管理程序400可被配置成分析该指令来确定如何处理该指令。通过这样做,系统管理程序400能够获得将对IO控制器仿真器406有用的信息,如截取在何处发生、被截取的指令有多大、它是什么类型的操作、操作数、等等。系统管理程序可以将该信息存储在记录中,并将其置于与IO控制器仿真器406相关联的存储器中。当IO控制器仿真器406运行时,它能够检测该记录,并且附加信息可能加速IO控制器仿真器406的执行。
图7示出了用于实施本发明的各方面的操作过程,包括操作700、702和704。操作700开始该操作过程,且操作702示出响应于确定映射到输入/输出控制器仿真器的寄存器被访问来执行上下文切换以执行输入/输出控制器仿真器,其中该输入/输出控制器仿真器被配置成在虚拟机内执行。例如,转向图4,虚拟处理器可响应于客操作系统220接触到IO控制器仿真器406的寄存器,将上下文切换到仿真上下文414来运行存储在分配给虚拟机410的客物理地址中的输入/输出控制器仿真器406。在一示例实施例中,当切换发生时,系统管理程序400可将与客OS上下文416中的虚拟处理器相关联的处理器状态,例如,处理器上的各个寄存器的内容,保存到存储器中并改变页表。例如,在本发明的一实施例中,系统管理程序400可响应于接收到指示IO控制器驱动程序412接触了分配给IO控制器仿真器406的资源,例如该仿真器的存储器映射的IO或一个或多个IO端口,从在客OS上下文416中运行虚拟处理器切换到仿真上下文414。
继续图7的描述,操作704示出经由IO消息传递信道将输入/输出控制器仿真器生成的输入/输出请求发送到虚拟化服务提供者。例如,在本发明的一实施例中,IO控制器驱动程序412可试图写入IO控制器仿真器406的寄存器,并且虚拟处理器可执行IO控制器仿真器406。IO控制器仿真器406可确定驱动程序412想要什么类型的IO操作,并且可生成发送到虚拟化服务提供者402的高级协议请求。
在一具体示例中,IO控制器仿真器406可能正在仿真IDE控制器。在该示例中,IO驱动程序412可能想要将数据写入盘,并且可试图将各种信号发送到与IO控制器仿真器406相关联的端口。系统管理程序400可俘获对端口的访问,并切换上下文来运行IO控制器仿真器406。可执行仿真器,且该仿真器可确定IO驱动程序412曾试图将数据写入盘。IO控制器仿真器406然后可生成例如指示将数据写入盘的请求的SCSI请求,并将该请求存储在IO消息传递信道408中。虚拟化服务提供者402,在本示例中是处理存储,可访问IO消息传递信道408并获得SCSI请求。虚拟化服务提供者402然后可执行并向IO设备404发送请求。
在另一具体示例实施例中,IO控制器仿真器406可以是网络卡仿真器。类似于前一示例,当系统管理程序400检测到IO驱动程序412试图接触寄存器来向MAC地址发送一个或多个信息分组时,仿真器406可运行,并生成可被发送到虚拟化服务提供者402的高级请求,该示例中虚拟化服务提供者在处理联网。
现在转向图8,其示出图7的操作过程的替换实施例,包括操作806-812。操作806示出对输入/输出控制器驱动程序发出的指令的至少一部分进行解码,并将该指令的经解码的部分发送到输入/输出控制器仿真器。例如,在本发明的一实施例中,系统管理程序400可在发生截取时执行。在该示例实施例中,系统管理程序400可被配置成分析该指令来确定如何处理该指令。通过这样做,系统管理程序400能够获得将对IO控制器仿真器406有用的信息,如截取在何处发生、被截取的指令有多大、它是什么类型的操作、操作数、等等。系统管理程序可以将该信息存储在记录中,并将其置于与IO控制器仿真器406相关联的存储器中。当IO控制器仿真器406运行时,它能够检测该记录,并且附加信息可能加速IO控制器仿真器406的执行。
继续图8的描述,操作808示出保存与虚拟机相关联的状态。例如,在本发明的一实施例中,可保存虚拟机的状态,该状态可包括IO控制器仿真器406的状态。例如,虚拟机的状态可包括基于文件的状态快照、盘数据、以及在特定时间点虚拟机的配置。稍后,用户可将虚拟机实例化到该状态。当在虚拟机的上下文中执行输入/输出仿真器406时,即,输入/输出仿真器406在客物理地址中运行时,快照操作自然地获得输入/输出仿真器406的状态,并允许用户保存/还原该状态而不必获得存储在管理分区或系统管理程序的存储器中的数据。
继续图8的示例,操作810示出将执行输入/输出控制器仿真器所花费的处理器时间自动归于虚拟机。例如,在本发明的一实施例中,虚拟处理器运行输入/输出控制器仿真器406所花费的时间量可被记录并对虚拟机410记账。通常,虚拟机环境中可被记录的唯一的记账机制是虚拟处理器在虚拟机中运行的时间量。在该实施例中,由于输入/输出控制器仿真器406正在虚拟机410中运行,因此它运行所花费的时间自然被归于子分区,并允许生成准确的记账记录。
继续图8的描述,操作812示出响应于确定客操作系统曾试图访问与输入/输出控制器仿真器相关联的存储器映射的IO空间来执行上下文切换以执行输入/输出控制器仿真器。例如,在本发明的一实施例中,系统管理程序400可被配置成截取对为IO控制器仿真器406保留的存储器的访问。在该示例实施例中,当客操作系统220接触到该存储器时,系统管理程序400可以截取该访问并切换到仿真上下文414;将客操作系统220试图写入的值传递到存储器;以及执行IO控制器仿真器406。
现在转向图9,其示出了用于实施本发明的各方面的操作过程,包括操作900、902、904、906和908。如图所示,操作900开始该操作过程,并且操作902示出虚拟处理器执行客操作系统,其中客操作系统被配置成在虚拟机内执行。例如,在一实施例中,客操作系统220可由虚拟机410中的虚拟处理器执行。如上所述,例如由状态信息配置的逻辑处理器等虚拟处理器可在客OS上下文416中运行客操作系统220。在该示例中,客操作系统可被存储在分配给客分区的RAM中,且虚拟处理器可被配置成访问分配给客机的RAM。
继续图9的描述,操作904示出经由IO消息传递信道从虚拟化服务提供者接收与输入/输出作业相关的信号。例如,在一实施例中,可经由IO消息传递信道408接收异步事件,例如来自虚拟化服务提供者402的信号。例如,IO控制器仿真器406可响应于从虚拟化服务提供者402接收到信号来执行。响应于接收到该信号,系统管理程序400可切换到仿真上下文414并处理该信号。
转向操作906,其示出加载将虚拟地址映射到虚拟客物理地址的页表。例如,在本发明的一实施例中,当虚拟处理器进入仿真上下文414时,可将客操作系统220使用的页表存储在存储器中,并且可加载将客虚拟地址映射到客物理地址的页表。在该操作模式中,虚拟处理器(仿真在物理地址上操作的硬件设备)可被配置成在用于存储器的虚拟地址总是等于物理地址的模式中运行。即,在该模式中,可打开分页,但是页表以一对一方式映射到物理地址。这允许对直接存储器地址操作的仿真。在相同的或另一示例实施例中,可以使客操作系统220使用的页表对输入/输出控制器仿真器406可用,使得客虚拟地址中发出的指令可被转换到客物理地址中。
转向操作908,其示出在虚拟机中执行输入/输出控制器仿真器。例如,转向图4,指示IO控制器仿真器406的指令可被存储在与虚拟机410相关联的客物理地址中,并由在仿真上下文414中运行的虚拟处理器来执行。继续以上示例,当完成该作业且虚拟化服务提供者402向IO控制器仿真器406发送了完成信号时,系统管理程序400可接收该信号,并将虚拟处理器切换到仿真上下文414,并运行输入/输出控制器仿真器406。输入/输出控制器仿真器406然后可处理虚拟化服务提供者402所取得的数据,并将其插入到IO控制器驱动程序412所请求的客物理存储器中。输入/输出控制器仿真器406然后可向客操作系统220发送中断,使得下一次其执行时,客操作系统可处理该中断并且确定数据已被写入存储器。在该示例中,IO控制器仿真器406可被连接到中断线。当IO控制器仿真器406运行时,它可设置虚拟处理器的状态来反映中断线正示出待决中断。当虚拟处理器被切换到客OS上下文416并运行客操作系统220时,客机将检测到该中断并通过例如运行IO控制器驱动程序412来服务该中断。
现在转向图10,其示出图9的操作过程的替换实施例,包括操作1010-1016。操作1010示出输入/输出控制器仿真器用高速缓存的数据来响应来自客操作系统的输入/输出请求。例如,在本发明的一实施例中,输入/输出控制器仿真器406可将它预期客操作系统220将请求的数据存储在虚拟机410的保留存储器中。在客操作系统220请求数据的情况下,数据可从输入/输出控制器仿真器406控制的存储器返回,而不必向虚拟化服务提供者402发送请求。在一示例实施例中,虚拟化服务提供者402可使用描述在虚拟机410中有多少保留存储器可用于缓存数据、它正在服务来自物理计算机上的所有虚拟机的多少请求、与子分区相关联的优先级等的信息,来确定要发回多少数据。在另一示例实施例中,该数据可被缓存在存储器中可由系统管理程序访问的别处。在缓存的数据被请求的情况下,该数据可被发送到仿真器,或者包含该存储器的页可被重新映射,使得输入/输出控制器仿真器可访问包含该数据的系统物理地址。
继续图10的描述,操作1012示出响应于检测到对映射到输入/输出控制器仿真器的寄存器的访问来执行输入/输出控制器仿真器。例如,IO仿真器406可被配置成在IO驱动程序412试图访问与该仿真器正在仿真的设备相关联的IO端口或IO映射的存储器时执行。例如,系统管理程序400可被配置成用系统管理程序截取来标记IO端口和存储器,并且如果IO驱动程序412接触到该资源,则系统管理程序400可截取访问并执行。系统管理程序400可检查标识了导致进入仿真上下文414的端口的表;保存虚拟处理器的状态;切换到仿真上下文414;以及将IO控制器驱动程序412试图写入的信息传递到分配给IO控制器仿真器406的资源。
继续图10的描述,操作1014示出响应于检测到对与输入/输出控制器仿真器相关联的存储器映射的IO空间的访问来执行输入/输出控制器仿真器。例如,在本发明的一实施例中,系统管理程序400可被配置成截取对为IO控制器仿真器406保留的存储器的访问。在该示例实施例中,当客操作系统220接触到该存储器时,系统管理程序400可以截取该访问并切换到仿真上下文414;将客操作系统220试图写入的值传递到存储器;以及执行IO控制器仿真器406。
继续图10的示例,操作1016示出将执行输入/输出控制器仿真器所花费的处理器时间自动归于虚拟机。例如,在本发明的一实施例中,虚拟处理器运行输入/输出控制器仿真器406所花费的时间量可被记录并对虚拟机410记账。通常,虚拟机环境中可被记录的唯一的记账机制是虚拟处理器在虚拟机中运行的时间量。在该实施例中,由于输入/输出控制器仿真器406正在虚拟机410中运行,因此它运行所花费的时间自然被归于子分区,并允许生成准确的记账记录。
上述详细描述通过示例和/或操作图阐明了系统和/或过程的各种实施例。就这些框图和/或示例包含一个或多个功能和/或操作而言,本领域技术人员将理解,这些框图或示例中的每一功能和/或操作都可由各种各样的硬件、软件、固件、或实际上其任意组合来单独地和/或共同地实现。
虽然已示出和描述了本文中描述的主题内容的特定方面,但是本领域技术人员将明白,基于本文中的教导,可作出改变和修改而不脱离本文中描述的主题内容,并且其更广方面以及因此所附权利要求的范围旨在涵盖落在本文中描述的主题内容的真实精神和范围内的所有此类改变和修改。

Claims (10)

1.一种计算机系统,包括:
用于将输入/输出控制器仿真器(406)配置成在虚拟机(410)中执行的电路;以及
用于将IO消息传递信道(408)配置成将所述输入/输出控制器仿真器(406)生成的输入/输出请求发送到虚拟化服务提供者(402)的电路。
2.如权利要求1所述的计算机系统,其特征在于,还包括:
用于响应于从所述虚拟化服务提供者接收到输入/输出作业完成信号来执行所述输入/输出控制器仿真器的电路。
3.如权利要求1所述的计算机系统,其特征在于,还包括:
用于用高速缓存在所述虚拟机中的数据来响应来自被配置成在所述虚拟机中执行的客操作系统的输入/输出请求的电路。
4.如权利要求1所述的计算机系统,其特征在于,还包括:
用于在执行所述输入/输出控制器仿真器之前将虚拟地址映射到客物理地址的电路。
5.如权利要求1所述的计算机系统,其特征在于,还包括:
用于将系统管理程序配置成俘获对与所述输入/输出控制器仿真器相关联的存储器映射的IO空间的访问的电路。
6.如权利要求1所述的计算机系统,其特征在于,还包括:
用于将执行所述输入/输出控制器仿真器所花费的处理器时间自动归于所述虚拟机的电路。
7.如权利要求1所述的计算机系统,其特征在于,还包括:
用于根据安全策略来确定经由所述IO消息传递信道发送的通信的电路。
8.如权利要求1所述的计算机系统,其特征在于,还包括:
用于保存与所述虚拟机相关联的状态的电路。
9.一种包括可执行指令的计算机可读存储介质,包括:
用于响应于确定映射到输入/输出控制器仿真器(406)的寄存器被访问来执行上下文切换以执行输入/输出控制器仿真器(406)的指令,其中所述输入/输出控制器仿真器(406)被配置成在虚拟机(410)内执行;以及
用于经由IO消息传递信道(408)将所述输入/输出控制器仿真器(406)生成的输入/输出请求发送到虚拟化服务提供者(402)的指令。
10.如权利要求9所述的计算机可读存储介质,其特征在于,还包括:
用于响应于确定客操作系统曾试图访问与输入/输出控制器仿真器相关联的存储器映射的IO空间来执行上下文切换以执行所述输入/输出控制器仿真器的指令。
CN201110087012.9A 2010-03-31 2011-03-30 虚拟机快速仿真辅助 Active CN102207886B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/752,014 US8612633B2 (en) 2010-03-31 2010-03-31 Virtual machine fast emulation assist
US12/752,014 2010-03-31

Publications (2)

Publication Number Publication Date
CN102207886A true CN102207886A (zh) 2011-10-05
CN102207886B CN102207886B (zh) 2016-02-17

Family

ID=44696734

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110087012.9A Active CN102207886B (zh) 2010-03-31 2011-03-30 虚拟机快速仿真辅助

Country Status (2)

Country Link
US (1) US8612633B2 (zh)
CN (1) CN102207886B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107209681A (zh) * 2015-10-21 2017-09-26 华为技术有限公司 一种存储设备访问方法、装置和系统
CN107820604A (zh) * 2015-04-14 2018-03-20 吉佳维申公司 具有联网设备的计算机驱动系统的半虚拟化安全威胁防护
CN113835361A (zh) * 2021-11-29 2021-12-24 西安羚控电子科技有限公司 一种无人机半物理仿真系统

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959363B2 (en) * 2010-06-03 2015-02-17 Intel Corporation Systems, methods, and apparatus to virtualize TPM accesses
WO2012034292A1 (en) * 2010-09-19 2012-03-22 Mediatek Singapore Pte. Ltd. Method for performing coding resource management, and associated processing circuit
US9529615B2 (en) * 2010-11-24 2016-12-27 International Business Machines Corporation Virtual device emulation via hypervisor shared memory
US9183030B2 (en) * 2011-04-27 2015-11-10 Microsoft Technology Licensing, Llc Virtual processor allocation techniques
US9672583B2 (en) * 2011-12-21 2017-06-06 Intel Corporation GPU accelerated address translation for graphics virtualization
US9785527B2 (en) * 2013-03-27 2017-10-10 Ixia Methods, systems, and computer readable media for emulating virtualization resources
US9524299B2 (en) 2013-08-12 2016-12-20 Ixia Methods, systems, and computer readable media for modeling a workload
US9658873B2 (en) * 2013-08-21 2017-05-23 Red Hat Israel, Ltd. Switching between devices having a common host backend in a virtualized environment
WO2015030746A1 (en) * 2013-08-28 2015-03-05 Empire Technology Development, Llc Virtual machine exit analyzer
US9305009B1 (en) * 2013-09-30 2016-04-05 Emc Corporation Synchronous replication of virtualized storage processors
CN104598409B (zh) * 2013-10-31 2017-09-19 华为技术有限公司 一种处理输入输出请求的方法及设备
US9317452B1 (en) * 2013-11-18 2016-04-19 Amazon Technologies, Inc. Selective restrictions to memory mapped registers using an emulator
RO130722A2 (ro) 2014-04-10 2015-11-27 Ixia, A California Corporation Metodă şi sistem pentru implementare hardware a pachetelor de date uniform amestecate
US9721121B2 (en) * 2014-06-16 2017-08-01 Green Hills Software, Inc. Out-of-band spy detection and prevention for portable wireless systems
US9507616B1 (en) 2015-06-24 2016-11-29 Ixia Methods, systems, and computer readable media for emulating computer processing usage patterns on a virtual machine
US20170083652A1 (en) * 2015-09-18 2017-03-23 Synopsys, Inc. Saving and restoring an emulation environment
EP3188014B1 (en) * 2015-12-29 2022-07-13 Dassault Systèmes Management of a plurality of graphic cards
US10341215B2 (en) 2016-04-06 2019-07-02 Keysight Technologies Singapore (Sales) Pte. Ltd. Methods, systems, and computer readable media for emulating network traffic patterns on a virtual machine
US10942757B2 (en) * 2017-02-27 2021-03-09 Red Hat, Inc. Virtual machine security through guest-side emulation
US10956193B2 (en) * 2017-03-31 2021-03-23 Microsoft Technology Licensing, Llc Hypervisor virtual processor execution with extra-hypervisor scheduling
EP3848763B1 (de) * 2020-01-08 2022-12-21 Elektrobit Automotive GmbH Qualifizierung eines gerätetreibers für ein gerät
US11556371B2 (en) * 2020-03-24 2023-01-17 Red Hat, Inc. Hypervisor task execution management for virtual machines
EP3961389A1 (en) * 2020-08-26 2022-03-02 The Boeing Company Virtual machine for developing and testing target code for hardware designs
US11323354B1 (en) 2020-10-09 2022-05-03 Keysight Technologies, Inc. Methods, systems, and computer readable media for network testing using switch emulation
US11483227B2 (en) 2020-10-13 2022-10-25 Keysight Technologies, Inc. Methods, systems and computer readable media for active queue management
US20220334774A1 (en) * 2021-04-15 2022-10-20 Vmware, Inc. Low latency virtual memory management
US20230409458A1 (en) * 2022-06-16 2023-12-21 Microsoft Technology Licensing, Llc Generating, aggregating, and querying virtualization service execution metrics for cloud diagnostics at scale

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1652084A (zh) * 2004-02-03 2005-08-10 株式会社日立制作所 计算机系统、管理装置、存储装置以及计算机装置
US20080005297A1 (en) * 2006-05-16 2008-01-03 Kjos Todd J Partially virtualizing an I/O device for use by virtual machines
CN101213518A (zh) * 2005-06-30 2008-07-02 英特尔公司 通过指令组设陷来优化os上下文切换的系统和方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069413B1 (en) * 2003-01-29 2006-06-27 Vmware, Inc. Method and system for performing virtual to physical address translations in a virtual machine monitor
US7111145B1 (en) 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
KR101030941B1 (ko) * 2003-06-05 2011-04-28 인터트러스트 테크놀로지즈 코포레이션 P2p 서비스 편성을 위한 상호운용 시스템 및 방법
US7552436B2 (en) * 2003-11-25 2009-06-23 International Business Machines Memory mapped input/output virtualization
US7580826B2 (en) 2004-06-30 2009-08-25 Microsoft Corporation Systems and methods for development of emulated devices in a virtual machine environment
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US20070106986A1 (en) 2005-10-25 2007-05-10 Worley William S Jr Secure virtual-machine monitor
US8595487B2 (en) 2006-11-01 2013-11-26 Vmware, Inc. Virtualization hardware for device driver isolation
US8555081B2 (en) 2007-10-30 2013-10-08 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US7730248B2 (en) * 2007-12-13 2010-06-01 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems and processes
US8151265B2 (en) * 2007-12-19 2012-04-03 International Business Machines Corporation Apparatus for and method for real-time optimization of virtual machine input/output performance
US8352670B2 (en) 2008-01-22 2013-01-08 Globalfoundries Inc. Execute-only memory and mechanism enabling execution from execute-only memory for minivisor
JP5245539B2 (ja) * 2008-05-27 2013-07-24 富士通株式会社 仮想マシンの入出力エミュレーション機構
US8132167B2 (en) * 2008-12-23 2012-03-06 Hewlett-Packard Development Company, L.P. Context based virtualization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1652084A (zh) * 2004-02-03 2005-08-10 株式会社日立制作所 计算机系统、管理装置、存储装置以及计算机装置
CN101213518A (zh) * 2005-06-30 2008-07-02 英特尔公司 通过指令组设陷来优化os上下文切换的系统和方法
US20080005297A1 (en) * 2006-05-16 2008-01-03 Kjos Todd J Partially virtualizing an I/O device for use by virtual machines

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107820604A (zh) * 2015-04-14 2018-03-20 吉佳维申公司 具有联网设备的计算机驱动系统的半虚拟化安全威胁防护
CN107820604B (zh) * 2015-04-14 2021-09-21 吉佳维申公司 具有联网设备的计算机驱动系统的半虚拟化安全威胁防护
CN107209681A (zh) * 2015-10-21 2017-09-26 华为技术有限公司 一种存储设备访问方法、装置和系统
US10713074B2 (en) 2015-10-21 2020-07-14 Huawei Technologies Co., Ltd. Method, apparatus, and system for accessing storage device
CN113835361A (zh) * 2021-11-29 2021-12-24 西安羚控电子科技有限公司 一种无人机半物理仿真系统

Also Published As

Publication number Publication date
US20110246171A1 (en) 2011-10-06
US8612633B2 (en) 2013-12-17
CN102207886B (zh) 2016-02-17

Similar Documents

Publication Publication Date Title
CN102207886B (zh) 虚拟机快速仿真辅助
CN108475217B (zh) 用于审计虚拟机的系统及方法
US10353725B2 (en) Request processing techniques
US9772860B2 (en) Efficient power management of a system with virtual machines
US8671405B2 (en) Virtual machine crash file generation techniques
JP5079246B2 (ja) 仮想マシン環境におけるマルチレベルインターセプト処理のためのシステムおよび方法
US6275893B1 (en) Method and apparatus for providing seamless hooking and intercepting of selected kernel and HAL exported entry points in an operating system
US7707341B1 (en) Virtualizing an interrupt controller
US10509665B2 (en) Fast-booting application image
US7209994B1 (en) Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
EP2024826B1 (en) Launching hypervisor under running operating system
KR101514088B1 (ko) 가상화된 환경에서의 최적화된 인터럽트 전달
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
CN102495769A (zh) 动态虚拟设备故障恢复
KR20080094952A (ko) 보안 운영 시스템 스위칭
EP3961446A1 (en) Method and apparatus for securely entering trusted execution environment in hyper-threading scenario
CN113268447A (zh) 计算机架构及其内的访问控制、数据交互及安全启动方法
Im et al. On-Demand Virtualization for Post-Copy OS Migration in Bare-Metal Cloud
Im et al. On-demand virtualization for live migration in bare metal cloud
US11782713B1 (en) Security vulnerability mitigation using address space co-execution
JP2864255B2 (ja) 仮想計算機方式の計算機システム
Santoso et al. SUPPORTING VIRTIO IN BARE-METAL VIRTUAL MACHINE MONITOR
表祐志 Computer Systems Management with a Para Pass-through Virtual Machine Monitor

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150723

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

Effective date of registration: 20150723

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant