CN101278263A - 虚拟机环境中的输入/输出设备与物理存储器之间的直接存储器访问 - Google Patents
虚拟机环境中的输入/输出设备与物理存储器之间的直接存储器访问 Download PDFInfo
- Publication number
- CN101278263A CN101278263A CNA2006800365466A CN200680036546A CN101278263A CN 101278263 A CN101278263 A CN 101278263A CN A2006800365466 A CNA2006800365466 A CN A2006800365466A CN 200680036546 A CN200680036546 A CN 200680036546A CN 101278263 A CN101278263 A CN 101278263A
- Authority
- CN
- China
- Prior art keywords
- equipment
- virtual machine
- device driver
- direct memory
- environment
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Abstract
在虚拟机(VM)环境中的输入/输出(I/O)设备与存储器之间提供了直接存储器访问(DMA)。一种计算设备包括:I/O设备、在所述计算设备的VM上运行的操作系统(OS)、用于所述I/O设备的设备驱动器、VM管理器(VMM)、I/O转换硬件,以及用于OS的硬件抽象组件。所述I/O转换硬件用于将分配给OS的计算设备的物理地址转换为所述I/O设备的机器地址。所述硬件抽象组件与所述VMM协同交互以使设备驱动器能够通过转换硬件在I/O设备与存储器之间启动DMA。所述OS可以未经修改便在所述计算设备的VM上运行,只是所述硬件抽象组件特别地能够与所述VMM协同交互以使所述设备驱动器能够接收来自所述I/O设备的DMA。
Description
技术领域
本发明一般地涉及虚拟机环境,其中客户操作系统在计算设备的虚拟机中运行,更具体地说,涉及此类虚拟机环境中的输入/输出(I/O)设备与存储器之间的直接存储器访问。
背景技术
以往,单个计算设备运行单个操作系统。例如,每个计算机用户都被分配有他或她自己的客户端计算设备,并且计算设备运行其中用户可以根据需要运行应用程序的操作系统。同样,服务器计算设备运行可运行应用程序的单个操作系统。
但是,此类计算机体系结构具有缺点。首先,它成本高,因为无论是否处于使用状态,每个计算设备都需要一整套处理器、存储器和输入/输出(I/O)设备以正常运行。其次,使用此类体系结构可能效率较低。在任何给定时间,给定计算设备可能未执行工作,并且更确切地说处于闲置状态,等待在工作负荷增加时执行任务。
因此,已经开发一种技术,其中多个操作系统能够在单个计算设备中运行,至少共享计算设备的存储器和处理器。此类技术被称为虚拟化。通过虚拟化,一个给定计算设备具有多个虚拟机(VM)或VM环境,其中客户操作系统在每个VM或VM环境中运行。因此,多个计算机用户的客户操作系统可以同时在单个计算设备(例如单个服务器计算设备)上运行。当工作负荷需求高时,可以实例化和运行更多的VM。当工作负荷低时,可以暂停VM。
一种类型的虚拟化技术被称为完全虚拟化。完全虚拟化具有能够与“现成(off-the-shelf)”操作系统一起使用而无需对这些操作系统进行任何修改的优点。这对于基于x-86的操作系统(例如各种版本的MicrosoftWindows操作系统和各种版本的Linux操作系统)尤其有利。因此,可以建立完全虚拟化的环境,其中Microsoft Windows操作系统和/或Linux操作系统的不同实例可以同时在同一计算设备的不同VM(相互隔离)中运行,而不必修改操作系统。
但是,完全虚拟化具有一个突出的缺点。在完全虚拟化中,通常将仿真由VM环境中运行的客户操作系统对计算设备的I/O设备的I/O访问。也就是说,客户操作系统并不直接访问I/O设备,而是将来自操作系统的I/O请求发送到VM管理器或系统管理程序,后者管理所有的IO请求,相应地处理这些请求并根据需要将这些请求发送到I/O设备。因此,完全虚拟化通常在IO期间导致性能降低,因为VM管理器必须代表所有VM来监视和仿真所有IO操作。
另一种类型的虚拟化技术被称为准虚拟化。在准虚拟化中,操作系统软件利用系统管理程序暴露的编程接口来执行IO和DMA操作。通常,在准虚拟化的模型中,将创建特殊的分区或VM以管理所有IO。在准虚拟化的模型中,通常存在极少(如果有)的仿真,从而实现了“更瘦”或更轻量的系统管理程序。因此,准虚拟化具有比完全虚拟化提供显著更佳I/O性能的优点。对于I/O性能至关重要的环境,准虚拟化可以是理想的解决方案。
但是,准虚拟化存在一个非常突出的缺点,即必须定制或完全重写客户操作系统以便在准虚拟化的环境中运行。也就是说,“现成”操作系统(例如各种版本的Microsoft Windows操作系统和各种版本的Linux操作系统)如果不进行显著和重要的修改,则无法在准虚拟化的环境中运行。
在完全虚拟化的系统中,没有硬件帮助而纯粹以软件监视和仿真I/O的相关开销相当可观。在这种情况下,硬件帮助指一组能够在VM中的单个DMA设备与存储器之间进行安全地址转换的硬件转换表。当前,x86处理器体系结构本身没有集成DMA转换功能。但是,某些基于x86的系统确实包含能够转换或重新映射平台体系结构中使用的芯片组中的DMA地址空间的硬件特性。
发明内容
本发明涉及虚拟机(VM)环境中的输入/输出(I/O)设备与物理存储器之间的直接存储器访问(DMA)。本发明的一个实施例的计算设备包括I/O设备、在计算设备的VM上运行的操作系统(OS)、用于在VM中运行的I/O设备的设备驱动器、在计算设备中运行的VM管理器(VMM)或系统管理程序、I/O转换硬件,以及用于在VM中运行的OS的硬件抽象组件。I/O转换硬件用于在I/O设备与物理存储器之间将分配给OS的计算设备的物理地址转换为机器地址。硬件抽象组件与VMM协同交互以便能够通过I/O转换硬件从DMA I/O设备访问系统存储器。
要指出的是,在此所述的I/O设备实际上集成了两个组件:设备本身(例如存储设备本身)和设备的I/O控制器(管理对设备进行的访问以及从设备进行的访问)。I/O控制器管理对存储器和设备进行的DMA以及从存储器和设备进行的DMA。在一个实施例中,实现两种基本的I/O访问方法。首先,VM管理器使操作系统能够访问I/O控制器,并且因此允许操作系统直接对控制器编程。其次,VM管理器利用I/O转换硬件以使I/O控制器能够直接对分配给客户操作系统的存储器空间进行寻址。
第一种类型的访问方法不依赖I/O转换硬件来使操作系统能够访问I/O控制器,并且此类型的访问被称为编程的I/O(与DMA相反),并且此地址空间的转换由x86页表处理。相比之下,第二种访问方法使I/O控制器能够直接读取和写入存储器,并且这是本发明的实施例提供的DMA优点的关键所在。
因此,I/O控制器实际上不是DMA操作的目标,而是DMA操作的发起方,其中分配给操作系统的存储器和设备本身是目标。OS可以未经修改便在计算设备的VM中运行,只是硬件抽象组件特别地能够与VMM协同交互。也就是说,与需要对OS进行重要更改的准虚拟化的环境不同,本发明的虚拟化环境不需要对OS进行重要更改。相反,只需要设计用于OS的新硬件抽象组件,并且几乎所有的OS(例如各种版本的MicrosoftWindows操作系统和各种版本的Linux操作系统)都使第三方能够为其未以其他方式更改的OS提供新的硬件抽象组件。换言之,虽然准虚拟化环境需要对OS进行更改,但是本发明的虚拟化环境不需要对OS进行广泛更改,而是只需要对硬件抽象组件进行更改,所述硬件抽象组件以相对低的级别将访问局限于DMA硬件。
本发明的另一个实施例的计算设备包括一个或多个I/O设备、一个或多个VM环境、I/O转换硬件以及VMM。每个VM环境包括OS、用于I/O设备的设备驱动器,以及用于OS的硬件抽象组件。I/O转换硬件为在每个VM环境的至少一个I/O设备与物理存储器之间的DMA将分配给每个VM环境的OS的物理地址转换为I/O设备的机器地址。VMM管理VM环境,并且能够允许在VM环境的至少一个I/O设备与存储器之间的DMA,并且能够拒绝在VM环境的I/O设备与存储器之间的DMA。
因此,某些VM环境的某些OS可以具有用于某些I/O设备的DMA,并且其他VM环境的其他OS可能没有用于这些I/O设备的DMA。换言之,VMM根据每个OS允许用于给定I/O设备的设备驱动器以及给定OS的设备驱动器是否允许在I/O设备之间进行DMA或对I/O设备进行虚拟化I/O访问。通过这种方式,可以完全虚拟化本发明的至少某些实施例提供的虚拟化环境,以使“现成”和未经修改的OS不需要新的硬件抽象组件便可在此环境中运行。但是,可以不完全虚拟化相同的虚拟化环境,以使具有此类新硬件抽象组件以及需要高I/O性能的OS可以进行DMA。
因此,虚拟化环境可以支持“混合和匹配的”操作系统,其中某些操作系统利用DMA而某些操作系统对这些I/O设备进行虚拟化I/O访问。因此,本发明的至少某些实施例的虚拟化环境可以在每个OS和每个I/O设备的基础上提供动态虚拟化,范围从实现最高兼容性的完全虚拟化到实现最高性能的非完全虚拟化。提供的非完全虚拟化仍比准虚拟化更有利,因为OS不必进行重要修改,而是只需要修改其硬件抽象组件。也就是说,本发明的这些实施例提供的非完全虚拟化仍比上述准虚拟化提供更多的优点。
本发明的一个实施例的一种方法用于在计算设备中运行的VM环境中的计算设备的物理存储器与I/O设备之间的DMA。在计算设备中运行的VMM将I/O转换硬件编程为将分配给VM环境的计算设备的物理地址转换为VM的机器地址。因此,用于在VM环境中运行的I/O设备的设备驱动器可以启动到达/来自I/O设备的DMA,以便I/O转换硬件将设备驱动器提供的物理地址转换为VM的物理存储器的机器地址,以及将所述机器地址转换为所述物理地址。
在本发明的另一个实施例的一种方法中,在计算设备的VM环境中运行的设备驱动器调用也在VM环境中运行的硬件抽象组件以建立用于计算设备的I/O设备的DMA。硬件抽象组件通过与计算设备中的VMM通信来判断是否针对I/O设备启用DMA。如果未启用DMA,则VMM在VMM的软件中仿真设备驱动器与I/O设备之间的所有I/O。如果启用DMA,则VMM将计算设备的I/O转换硬件编程为将分配给VM环境的计算设备的物理地址转换为VM的机器地址,以便能够在I/O设备与存储器之间发生(非仿真的)DMA。
通过阅读后面的详细说明以及通过参考附图,本发明的其他实施例、方面和优点将变得显而易见。
附图说明
在此参考的附图构成说明书的一部分。除非另行明确指明,否则附图中示出的特性只是对本发明的某些实施例而不是本发明的所有实施例的示例,并且未进行相反暗示。
图1是根据本发明的实施例的用于在计算设备中实现虚拟机(VM)环境的计算机体系结构的示意图;
图2是根据本发明的实施例的用于实现VM环境中来自计算设备的输入/输出(I/O)设备的直接存储器访问(DMA)的计算设备体系结构的示意图;
图3是根据本发明的实施例的用于在VM环境与I/O设备之间初始化I/O访问(虚拟化的DMA或非虚拟的DMA)的方法的流程图;以及
图4是根据本发明的实施例的用于在VM环境与I/O设备之间实现I/O访问(虚拟化的DMA或非虚拟的DMA)的方法的流程图。
具体实施方式
在本发明的示例性实施例的以下详细说明中,参考了形成本说明一部分的附图,并且其中通过示例的方式示出了其中可以实现本发明的特定示例性实施例。这些实施例被充分详细地描述,以便使得本领域的技术人员能够实现本发明。可以使用其他实施例并且可以在不偏离本发明的精神或范围的情况下做出逻辑的、机械的更改和其他更改。因此,不应以限制的意义来理解以下的详细说明,并且本发明的范围仅由所附的权利要求来限定。
图1示出了根据本发明的实施例的计算设备100。计算设备100包括虚拟机(VM)管理器102,以及多个虚拟机(VM)104A、104B、…、104N(统称为VM 104)。VM 104也可以称为VM环境。VM 104相应地在操作系统(OS)106A、106B、…、106N(统称为OS 106)中运行。
每个VM 104都是一个虚拟化环境,可使相应的一个OS 106在其中运行,就像正在讨论的OS是在计算设备100中运行的唯一OS那样。通过这种方式,在多个VM 104中,多个OS 106可以在计算设备100中运行。即,VM 104是这样的VM环境:其中对于VM 104中运行的软件,每个VM 104都显示为传统的硬件环境,例如计算设备100的唯一硬件环境。
VM管理器102管理VM 104。也就是说,VM管理器102允许管理单独的VM 104,例如其启动、关闭和维护。当需要在计算设备100中运行新的VM时,将在VM管理器102中启动它,并且当需要关闭现有VM时,将在VM管理器102中关闭它。VM管理器102通常也称为系统管理程序。
计算设备100包括硬件,例如一个或多个处理器108、存储器110,以及输入/输出(I/O)设备112A、112B、…、112M(统称为I/O设备112)。如本领域的技术人员可理解的,除了图1中示出的硬件以外或代替图1中示出的硬件,计算设备100还可以具有其他硬件。存储器110由VM 104共享。存储器110可通过具有一系列物理存储器地址的物理地址空间来寻址。在一个实施例中,每个VM 104都分配有一部分物理地址空间,以便为每个VM 104分配存储器110的一部分物理存储器地址。
处理器108可以由VM 104共享,或者每个处理器108可以由单个VM104使用。在一个实施例中,处理器108是x86处理器,并且因此通常不是非常适于虚拟化的处理器。也就是说,x86处理器并非内在地是为虚拟化而提供的处理器,并且因此没有特定于虚拟化的处理器命令或操作码。因此,可以将本发明的实施例与并非为虚拟化而提供的处理器一起使用。此类实施例可以在x86操作系统(例如各种版本的Microsoft Windows操作系统和各种版本的Linux操作系统)中实现。
I/O设备112可以包括存储设备(例如盘驱动器设备)、通信设备(例如网络适配器)、输出设备(例如显示设备及其连接的显示设备适配器),以及本领域的技术人员可理解的其他类型的I/O设备。如随后将在详细说明中更详细地描述的那样,在一个实施例中,每个I/O设备112可以专用于或保留给一个VM 104,或者在另一个实施例中,它可由多个VM 104共享。例如,具有存储设备接口适配器的给定存储设备可以专用于或保留给一个VM 104,以便只有此VM才可以使用此存储设备,或者它可由多个VM 104共享,以便所有这些VM都可以使用此存储设备。
此外,对于给定一个VM 104所访问的每个I/O设备112,正在讨论的VM可以对此I/O设备具有两种不同类型之一的访问。首先,VM可以对I/O设备进行虚拟化的I/O访问,例如对I/O设备进行的虚拟化直接存储器访问(DMA)。在虚拟化访问中,来自VM的I/O请求以及来自I/O设备的I/O响应通过VM管理器102。换言之,VM管理器102处理VM与I/O设备之间的所有I/O访问,其中访问是虚拟化的。
其次,VM可以与I/O设备进行DMA。在DMA中,来自VM的I/O请求以及来自I/O设备的I/O响应不通过VM管理器102。确切地说,此类请求和响应直接从正在讨论的VM到正在讨论的I/O设备,以及直接从正在讨论的I/O设备到正在讨论的VM。真正的DMA要比虚拟化的I/O访问提供更佳的性能,但是确实需要专用的硬件抽象组件才能发生,而虚拟化的I/O访问则不需要,如随后将在详细说明中更详细地描述的那样。
图2更详细地示出了根据本发明的实施例的计算设备100的一部分。在图2中,仅示出单个VM 104A,以及示出单个I/O设备112A,作为所有VM 104以及所有I/O设备112的代表。此外,为了说明方便和清晰,图2中未示出处理器108和存储器110。但是,在图2的实施例中的计算设备100中存在其他硬件,即I/O转换硬件216。现在说明图2的计算设备100的各个组件,然后通过两种方法说明它们的运行以及相互联系的方式。
VM 104A分为用户模式202和内核模式204。诸如应用程序206之类的应用程序在用户模式202运行,而用于VM 104A的OS 106A在内核模式204中运行。可以将用户模式202和内核模式204视为VM 104A的两种运行模式。在用户模式202中运行的应用程序仅可访问用户模式202中提供的地址空间,这样当用户模式过程需要位于内核模式204中的数据时,它将调用OS 106A提供的系统服务以获取此数据。
用户模式202和内核模式204之间存在区别,以便可以为在内核模式204中运行的关键系统过程提供一定量的保护或安全性,从而无法直接从用户模式202中影响这些过程。因此,内核模式204包含VM 104A的内核,其是VM 104A的基础部分,其中包括为在用户模式202中运行的应用程序提供基本服务的OS 106A。例如,从用户模式202对I/O设备112A进行的访问通过VM 104A的内核模式204完成。
除了应用程序206之外,还示出了位于用户模式202中的代表性缓冲区208。缓冲区208存储从应用程序206发送到I/O设备112A以及从I/O设备112A发送到应用程序206的数据,其中在程序206与I/O设备112A之间提供DMA。随后将在详细说明中更详细地描述此缓冲区208的使用。
除了OS 106A之外,内核模式204还包括用于OS 106A的硬件抽象组件210,以及用于I/O设备112A的设备驱动器212。硬件抽象组件210在某些情况下可以被视为OS 106A的一部分。但是,硬件抽象组件210是与OS 106A的其他组件分离的组件,并且相对于OS 106A其他部分处于显著较低的级别。因此,可以说OS 106A未经修改,即使已修改硬件抽象组件210也是如此,因为组件210已被模块化。
硬件抽象组件210对用于OS 106A的计算设备100(例如I/O设备112A)的硬件进行抽象化。换言之,组件210对OS 106A隐藏与计算设备100的硬件连接的细节。因此,组件210的功能类似于应用编程接口(API),并由程序员用于编写与设备无关的应用程序。例如,程序员只需编写将数据存储到存储设备的代码,而不必针对可能存在于计算设备100中的每种特定类型的存储设备编写代码。在某些类型的操作系统(例如各种版本的Microsoft Windows操作系统)中,组件210被称为硬件抽象层。
虽然硬件抽象组件210提供计算设备100的所有硬件的总体级别抽象,但是设备驱动器212使OS 106A和应用程序206能够与特定硬件通信。设备驱动器212专用于I/O设备112A,并且包含专门编写以便与I/O设备112A通信的代码。设备驱动器是将操作系统链接到外围设备的程序例程。因此,设备驱动器212包含与I/O设备112A连接所必需的精确机器语言。
硬件抽象组件210和设备驱动器212共同运作以提供对I/O设备112A的访问。如随后将在详细说明中更详细地描述的,可以说设备驱动器212向硬件抽象组件210注册,并且通过这种方式向OS 106A并且从而向在VM 104A的用户模式202中运行的应用程序206显示I/O设备112A。要指出的是,硬件抽象组件210提供的设备驱动器212以及实际上最终VM管理器102提供对I/O设备112A的DMA或虚拟化访问。
此处VM管理器102包括相关的特定组件,即VM内核214。VM内核214是VM管理器102的内核214,并且在此用于提供从VM管理器102访问I/O设备112A的必需例程。此外,VM内核214提供用于在I/O设备112A与VM 104A之间建立DMA,或用于提供从VM 104A对I/O设备112A进行虚拟化I/O访问的必需例程。
VM内核214通过设备驱动器212与硬件抽象组件210交互以为I/O设备112A启用DMA,其中从I/O设备112A对VM 104A进行的此类DMA已被授权。此外,如果此类DMA未被授权,则VM内核214将工作以便虚拟化从VM 104A对I/O设备112A进行的I/O访问,可以将其视为常规操作。可以理解为何虚拟化的I/O访问慢于非虚拟化的DMA,因为虚拟化的I/O访问意味着所有从VM 104A进行的访问在继续到I/O设备112A之前必须通过VM管理器102的VM内核214,并且因此所有此类I/O访问首先在软件中被虚拟化。
I/O转换硬件216将I/O设备112A的机器地址转换为计算设备100的存储器110的物理地址,以及将所述物理地址转换为所述机器地址。这对于从I/O设备112A对VM 104A进行的DMA而言是必需的。也就是说,I/O设备112A的机器地址包括专用于或保留给I/O设备112A的计算设备100的地址空间。对于非VM环境中的常规DMA,可以通过使应用程序借助设备驱动器直接与这些机器地址通信来实现DMA。
但是,在与图2的实施例的VM环境类似的VM环境中,分配给VM104A的地址空间可能不包括I/O设备112A的机器地址,而是包括计算设备100的存储器110的一部分物理地址。因此,当授权设备驱动器212通过硬件抽象组件210与VM内核214协同交互来对I/O设备112A进行DMA时,从VM 104A的角度看,此类DMA不是通过I/O设备112A的机器地址而是通过相应的物理地址完成的。
因此,当进行DMA时,I/O转换硬件216会即时将I/O设备112A的机器地址转换为分配给VM 104A的物理地址。此类转换可以向上进行(从VM 104A到I/O设备112A),向下进行(从I/O设备112A到VM 104A),或者同时向上和向下进行。此类I/O转换硬件216的一个实例是可从位于纽约阿蒙克的国际商业机器公司获得的I/O转换硬件,作为IBM的EXA体系结构平台的一部分。
因此,如通常那样,图2的实施例可以提供从VM 104A对I/O设备112A进行的虚拟化I/O访问,并且其中此类I/O访问由VM内核214在软件中进行虚拟化,以及/或者可以提供从VM 104A中的I/O设备112A进行的DMA。在后一种情况下,利用I/O转换硬件216以使OS 106A能够直接从I/O设备112A启动DMA。因此,I/O转换硬件216有效地允许隔离或包含的DMA,因为它控制了可以与OS 106A来回进行DMA的物理地址范围或空间。利用硬件抽象组件210实现和隔离I/O转换接口以提供此类DMA,这样OS 106A本身不必被修改,而可以是“现成”OS。
此外,VM内核214提供了一组最低限度的系统管理程序调用,使得硬件抽象组件210调用VM内核214以判定是否为VM 104A授权DMA。如果授权DMA,则组件210将通知设备驱动器212可以完成此类DMA,并且VM内核214将I/O转换硬件216编程为将I/O设备112A的机器地址正确转换为分配给VM 104A的物理地址,以及将所述物理地址正确转换为所述机器地址。至少在这种意义下,硬件抽象组件210与VM内核214交互协作以在VM 104A中的I/O设备112A与存储器之间提供DMA。
因此,VM内核214提供混合虚拟化。首先,VM内核214可以针对I/O设备112提供DMA,这样虽然不需要修改OS 106A,但是必须编写或修改硬件抽象组件210以便在设备驱动器212请求时利用此类DMA。其次,VM内核214可以虚拟化对I/O设备112A进行的I/O访问,其中不必重写或修改硬件抽象组件210。在一个实施例中,此类虚拟化的I/O访问可以被视为虚拟化的DMA。
图3示出了根据本发明的实施例的用于在VM 104A与I/O设备112A之间初始化DMA(作为VM 104A中的OS 106A的更广泛初始化的一部分)的方法300。OS 106A如通常那样进行初始化(302),其中包括初始化硬件抽象组件210以及用于I/O设备112A的设备驱动器212(对于OS 106A)。在设备驱动器212的初始化期间(304),设备驱动器212尝试通过适当地调用硬件抽象组件210以注册DMA来注册对I/O设备112A的DMA支持。更具体地说,这可以被视为设备驱动器212调用硬件抽象组件210以建立对I/O设备112A的访问。
接下来,硬件抽象组件210调用VM内核214,更具体地说调用VM管理器102以判定OS 106A是否正在诸如VM 104A之类的VM环境中运行(306)。也就是说,只有硬件抽象组件210知道OS 106A正在VM 104A中运行。OS 106A不知道它正在VM 104A中运行。这与准虚拟化环境截然相反,在准虚拟化环境中OS被专门修改以知道它正在VM中运行。因此,在本发明的实施例中,不必修改OS 106A以在VM 104A中运行,即使其中在设备驱动器212与I/O设备112A之间提供DMA也是如此。因为OS 106A实际上正在VM 104A中运行,所以VM管理器102(即VM内核214)将返回OS 106A正在VM环境中运行的事实。
硬件抽象组件210接下来标识I/O设备112A,并调用VM内核214(更具体地说调用VM管理器102)以判定是否为I/O设备112A启用DMA(308)。如本领域的技术人员可理解的,通过外围组件接口(PCI)总线、设备和/或功能来标识I/O设备112A。当组件210调用VM内核214以判定是否为I/O设备112A启用DMA时,将向VM内核214提供此信息,这样VM内核214也可以适当地标识组件210所查询的I/O设备112A。通常这也可以被视为调用VM内核214以为设备驱动器212建立I/O设备112A的DMA。
如果为I/O设备112A启用(即授权或允许)DMA,则VM内核214将使设备驱动器212和硬件访问组件210能够访问I/O设备112A的机器地址(310)。通过访问已被分配给VM 104A的相应物理地址来允许访问I/O设备112A的机器地址。如已描述的,I/O转换硬件216将I/O设备112A的机器地址转换为这些物理地址,以及将这些物理地址转换为所述机器地址。通常,方法300的此部分310也可以被视为针对I/O设备112A启用DMA。
接下来,再次假设为I/O设备112A启用DMA,则硬件抽象组件210将构建用于记录通过设备驱动器212对I/O设备112A进行的DMA的表(312)。这对于DMA而言是常规操作,如本领域的技术人员可理解的。此处唯一的区别在于DMA在虚拟化环境中完成,在VM 104A中运行的设备驱动器212与I/O设备112A之间完成。此外,如果为I/O设备112A启用了DMA,则硬件抽象组件210向设备驱动器212返回已启用DMA(314),使得设备驱动器212可以接收来自I/O设备112A的DMA。
但是,如果没有为I/O设备112A启用DMA,则VM管理器102的VM内核214随后将虚拟化设备驱动器212与I/O设备112A之间的所有I/O(316)。在本发明的一个实施例中,此类虚拟化在软件中完成并且可以被视为虚拟化的DMA,因为此类“DMA”实际上是在软件中仿真的。此类虚拟化I/O访问还可在尚未修改或编写硬件访问组件210以利用VM104A的设备驱动器212与I/O设备112A之间的DMA的情况下完成。也就是说,无论DMA是否被授权,“现成”硬件访问组件210都可能不知道访问VM内核214,因此始终向设备驱动器212返回未启用DMA,这样由VM管理器102的VM内核214在软件中虚拟化对I/O设备112A进行的所有I/O访问。
图4示出了根据本发明的实施例的用于在VM 104A与I/O设备112A之间实际执行DMA的方法400,其中已经执行方法300的初始化。用户模式应用程序206使用OS 106A提供的现有(即本机)I/O调用向I/O设备112A发出I/O调用(402)。也就是说,应用程序206不必使用任何特殊类型的I/O调用以实现对I/O设备112A进行的DMA。同样,OS 106A不必暴露任何特殊类型的I/O调用以允许对VM 104A中的I/O设备112A进行DMA。确切地说,使用OS 106A的标准I/O调用,这样不必修改OS106A以实现对VM 104A中的I/O设备112A进行的DMA。
接下来,与I/O设备112A关联的设备驱动器212执行本机I/O准备以完成对I/O设备112A进行的DMA(404)。此类本机I/O准备包括如通常那样调用硬件抽象组件210,这样也不必修改设备驱动器212以利用对VM 104A中的I/O设备112A进行的DMA。如本领域的技术人员可理解的,完成组件210的调用以便在设备驱动器212中构建与要放置DMA结果的缓冲区208对应的物理地址列表。
硬件访问组件210又验证I/O设备112A是否实际启用DMA(406)。例如,组件210可以参考先前构造的表(例如未在图3中具体示出的方法300的一部分),此表列出了已为其启用DMA的所有I/O设备。还可以通过与VM管理器102通信而不是参考表来完成验证。
要指出的是,即使未在VM 104A中启用DMA,硬件抽象组件210也会准备所谓的本机DMA(408),其中由VM管理器102的VM内核214在软件中虚拟化或仿真此类本机DMA。也就是说,组件210在它通常未被专门编写以在本发明的实施例中的VM 104A提供DMA的情况下(如在组件210未经修改并且为“现成”的情况下)准备DMA。在此类情况下,硬件访问组件210如通常那样准备DMA,并且对于设备驱动器212而言是常规操作,以便通过此方式最终由VM内核214仿真或虚拟化“DMA”。
此类DMA准备在方法400的部分408中(即使其中无法提供实际DMA)很重要,原因有两个。首先,它允许VM管理器102(例如VM内核214)确定允许哪些VM 104实际接收来自I/O设备112A的DMA。换言之,即使给定的VM未被允许实际接收来自I/O设备112A的DMA,VM仍能够通过VM管理器102中的虚拟化或仿真的DMA与I/O设备112A通信。其次,它可以允许在本发明的实施例中使用未被特别修改以启用来自I/O设备112A的实际DMA的硬件访问组件。再换言之,即使给定的硬件访问组件无法利用对I/O设备112A进行的实际DMA,此组件是其一部分的VM仍能够通过VM管理器102中以软件来虚拟化或仿真的DMA与I/O设备112A通信。
如果启用真正的DMA,则硬件抽象组件210将调用VM内核214(410)。在此调用中,硬件抽象组件210标识针对其完成DMA的I/O设备112A。作为响应,VM管理器102的VM内核214验证I/O设备112A的机器地址是否处于能够进行DMA的状态(412),如可以在方法300(并且未在图3中具体示出)中完成的那样。此外,VM内核214对I/O转换硬件216编程。具体而言,VM内核214向硬件216指示分配给VM 104A的哪些物理地址与I/O设备112A的机器地址对应,使得I/O转换硬件216能够将物理地址转换为机器地址,以及将机器地址转换为物理地址。VM内核214最后向组件210指示验证I/O设备112A的机器地址以及对I/O转换硬件216编程已成功完成。
然后,硬件抽象组件210返回物理地址以供设备驱动器212用于DMA(414)。这些物理地址可以作为列表返回,并且用于或用作缓冲区208。因此,设备驱动器212可以通过直接利用提供的物理地址写入I/O设备112A来启动DMA(416)。然后,通过这些相同的物理地址启动从I/O设备112A到缓冲区208的DMA(418)。I/O转换硬件216在部分416中向上(从设备驱动器212到I/O设备112A),在部分418中向下(从I/O设备112A到缓冲区208),或者同时向上和向下将I/O设备112A的物理地址转换为机器地址。也就是说,部分416和418可以更具体地被称为VM104A中的I/O设备112A与存储器之间的DMA。
要指出的是,虽然已在此阐明和描述了特定实施例,但是本领域的技术人员将理解,可以使用适于完成相同目的的任何布置代替示出的特定实施例。因此,本申请旨在覆盖本发明的实施例的任何修改或变化。从而显然地,本发明旨在仅由权利要求及其等同物来限定。
Claims (29)
1.一种计算设备,包括:
输入/输出(I/O)设备;
客户操作系统(OS),其在所述计算设备的虚拟机(VM)上运行;
设备驱动器,其用于在所述虚拟机上运行的所述I/O设备;
虚拟机管理器(VMM),其在所述计算设备上运行;
I/O转换硬件,其用于将分配给所述客户操作系统的所述计算设备的物理地址转换为所述I/O设备的机器地址;以及
硬件抽象组件,其用于在所述虚拟机上运行的所述操作系统,所述硬件抽象组件与所述虚拟机管理器协同交互以使所述设备驱动器能够通过所述I/O转换硬件接收来自所述I/O设备的直接存储器访问(DMA)。
2.如权利要求1中所述的计算设备,其中所述虚拟机管理器包括虚拟机内核,所述虚拟机内核与所述硬件抽象组件交互以使所述设备驱动器能够通过所述I/O转换硬件从所述I/O设备进行直接存储器访问。
3.如权利要求1中所述的计算设备,其中所述操作系统未经修改便在所述计算设备的所述虚拟机上运行,只是所述硬件抽象组件能够与所述虚拟机管理器协同交互以使所述设备驱动器能够从所述I/O设备进行直接存储器访问。
4.如权利要求1中所述的计算设备,其中所述虚拟机管理器能够允许从所述I/O设备到所述设备驱动器的直接存储器访问以及拒绝从所述I/O设备到所述设备驱动器的直接存储器访问。
5.如权利要求4中所述的计算设备,其中所述虚拟机管理器通过在所述虚拟机管理器的软件中虚拟化所述设备驱动器与所述I/O设备之间的所有I/O来拒绝从所述I/O设备到所述设备驱动器的直接存储器访问。
6.如权利要求1中所述的计算设备,其中所述I/O设备被保留用于所述计算设备的所述虚拟机并且无法对所述计算设备的其他虚拟机进行直接存储器访问。
7.如权利要求1中所述的计算设备,其中所述计算设备的所述虚拟机与所述计算设备的其他虚拟机共享所述I/O设备以便进行直接存储器访问。
8.一种计算设备,包括:
输入/输出(I/O)设备;
在所述计算设备的虚拟机(VM)上运行的操作系统(OS);
用于在所述虚拟机上运行的所述I/O设备的设备驱动器;
在所述计算设备上运行的虚拟机管理器(VMM);
用于将分配给所述操作系统的所述计算设备的物理地址转换为所述I/O设备的机器地址的装置;以及
用于与所述虚拟机管理器协同交互以使所述设备驱动器能够通过上述用于将物理地址转换为机器地址的装置接收来自所述I/O设备的直接存储器访问(DMA)的装置。
9.如权利要求8中所述的计算设备,其中所述虚拟机管理器能够允许从所述I/O设备到所述设备驱动器的直接存储器访问以及拒绝从所述I/O设备到所述设备驱动器的直接存储器访问。
10.如权利要求8中所述的计算设备,其中所述I/O设备被保留用于所述计算设备的所述虚拟机并且无法对所述计算设备的其他虚拟机进行直接存储器访问。
11.如权利要求8中所述的计算设备,其中所述计算设备的所述虚拟机与所述计算设备的其他虚拟机共享所述I/O设备以便进行直接存储器访问。
12.一种计算设备,包括:
一个或多个输入/输出(I/O)设备;
一个或多个虚拟机(VM)环境,每个虚拟机环境包括:
操作系统(OS);
用于所述I/O设备的设备驱动器;以及
用于所述操作系统的硬件抽象组件;
I/O转换硬件,其用于将分配给每个虚拟机环境的所述操作系统的物理地址转换为所述I/O设备的机器地址,以便从至少一个所述I/O设备对每个虚拟机环境的所述设备驱动器进行直接存储器访问(DMA);
虚拟机管理器(VMM),其用于管理所述虚拟机环境,所述虚拟机管理器能够允许从至少一个所述I/O设备到虚拟机环境的所述设备驱动器的直接存储器访问以及拒绝从所述I/O设备到虚拟机环境的所述设备驱动器的直接存储器访问。
13.如权利要求12中所述的计算设备,其中所述虚拟机管理器通过与所述虚拟机环境的所述硬件抽象组件协同交互以使所述虚拟机环境的所述设备驱动器能够通过所述I/O转换硬件接收来自至少一个所述I/O设备的直接存储器访问(DMA),来允许从至少一个所述I/O设备到虚拟机环境的所述设备驱动器的直接存储器访问。
14.如权利要求12中所述的计算设备,其中所述虚拟机管理器通过在所述虚拟机管理器的软件中虚拟化所述设备驱动器与所述I/O设备之间的所有I/O来拒绝从所述I/O设备到虚拟机环境的所述设备驱动器的直接存储器访问。
15.如权利要求12中所述的计算设备,其中所述虚拟机管理器包括虚拟机内核,所述虚拟机内核与虚拟机环境的所述硬件抽象组件交互以使所述设备驱动器能够通过所述I/O转换硬件从至少一个所述I/O设备进行直接存储器访问。
16.如权利要求12中所述的计算设备,其中虚拟机环境的所述操作系统未经修改便在所述虚拟机环境中运行,只是所述硬件抽象组件能够与所述虚拟机管理器协同交互以使所述设备驱动器能够从至少一个所述I/O设备进行直接存储器访问。
17.如权利要求12中所述的计算设备,其中每个I/O设备被保留用于所述虚拟机环境中的一个虚拟机环境并且只能由为其保留所述I/O设备的所述虚拟机环境来访问。
18.如权利要求12中所述的计算设备,其中所述I/O设备由所述虚拟机环境所共享,以便每个虚拟机环境都能够接收来自每个I/O设备的直接存储器访问。
19.一种用于从计算设备的输入/输出(I/O)设备到在所述计算设备中运行的虚拟机(VM)环境进行直接存储器访问(DMA)的方法,包括:
通过在所述计算设备上运行的虚拟机管理器(VMM),将I/O转换硬件编程为将分配给所述虚拟机环境的所述计算设备的物理地址转换为所述I/O设备的机器地址;以及
从所述I/O设备对用于在所述虚拟机环境中运行的所述I/O设备的设备驱动器进行直接存储器访问,以便所述I/O转换硬件将所述设备驱动器提供的物理地址转换为所述I/O设备的机器地址,以及将所述机器地址转换为所述物理地址。
20.如权利要求19中所述的方法,初始地还包括:
由所述设备驱动器调用在所述虚拟机环境中运行的硬件抽象组件;以及
由所述硬件抽象组件验证是否针对所述设备驱动器授权了直接存储器访问,
以便所述虚拟机管理器和所述硬件抽象组件协同交互以使所述设备驱动器能够通过所述I/O转换硬件从所述I/O设备进行直接存储器访问。
21.如权利要求20中所述的方法,其中所述硬件抽象组件用于在所述虚拟机环境中运行的操作系统并且所述操作系统未经修改便在所述环境的所述虚拟机中运行,只是所述硬件抽象组件能够与所述虚拟机管理器协同交互以使所述设备驱动器能够接收来自所述I/O设备的直接存储器访问。
22.如权利要求19中所述的方法,初始地还包括:
由所述设备驱动器使用在所述虚拟机环境中运行的硬件抽象组件注册直接存储器访问;
由所述硬件抽象组件调用所述虚拟机管理器以判定所述设备驱动器是否正在所述虚拟机环境中运行;
由所述硬件抽象组件调用所述虚拟机管理器以为所述设备驱动器建立与所述I/O设备的直接存储器访问;以及
由所述虚拟机管理器启用从所述虚拟机环境对所述I/O设备的机器地址的访问,
以便所述虚拟机管理器和所述硬件抽象组件协同交互以使所述设备驱动器能够通过所述I/O转换硬件接收来自所述I/O设备的直接存储器访问。
23.如权利要求22中所述的方法,其中所述硬件抽象组件用于在所述虚拟机环境中运行的操作系统并且所述操作系统未经修改便在所述环境的所述虚拟机中运行,只是所述硬件抽象组件能够与所述虚拟机管理器协同交互以使所述设备驱动器能够接收来自所述I/O设备的直接存储器访问。
24.一种方法,包括:
由在计算设备的虚拟机(VM)环境中运行的设备驱动器调用在所述虚拟机环境中运行的硬件抽象组件,以建立所述设备驱动器对所述计算设备的输入/输出(I/O)设备的访问;
由所述硬件抽象组件通过与所述计算设备的虚拟机管理器(VMM)通信来判定是否启用从所述I/O设备到所述设备驱动器的直接存储器访问(DMA);
如果未启用直接存储器访问,则所述虚拟机管理器在所述虚拟机管理器的软件中虚拟化所述设备驱动器与所述I/O设备之间的所有I/O,以便仿真所述设备驱动器与所述I/O设备之间的直接存储器访问;以及
如果启用直接存储器访问,则所述虚拟机管理器将所述计算设备的I/O转换硬件编程为将分配给所述虚拟机环境的所述计算设备的物理地址转换为所述I/O设备的机器地址,以便能够在所述设备驱动器与所述I/O设备之间进行直接存储器访问。
25.如权利要求24中所述的方法,进一步包括,如果启用直接存储器访问,则从所述I/O设备对所述设备驱动器进行直接存储器访问,以便I/O转换表将所述设备驱动器提供的物理地址转换为所述I/O设备的机器地址,以及将所述机器地址转换为所述物理地址。
26.如权利要求24中所述的方法,初始地还包括:
由所述设备驱动器使用所述硬件抽象组件注册直接存储器访问;
由所述硬件抽象组件调用所述虚拟机管理器以判定所述设备驱动器是否正在所述虚拟机环境中运行;
由所述硬件抽象组件调用所述虚拟机管理器以为所述设备驱动器建立与所述I/O设备的直接存储器访问;以及
如果针对所述虚拟机环境允许所述直接存储器访问的直接存储器访问,则所述虚拟机管理器启用从所述虚拟机环境对所述I/O设备的机器地址的访问。
27.如权利要求24中所述的方法,其中所述硬件抽象组件用于在所述虚拟机环境中运行的操作系统并且所述操作系统未经修改便在所述环境的所述虚拟机中运行,只是所述硬件抽象组件能够与所述虚拟机管理器协同交互以使所述设备驱动器能够接收来自所述I/O设备的直接存储器访问。
28.如权利要求24中所述的方法,其中所述I/O设备被保留用于所述虚拟机环境并且无法对所述计算设备的其他虚拟机环境进行直接存储器访问。
29.如权利要求24中所述的方法,其中所述虚拟机环境与所述计算设备的其他虚拟机环境共享所述I/O设备以便进行直接存储器访问。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/246,733 | 2005-10-08 | ||
US11/246,733 US8001543B2 (en) | 2005-10-08 | 2005-10-08 | Direct-memory access between input/output device and physical memory within virtual machine environment |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101278263A true CN101278263A (zh) | 2008-10-01 |
Family
ID=37560747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800365466A Pending CN101278263A (zh) | 2005-10-08 | 2006-10-04 | 虚拟机环境中的输入/输出设备与物理存储器之间的直接存储器访问 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8001543B2 (zh) |
EP (1) | EP1941362A1 (zh) |
CN (1) | CN101278263A (zh) |
TW (1) | TW200802095A (zh) |
WO (1) | WO2007042439A1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010060300A1 (zh) * | 2008-11-25 | 2010-06-03 | 华为技术有限公司 | 一种设备驱动域的实现方法、系统及装置 |
CN102207896A (zh) * | 2010-03-31 | 2011-10-05 | 微软公司 | 虚拟机崩溃文件生成技术 |
CN102323943A (zh) * | 2011-09-02 | 2012-01-18 | 北京天地云箱科技有限公司 | 基于虚拟机的数据存储方法及系统 |
CN103116556A (zh) * | 2013-03-11 | 2013-05-22 | 无锡江南计算技术研究所 | 内存静态划分虚拟化方法 |
WO2013143121A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | Accessing a device on a remote machine |
CN104321781A (zh) * | 2012-06-29 | 2015-01-28 | 英特尔公司 | 用于安全地处理与物理功能驱动器的虚拟功能驱动器通信的方法、系统和装置 |
CN105074663A (zh) * | 2013-03-12 | 2015-11-18 | 高通股份有限公司 | 按需选择性地启用虚拟机监测器的操作的方法和装置 |
CN105765535A (zh) * | 2013-11-27 | 2016-07-13 | 思科技术公司 | 对cpu进行独占受控访问的硬件虚拟化模块 |
CN108470008A (zh) * | 2018-01-23 | 2018-08-31 | 广州市中海达测绘仪器有限公司 | 串口数据读写方法、装置、计算机设备和存储介质 |
CN108885665A (zh) * | 2016-04-04 | 2018-11-23 | 比特梵德知识产权管理有限公司 | 用于解密虚拟化环境中的网络流量的系统和方法 |
CN109426545A (zh) * | 2017-08-31 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 一种数据通信方法及装置 |
CN111857943A (zh) * | 2019-04-30 | 2020-10-30 | 华为技术有限公司 | 数据处理的方法、装置与设备 |
CN115827168A (zh) * | 2023-02-01 | 2023-03-21 | 南京芯传汇电子科技有限公司 | 一种二进制仿真环境下虚拟机通信的优化方法 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8104034B2 (en) * | 2005-11-30 | 2012-01-24 | Red Hat, Inc. | Purpose domain for in-kernel virtual machine for low overhead startup and low resource usage |
US8612970B2 (en) * | 2005-11-30 | 2013-12-17 | Red Hat, Inc. | Purpose domain for low overhead virtual machines |
US8429629B2 (en) * | 2005-11-30 | 2013-04-23 | Red Hat, Inc. | In-kernel virtual machine for low overhead startup and low resource usage |
US7444503B2 (en) * | 2006-01-11 | 2008-10-28 | Sun Microsystems, Inc | Method and apparatus for delivering device drivers |
JP2007220086A (ja) * | 2006-01-17 | 2007-08-30 | Ntt Docomo Inc | 入出力制御装置、入出力制御システム及び入出力制御方法 |
US9317309B2 (en) * | 2006-12-28 | 2016-04-19 | Hewlett-Packard Development Company, L.P. | Virtualized environment allocation system and method |
US8689288B2 (en) * | 2007-04-16 | 2014-04-01 | Samsung Electronics Co., Ltd. | Apparatus and method for protecting system in virtualized environment |
US8910152B1 (en) * | 2007-11-30 | 2014-12-09 | Hewlett-Packard Development Company, L.P. | Migrating a virtual machine by using a hot-plug event |
US8151032B2 (en) * | 2008-06-26 | 2012-04-03 | Microsoft Corporation | Direct memory access filter for virtualized operating systems |
US8230155B2 (en) | 2008-06-26 | 2012-07-24 | Microsoft Corporation | Direct memory access filter for virtualized operating systems |
KR101506683B1 (ko) * | 2008-08-06 | 2015-03-30 | 삼성전자 주식회사 | 다수개의 운영 시스템을 지원하는 장치 및 방법 |
US20100169673A1 (en) * | 2008-12-31 | 2010-07-01 | Ramakrishna Saripalli | Efficient remapping engine utilization |
US8291415B2 (en) * | 2008-12-31 | 2012-10-16 | Intel Corporation | Paging instruction for a virtualization engine to local storage |
US20120011520A1 (en) * | 2010-07-12 | 2012-01-12 | International Business Machines Corporation | Management of device identifiers across virtualized environments |
US9021465B2 (en) * | 2010-12-15 | 2015-04-28 | Red Hat Israel, Ltd. | Downloading guest software updates by a hypervisor |
WO2012079153A1 (en) * | 2010-12-15 | 2012-06-21 | Userful Corporation | Multiple user computing method and system for same |
JP5573649B2 (ja) * | 2010-12-17 | 2014-08-20 | 富士通株式会社 | 情報処理装置 |
US8892788B2 (en) * | 2011-02-22 | 2014-11-18 | Red Hat Israel, Ltd. | Exposing a DMA engine to guests in a virtual machine system |
US9792136B2 (en) | 2011-04-28 | 2017-10-17 | Microsoft Technology Licensing, Llc | Hardware assisted inter hypervisor partition data transfers |
US8843669B2 (en) * | 2011-09-09 | 2014-09-23 | Microsoft Corporation | Guest partition high CPU usage mitigation when performing data transfers in a guest partition |
JP5748349B2 (ja) * | 2012-03-16 | 2015-07-15 | 株式会社日立製作所 | 仮想計算機の制御方法及び仮想計算機システム |
US9355052B2 (en) | 2013-08-23 | 2016-05-31 | International Business Machines Corporation | Dynamically resizing direct memory access (DMA) windows |
WO2016003415A1 (en) * | 2014-06-30 | 2016-01-07 | Hewlett-Packard Development Company, L.P. | Securely sending a complete initialization package |
TWI497417B (zh) * | 2014-07-22 | 2015-08-21 | Nat Univ Tsing Hua | 虛擬機器之資料存取方法、資料存取系統與主控端模組 |
US10956189B2 (en) * | 2015-02-13 | 2021-03-23 | Red Hat Israel, Ltd. | Methods for managing virtualized remote direct memory access devices |
US9720846B2 (en) | 2015-05-28 | 2017-08-01 | Red Hat Israel, Ltd. | Memory swap for direct memory access by a device assigned to a guest operating system |
US9772962B2 (en) | 2015-05-28 | 2017-09-26 | Red Hat Israel, Ltd. | Memory sharing for direct memory access by a device assigned to a guest operating system |
TWI619013B (zh) * | 2016-08-24 | 2018-03-21 | 康齊科技股份有限公司 | 記憶體管理系統及其方法 |
US10241947B2 (en) | 2017-02-03 | 2019-03-26 | Intel Corporation | Hardware-based virtual machine communication |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5088033A (en) * | 1986-04-28 | 1992-02-11 | Xerox Corporation | Data processing system emulation in a window with a coprocessor and I/O emulation |
DE69132300T2 (de) * | 1990-03-12 | 2000-11-30 | Hewlett Packard Co | Durch Anwender festgelegter direkter Speicherzugriff mit Anwendung von virtuellen Adressen |
JPH07146679A (ja) * | 1992-11-13 | 1995-06-06 | Internatl Business Mach Corp <Ibm> | 音声データを変換する方法及びシステム |
US6075938A (en) * | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
US6397242B1 (en) * | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
US6820255B2 (en) * | 1999-02-17 | 2004-11-16 | Elbrus International | Method for fast execution of translated binary code utilizing database cache for low-level code correspondence |
US6629162B1 (en) * | 2000-06-08 | 2003-09-30 | International Business Machines Corporation | System, method, and product in a logically partitioned system for prohibiting I/O adapters from accessing memory assigned to other partitions during DMA |
US7028149B2 (en) * | 2002-03-29 | 2006-04-11 | Intel Corporation | System and method for resetting a platform configuration register |
US6725289B1 (en) * | 2002-04-17 | 2004-04-20 | Vmware, Inc. | Transparent address remapping for high-speed I/O |
US7111145B1 (en) * | 2003-03-25 | 2006-09-19 | Vmware, Inc. | TLB miss fault handler and method for accessing multiple page tables |
US9020801B2 (en) * | 2003-08-11 | 2015-04-28 | Scalemp Inc. | Cluster-based operating system-agnostic virtual computing system |
US20050076186A1 (en) * | 2003-10-03 | 2005-04-07 | Microsoft Corporation | Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements |
WO2005036405A1 (en) * | 2003-10-08 | 2005-04-21 | Unisys Corporation | Computer system para-virtualization using a hypervisor that is implemented in a partition of the host system |
US7552426B2 (en) * | 2003-10-14 | 2009-06-23 | Microsoft Corporation | Systems and methods for using synthetic instructions in a virtual machine |
US7467381B2 (en) * | 2003-12-16 | 2008-12-16 | Intel Corporation | Resource partitioning and direct access utilizing hardware support for virtualization |
US7478173B1 (en) * | 2003-12-18 | 2009-01-13 | Wmware, Inc. | Method and system for sharing a network connection in a virtual computer system |
US7752635B2 (en) * | 2003-12-18 | 2010-07-06 | Intel Corporation | System and method for configuring a virtual network interface card |
US7421533B2 (en) * | 2004-04-19 | 2008-09-02 | Intel Corporation | Method to manage memory in a platform with virtual machines |
US7334107B2 (en) * | 2004-09-30 | 2008-02-19 | Intel Corporation | Caching support for direct memory access address translation |
-
2005
- 2005-10-08 US US11/246,733 patent/US8001543B2/en not_active Expired - Fee Related
-
2006
- 2006-10-03 TW TW095136666A patent/TW200802095A/zh unknown
- 2006-10-04 CN CNA2006800365466A patent/CN101278263A/zh active Pending
- 2006-10-04 EP EP06806973A patent/EP1941362A1/en not_active Ceased
- 2006-10-04 WO PCT/EP2006/067038 patent/WO2007042439A1/en active Application Filing
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010060300A1 (zh) * | 2008-11-25 | 2010-06-03 | 华为技术有限公司 | 一种设备驱动域的实现方法、系统及装置 |
CN102207896B (zh) * | 2010-03-31 | 2015-05-20 | 微软公司 | 虚拟机崩溃文件生成技术 |
CN102207896A (zh) * | 2010-03-31 | 2011-10-05 | 微软公司 | 虚拟机崩溃文件生成技术 |
CN102323943A (zh) * | 2011-09-02 | 2012-01-18 | 北京天地云箱科技有限公司 | 基于虚拟机的数据存储方法及系统 |
WO2013143121A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | Accessing a device on a remote machine |
CN104321781B (zh) * | 2012-06-29 | 2017-04-19 | 英特尔公司 | 用于安全地处理与物理功能驱动器的虚拟功能驱动器通信的方法、系统和装置 |
CN104321781A (zh) * | 2012-06-29 | 2015-01-28 | 英特尔公司 | 用于安全地处理与物理功能驱动器的虚拟功能驱动器通信的方法、系统和装置 |
CN103116556B (zh) * | 2013-03-11 | 2015-05-06 | 无锡江南计算技术研究所 | 内存静态划分虚拟化方法 |
CN103116556A (zh) * | 2013-03-11 | 2013-05-22 | 无锡江南计算技术研究所 | 内存静态划分虚拟化方法 |
US10310882B2 (en) | 2013-03-12 | 2019-06-04 | Qualcomm Incorporated | Algorithm and apparatus to deploy virtual machine monitor on demand |
CN105074663A (zh) * | 2013-03-12 | 2015-11-18 | 高通股份有限公司 | 按需选择性地启用虚拟机监测器的操作的方法和装置 |
CN105074663B (zh) * | 2013-03-12 | 2018-08-28 | 高通股份有限公司 | 按需选择性地启用虚拟机监测器的操作的方法和装置 |
CN105765535A (zh) * | 2013-11-27 | 2016-07-13 | 思科技术公司 | 对cpu进行独占受控访问的硬件虚拟化模块 |
CN105765535B (zh) * | 2013-11-27 | 2019-06-07 | 思科技术公司 | 对cpu进行独占受控访问的硬件虚拟化模块 |
CN108885665A (zh) * | 2016-04-04 | 2018-11-23 | 比特梵德知识产权管理有限公司 | 用于解密虚拟化环境中的网络流量的系统和方法 |
CN109426545A (zh) * | 2017-08-31 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 一种数据通信方法及装置 |
CN108470008A (zh) * | 2018-01-23 | 2018-08-31 | 广州市中海达测绘仪器有限公司 | 串口数据读写方法、装置、计算机设备和存储介质 |
CN108470008B (zh) * | 2018-01-23 | 2020-08-14 | 广州市中海达测绘仪器有限公司 | 串口数据读写方法、装置、计算机设备和存储介质 |
CN111857943A (zh) * | 2019-04-30 | 2020-10-30 | 华为技术有限公司 | 数据处理的方法、装置与设备 |
CN115827168A (zh) * | 2023-02-01 | 2023-03-21 | 南京芯传汇电子科技有限公司 | 一种二进制仿真环境下虚拟机通信的优化方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1941362A1 (en) | 2008-07-09 |
WO2007042439A1 (en) | 2007-04-19 |
US20070083862A1 (en) | 2007-04-12 |
TW200802095A (en) | 2008-01-01 |
US8001543B2 (en) | 2011-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101278263A (zh) | 虚拟机环境中的输入/输出设备与物理存储器之间的直接存储器访问 | |
US9170835B2 (en) | Apparatus and method for expedited virtual machine (VM) launch in VM cluster environment | |
CN106547618B (zh) | 通信系统和电子设备 | |
US7421533B2 (en) | Method to manage memory in a platform with virtual machines | |
CN102077188B (zh) | 用于虚拟化操作系统的直接存储器访问过滤器 | |
US7257811B2 (en) | System, method and program to migrate a virtual machine | |
EP1722301B1 (en) | Partition bus | |
US8996864B2 (en) | System for enabling multiple execution environments to share a device | |
US5764984A (en) | System for multiple co-existing operating system personalities on a microkernel | |
US20190155637A1 (en) | Resource Access Method Applied to Computer and Computer | |
US20120054740A1 (en) | Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments | |
CN102567052A (zh) | 启用配置有图形处理器的服务器的远程管理的技术 | |
JP2013516021A (ja) | プロセッサコアのハイパーバイザ離隔 | |
CN101655798A (zh) | 一种计算机和虚拟机环境中应用程序部署和运行的方法 | |
CN102402462A (zh) | 用于对启用gpu的虚拟机进行负载平衡的技术 | |
JP2011145912A (ja) | 仮想計算機を使用したクライアントシステム、仮想計算機を使用したクライアント制御方法及びそのプログラム | |
KR20070100367A (ko) | 하나의 가상 머신에서 다른 가상 머신으로 메모리를동적으로 재할당하기 위한 방법, 장치 및 시스템 | |
US20090031303A1 (en) | Method for securing the execution of virtual machines | |
TWI734379B (zh) | 用於使用初始程式載入機制啟動安全客體之電腦實施方法、電腦系統及電腦程式產品 | |
US6216216B1 (en) | Method and apparatus for providing processor partitioning on a multiprocessor machine | |
US10713081B2 (en) | Secure and efficient memory sharing for guests | |
EP3850479B1 (en) | Virtual machine update while keeping devices attached to the virtual machine | |
US20220335109A1 (en) | On-demand paging support for confidential computing | |
Neumann et al. | Intel Virtualization Technology in Embedded and Communications Infrastructure Applications. | |
US20230376411A1 (en) | Memory access control in a virtualization environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20081001 |