CN101819564A - 协助在虚拟机之间进行通信的方法和装置 - Google Patents
协助在虚拟机之间进行通信的方法和装置 Download PDFInfo
- Publication number
- CN101819564A CN101819564A CN200910118521A CN200910118521A CN101819564A CN 101819564 A CN101819564 A CN 101819564A CN 200910118521 A CN200910118521 A CN 200910118521A CN 200910118521 A CN200910118521 A CN 200910118521A CN 101819564 A CN101819564 A CN 101819564A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- address
- shared drive
- memory
- host
- 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
Links
Images
Classifications
-
- 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
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供协助在虚拟机之间进行通信的方法和装置。具体地,提供了一种协助在两个虚拟机之间进行通信的方法,其中两个虚拟机位于同一物理主机上,所述方法包括:从物理主机的内存中分配一段共享内存;响应于两个虚拟机对内存空间的请求,将请求的内存空间映射到共享内存;返回请求的内存空间地址。还提供了在一个虚拟机中与另一虚拟机进行通信的方法,包括:响应于共享内存已分配的通知,请求一段内存空间;获得请求的内存空间地址,其中该内存空间已映射到共享内存;根据上述地址,在共享内存中存取通信数据。本发明还提供与此对应的装置。本发明的方法和装置利用动态分配的共享内存来实现虚拟机之间的通信,使得通信效率得到显著提高。
Description
技术领域
本发明涉及协助在虚拟机之间进行通信的方法和装置,更具体地,涉及协助在位于同一物理主机上的多个虚拟机之间进行通信的方法和装置。
背景技术
虚拟化和多核技术已经成为当前信息技术发展的趋势,正日益广泛地应用于信息技术的各个领域中。其中,虚拟化技术能够将虚拟机与其所依托或驻留的硬件平台的细节隔离开来,因此,利用虚拟技术能够实现虚拟机的转移、隔离和整合。在此基础上,虚拟化技术能够有效使用系统资源,降低计算基础架构的总体成本。更具体地,虚拟化技术能够将硬件平台和软件管理的总成本缩减40%,将运营成本缩减70%,同时增加系统的可用性,提高其可扩展性,并保证关键应用程序的资源,增强系统的可靠性和灵活性。
另一方面,多核技术的发展使得处理器由最初的单核扩展成为双核、四核、八核,直至最近推出的几十核的芯片甚至上百核的芯片。此外,还提出了异构多核处理系统。异构多核的方案是将多核架构从通用的对等设计迁移到“主核心+协处理器”的非对等设计,特别地为多媒体处理、识别和网络应用提供优异的处理性能。随着多核技术的发展,处理器的性能得到大幅度提升。
为了更好地利用处理器的资源和性能,并实现资源的整合,一个处理能力强大的物理机上往往可以托管多个虚拟机。图1示出同一物理机上的多个虚拟机的示意图。如图所示,在一个物理机上托管了四个虚拟机。这四个虚拟机如同四个实际的计算机一样,具有各自的操作系统,安装有各自的应用,执行各自的运算。通过介于虚拟机操作系统和硬件平台之间的虚拟层,多个虚拟机共享物理机的实际硬件资源,如CPU,内存,网卡等。与实际计算机一样,为了执行目标任务,多个虚拟机之间不可避免地要进行通信和数据传输。下面以一个流行的开放源代码的虚拟化产品Xen为例(参见http://www.xen.org/),说明现有技术中在虚拟机之间进行通信的过程。
图2示出Xen网络虚拟系统的结构示意图。如图2所示,除了包含有多个虚拟机1-n,Xen网络系统还包含两个关键部件:管理程序(hypervisor)和驱动域(driver domain)。Xen管理程序位于所有虚拟机客户操作系统之下,硬件之上。它将底层硬件进行抽象,同时负责各虚拟机的CPU调度和内存的分配,它还控制着各虚拟机所共用的进程运行环境,使得每个虚拟机如同原始地直接在硬件上运行一样。为了实现对外的连接和通信,多个虚拟机必须共享使用硬件平台中的I/O设备。这些共享的I/O设备在Xen中由专门的I/O域控制,称为驱动域。具体地,驱动域基于改进版本的Linux实现,其使用固有Linux设备驱动器来管理物理I/O设备。虚拟机需要通过驱动域与物理I/O进行通信。
为了与驱动域,并进而与物理I/O设备进行通信,每个虚拟机具有一个虚拟的I/O设备。该虚拟I/O设备由一个专门的设备驱动器控制,称为前端驱动器。与前端驱动器相对应,在驱动域中包含多个后端驱动器,可分别与各个前端驱动器通信。所述后端驱动器通过驱动域中的以太桥(Ethernet Bridge)连接到物理网络接口卡NIC。下面具体描述在Xen系统中,虚拟机传送以及接收数据包的步骤。
在虚拟机要传送数据包时,它首先将数据从前端驱动器复制到驱动域中的后端驱动器。在驱动域中,数据通过以太桥被路由到物理NIC的设备驱动器。之后,物理NIC的设备驱动器将数据进行打包、排队,用以在网络接口进行传输,如同该数据是由操作系统在驱动域内正常产生的一样。
在虚拟机接收数据包时,物理NIC首先产生一个中断,该中断被管理程序中的中断分发单元捕获,并作为虚拟中断被该单元路由到驱动域中的NIC设备驱动器。接着,NIC设备驱动器将数据传输到以太桥,通过以太桥路由到适当的后端驱动器。之后,后端驱动器将数据复制到目标虚拟机的前端驱动器。一旦数据被传送到目标虚拟机,后端驱动器请求管理程序向目标虚拟机发送一个附加的虚拟中断,通知其新传输的数据。一旦接收到上述虚拟中断,目标虚拟机的前端驱动器就将数据递送到虚拟机的网络栈中,如同该数据直接来自物理设备一样。
此外,另一种较为流行的虚拟化产品VMWare(参见http://www.vmware.com/)也提供了相似的虚拟机通信方式,采用了类似的方法来进行数据的传送和接收。此外,VMWare在虚拟机和物理适配器之间引入了虚拟以太转换以帮助联网。
通过上述的数据传送和接收方法,虚拟机就可以实现与其他虚拟机的通信。在上述的方案中,对于通信的目标虚拟机所驻留的物理主机是不加区分的。也就是说,任何两个虚拟机之间的通信都要自上而下地由虚拟机的前端驱动器,经由后端驱动器到达实际的物理NIC,再自下而上地借助于管理程序和驱动域从物理NIC到达虚拟机中。在这样的过程中,数据至少要在虚拟机和物理机之间复制两次,并在传送时进行打包,在接收过程进行解包。由于存在一些不必要的操作,很明显,这样的方案效率不高,尤其对于位于同一物理主机上的虚拟机而言。可以想见,对于同一物理主机上的虚拟机,虚拟机之间的通信实质上仅涉及物理主机内部的数据传输,并不需要经由NIC,因此,现有技术的通信方法有待进行改进。
发明内容
考虑到现有的虚拟机通信方案中的不足,希望能够改进虚拟机之间进行通信的方法,尤其是针对同一物理主机上的虚拟机之间的通信,由此避免不必要的操作,更好地利用物理机的资源,从而提高通信的效率。基于这样的考虑,本发明提供协助在虚拟机之间进行通信的方法和装置。
根据本发明第一方面,提供一种协助在第一虚拟机和第二虚拟机之间进行通信的方法,其中所述第一虚拟机和第二虚拟机位于同一物理主机上,所述方法包括:从所述同一物理主机的内存中分配一段共享内存,并通知所述第一虚拟机和第二虚拟机;响应于第一虚拟机和第二虚拟机对内存空间的请求,将所述第一虚拟机和第二虚拟机请求的内存空间地址分别映射到所述共享内存地址;向所述第一虚拟机和第二虚拟机返回请求的内存空间地址。
根据本发明第二方面,提供在第一虚拟机中与第二虚拟机进行通信的方法,其中所述第一虚拟机与所述第二虚拟机位于同一物理主机上,所述方法包括:响应于共享内存已分配的通知,请求一段内存空间;获得请求的内存空间地址,其中所述请求的内存空间地址已经映射到分配的共享内存地址;以及根据获得的内存空间地址,在所述共享内存中存取通信数据。
根据本发明第三方面,提供一种通信管理装置,用于协助第一虚拟机和第二虚拟机之间的通信,其中所述第一虚拟机和第二虚拟机位于同一物理主机上,所述装置包括:内存分配单元,配置为从所述同一物理主机的内存中分配一段共享内存,并通知所述第一虚拟机和第二虚拟机;内存映射单元,配置为响应于第一虚拟机和第二虚拟机对内存空间的请求,将所述第一虚拟机和第二虚拟机请求的内存空间地址分别映射到所述共享内存地址,并向所述第一虚拟机和第二虚拟机返回请求的内存空间地址。
根据本发明第四方面,提供一种虚拟机,用于与位于同一物理主机上的另一虚拟机进行通信,所述虚拟机包括网络连接单元,配置为响应于共享内存已分配的通知,请求一段地址空间;获得请求的内存空间地址,其中所述请求的内存空间地址已经映射到分配的共享内存地址;并根据获得的内存空间地址,在所述共享内存中存取通信数据。
利用本发明的方法和装置,位于同一物理主机上的虚拟机可以利用该主机中的内存空间进行数据交换和传输,从而实现虚拟机之间的高速通信。
附图说明
图1示出同一物理机上的多个虚拟机的示意图;
图2示出Xen网络虚拟系统的结构示意图;
图3示出根据本发明一个实施例的虚拟机通信系统;
图4示出根据本发明一个实施例的协助两个虚拟机之间的通信的方法的流程图;
图5示出根据本发明一个实施例的与另一虚拟机进行通信的方法的流程图;
图6示出将虚拟机请求的内存空间映射到共享内存的步骤示意图;以及
图7示出根据本发明一个实施例的通信管理装置的结构框图。
具体实施方式
对于位于同一物理主机上的虚拟机,本发明提供协助虚拟机之间通信的方法和装置。下面结合附图说明本发明的具体实施方式。
图3示出根据本发明一个实施例的虚拟机通信系统。在图3中,要进行通信的两个虚拟机,即第一虚拟机100和第二虚拟机200位于同一物理主机上。在每一个虚拟机中都安装有客户操作系统OS,在客户操作系统上层安装有各种应用。为了实现高效通信,在每个虚拟机中提供了网络连接单元和信号传递单元,其中网络连接单元由应用程序所需要调用的与网络操作相关的库函数实现,其作用和具体实现方式将在后面进行详细描述。在虚拟机与物理主机的硬件层之间,提供有管理程序层300。管理程序层300可直接与各个虚拟机通信,对其进行部署和管理。管理程序层300中包含通信管理单元310,用于在第一虚拟机100和第二虚拟机200之间进行通信。下面分别描述上述虚拟机和通信管理单元为实现高效通信而执行的方法。
图4示出根据本发明一个实施例的协助两个虚拟机之间通信的方法的流程图。该方法中的各个步骤由图3中的通信管理单元310执行,用以协助在第一虚拟机和第二虚拟机之间进行通信,其中第一虚拟机和第二虚拟机位于同一物理主机中。如图4所示,首先在步骤402,从上述物理主机的内存中分配一段共享内存,并通知所述第一虚拟机和第二虚拟机;在步骤404,响应于第一虚拟机和第二虚拟机对内存空间的请求,将所述第一虚拟机和第二虚拟机请求的内存空间地址分别映射到所述共享内存地址;在步骤406,向所述第一虚拟机和第二虚拟机返回请求的内存空间地址。
在一种实施方式中,通信管理单元310在执行上述步骤402之前,首先判断第一虚拟机和第二虚拟机是否位于同一物理主机上。如果不是,则仍然按照传统方式进行通信;如果是,则继续执行图4所示的步骤402-406。在执行步骤406之后,第一虚拟机和第二虚拟机就可以借助于共享内存进行数据传输。
在一种实施方式中,在步骤406之后,第一虚拟机和第二虚拟机开始传输数据。在这样的数据传输阶段,通信管理单元310可以将第一虚拟机在共享内存中复制数据的具体地址通知给第二虚拟机,使得第二虚拟机根据该地址从共享内存中读取数据。具体地,在一个实施例中,在共享内存中复制数据的具体地址由共享内存的开始地址和相对开始地址的偏移量构成。在这种情况下,通信管理单元310可以获得第一虚拟机复制数据的偏移量,将该偏移量通知第二虚拟机,使得第二虚拟机能够根据该偏移量寻址到对应的内存地址。
在一种实施方式中,通信管理单元310还在第一虚拟机和第二虚拟机结束通信时释放所述共享内存。
与图4相应,图5示出根据本发明一个实施例的与另一虚拟机进行通信的方法的流程图。该方法中的各个步骤由图3中的第一虚拟机100或第二虚拟机200执行,其中第一虚拟机100和第二虚拟机200位于同一物理主机中。如图5所示,首先在步骤502,响应于共享内存已分配的通知,请求一段地址空间;在步骤504,获得请求的内存空间地址,其中所述请求的内存空间地址已经映射到分配的共享内存地址;接着在步骤506,根据获得的内存空间地址,在所述共享内存中存取通信数据。
在一种实施方式中,虚拟机100或200还在步骤502之前首先与另一虚拟机建立连接。
通过执行上述步骤,虚拟机100或200与通信管理单元310直接通信,获得其分配的共享内存的信息,从而利用同一物理主机上的共享内存实现虚拟机之间的数据传输。为了执行上述步骤502-506,在虚拟机100和200中分别设置网络连接单元110和210。在一个实施方式中,网络连接单元110和210可以由一个函数库来实现,其中包含多个与连接相关的函数,这样的库可被虚拟机中安装的各种应用所调用。也就是说,可以通过对现有函数库的修改和添加来实现网络连接单元,使其能够执行图5所示的步骤,而无需修改现有的应用程序。然而,由于由此实现的网络连接单元位于虚拟机中的应用层,不能直接与通信管理单元310进行通信,因此,有必要在各个虚拟机的操作系统层设置信号传递单元120和220,用于在网络连接单元和通信管理单元310之间传递与通信相关的信号。于是,网络连接单元110和120通过对应的信号传递单元120和220与通信管理单元310进行交互,执行图5所示的步骤,进而实现虚拟机100和200之间的通信。
下面结合具体的例子说明通信管理单元和虚拟机各自执行的步骤。
在一个具体例子中,第一虚拟机中安装的第一应用需要与第二虚拟机中的第二应用进行通信,交换数据。并且,在这个例子中,第一虚拟机与第二虚拟机之间的通信采用面向连接的通信方式,例如利用TCP协议。在这种通信方式中,通信过程可以分为三个阶段:建立连接阶段,数据传输阶段和断开连接阶段。
建立连接阶段是面向连接的通信方式特有的阶段。在这个阶段,发起通信的第一应用首先需要通知第二应用即将向其传输数据,在得到第二应用的回应之后才开始正式向其传送有效数据包,以确保数据传输的可靠性和顺序性。在这个过程中,第一应用通过调用和加载系统中现有的库来与第二应用进行连接。然而,如上所述,通过对现有的连接库的更改,上述调用实际上直接调用了网络连接单元110。也就是,在应用本身不发生任何改变的情况下,第一应用透明地利用网络连接单元110与第二应用建立连接。同时,网络连接单元110通过对应的信号传递单元120与通信管理单元310通信,通知其第一虚拟机与第二虚拟机的连接。由于第一应用向第二应用发出的传输数据的通知至少包括第二应用所在的第二虚拟机的标识信息,例如其IP地址,因此,通过与网络连接单元110的通信,通信管理单元310此时可以获得通信的目标虚拟机的地址信息。通过这样的地址信息,通信管理单元310可以判断出作为目标虚拟机的第二虚拟机与第一虚拟机是否位于同一物理主机上。如果两者不在同一物理主机上,通信管理单元310通知第一虚拟机以传统的方式进行通信。如果通过判断目标虚拟机的地址发现,两个虚拟机位于同一物理主机上,那么通信管理单元310通过提供一段共享内存来协助第一虚拟机和第二虚拟机的通信。
具体地,在面向连接的通信方式下,通信管理单元310响应于第一虚拟机中的第一应用向第二虚拟机中的第二应用发出的传输请求,在两个虚拟机所在的物理主机的内存空间中分配一段新的共享内存。共享内存的大小根据物理主机的可用内存资源、虚拟机之间的通信类型等因素来决定。在分配了共享内存之后,通信管理单元310分别通过信号传递单元120和220向网络连接单元110和120发送一个通知,通知其共享内存已经准备好,以及该共享内存的具体大小。
网络连接单元110和120在获知共享内存已经分配之后,就通过信号传递单元120和220向通信管理单元310请求通信所使用的内存空间。响应于这样的请求,通信管理单元310将所请求的内存空间地址映射到分配的共享内存地址,并将请求的内存空间地址返回给网络连接单元110和120。由此,网络连接单元110和120获得了请求的内存空间地址,然而该内存空间地址实际上已经被通信管理单元310映射到了共享内存地址。这时,为通信所做的内存准备已经完成,通信进入数据传输阶段。
在数据传输阶段,发起通信的第一应用利用第一虚拟机100中的网络连接单元110向第二虚拟机中的第二应用传输数据。具体地,网络连接单元110根据获得的内存空间地址,将待传输的数据复制到该内存空间中。然而,由于上述内存空间地址已经被映射到通信管理单元310分配的共享内存地址,因此,网络连接单元110实际上将数据复制到了该共享内存中。写入数据之后,网络连接单元110向信号传递单元120发出通知。信号传递单元120接着通知通信管理单元310,通信管理单元310继而通过信号传递单元220通知网络连接单元210数据的写入。于是网络连接单元210通知第二应用接收到新的数据,并根据之前从通信管理单元310返回的地址从共享内存中读取接收到的数据。于是,第一虚拟机中的第一应用和第二虚拟机中的第二应用利用同一物理主机中的共享内存实现了互相通信,交换数据。
在一种实施方式中,第一虚拟机中的网络连接单元110每次将数据复制到共享内存中,就将数据写入的具体地址,也就是相对于共享内存开始地址的偏移量通知通信管理单元310,使得第二应用能够根据该具体地址从共享内存中读取数据。在另一种实施方式中,网络连接单元在共享内存中写入数据的同时,对新写入的数据进行标记。该标记可以表明数据是否已经被读取,该数据所使用的内存是否可以被覆盖。例如,在一个具体例子中,为共享内存的每一存储单元设置一个计数器。计数器的状态可以是例如0或1,其中0表示对应的存储单元目前可用于数据写入,1表示对应的存储单元中有新写入的数据有待读取。对存储单元的一次存取操作可以触发相应计数器状态的一次改变。这样,通信的一方可以在共享内存中将数据写入状态为0的存储单元,于是,对应的计数器状态变为1。通信的另一方于是可以读取状态为1的存储单元中的数据,该读取操作又使得计数器状态复位为0。通过这样的方式,第一虚拟机和第二虚拟机在共享内存中存取数据,完成数据的传递和交换。
由于两个虚拟机共享地使用同一块内存空间,同时对该内存空间进行数据的写入和读取操作,因此存在虚拟机之间的隔离问题,也就是如何避免对内存操作的冲突问题。这个问题与操作系统中多个进程之间的隔离问题非常相似。在进程的情况下,可以通过利用例如Unix/Linux下的系统调用函数mmap(),两个进程共享一块内存空间。该内存空间同时映射给两个进程,能够由两个进程进行读取/写入。为了对这两个进程进行隔离,操作系统中存在多种机制来解决这个问题,例如mutex/lock以及分配/释放方法。实际上,在图3所示的虚拟通信系统中,管理程序层类似于一个操作系统,上层的多个虚拟机类似于操作系统中的多个进程。因此,上述用于隔离多个进程的方法也可以由管理程序层中的通信管理单元310用来隔离多个虚拟机。可以理解,本领域技术人员能够根据通信的特点采用现有技术中适当的隔离方法来隔离共享一块内存的多个虚拟机。
通过上述的数据传输阶段,第一虚拟机中的第一应用与第二虚拟机中的第二应用完成数据的交换和传输。于是,通信进入断开连接阶段。在这个阶段中,第一应用利用网络连接单元110断开与第二应用的连接。具体地,网络连接单元110通过信号传递单元120与通信管理单元310通信,通知其通信的结束。响应于这样的通知,通信管理单元310可以释放在建立连接阶段分配的共享内存,并通过第二虚拟机中的信号传递单元220通知网络连接单元210。
在以上描述的整个通信过程中,通信管理单元310在建立连接阶段为需要通信的两个虚拟机分配共享内存,并将虚拟机请求的空间地址映射到该共享内存地址,使得在数据传输阶段,虚拟机能够借助于共享内存完成数据的交换。因此,在上述实施方式中,共享内存的分配和映射是虚拟机高效通信的基础。下面对分配共享内存并映射其地址的过程进行进一步详细的描述。
首先描述虚拟机系统中内存的管理方式。在一个虚拟机系统中,一个硬件平台上可以安装多个虚拟机,例如图3中示出的第一虚拟机100和第二虚拟机200。所安装的虚拟机都由底层的管理程序进行部署和管理。由于第一虚拟机和第二虚拟机要共享地使用硬件平台的内存,因此通常管理程序为每个虚拟机分配其专用的内存区段。例如,假定整个硬件平台可用的内存大小为4G,那么管理程序可以将0-1G分配给第一虚拟机,1G-2G分配给第二虚拟机,剩下的2G空间以备其他使用。这时,每个虚拟机的客户操作系统仅仅能够看到并操作分配给它的1G大小的内存,而无法知道本虚拟机之外的内存分配情况。与常规计算机一样,在虚拟机的客户操作系统层之上,还安装有各种应用。而这些最上层的应用使用的是虚拟地址,即虚拟页码加上页内偏移。因此,在执行这些上层应用时,客户操作系统需要在其可操作的内存区段中分配一段物理地址,以与上述虚拟地址对应。可以理解,该物理地址仅仅是虚拟机能够看到的内存中的相对物理地址,又称为客户物理地址。为了管理这些地址,客户操作系统中包含一个内存管理单元,其中维持一个页表,该页表用于存储虚拟地址与客户物理地址的映射关系。由于客户物理地址并不是硬件平台中内存的实际物理地址,因此,客户操作系统并不能根据客户物理地址直接访问对应的内存。为此,在管理程序中提供了另一个内存管理单元,其中维持一个扩展页表。该扩展页表用于存储客户物理地址与内存的实际物理地址,又称为主机物理地址的映射关系。在上述例子中,如果第二虚拟机在其可操作的内存空间中为一段虚拟地址分配了0.1-0.2G大小的客户物理地址,那么,由于第二虚拟机可操作的内存对应于主机内存的1G-2G区段,因此,这段客户物理地址对应的主机物理地址就是1.1G-1.2G。
在上述管理方式的基础上,下面结合图6描述共享内存映射的具体步骤。图6示出将虚拟机100的内存空间地址映射到共享内存地址的步骤示意图。如图6所示,在步骤1,通信管理单元310从管理程序的内存管理单元(第一内存管理单元)中分配一段新的内存空间作为共享内存。在一种实施方式中,作为共享内存的内存空间是未被任何虚拟机占用的空闲空间。假设分配的共享内存的主机物理地址是Add0。在步骤2,通信管理单元310通过信号传递单元120向网络连接单元110发送“共享内存已经准备好”的通知,并通知其分配的共享内存的大小,即包含的页数。接着,在步骤3,响应于上述通知,网络连接单元110向客户操作系统中的内存管理单元(第二内存管理单元)请求一段同样大小的内存用于通信。假定所请求的这段内存的虚拟地址为Add1。在步骤4中,网络连接单元110将虚拟地址Add1通知给信号传递单元120。在步骤5中,信号传递单元120通过查阅第二内存管理单元维持的页表,获得与虚拟地址Add1对应的客户物理地址Add2。接着,在步骤6中,信号传递单元120将获得的客户物理地址Add2传送给通信管理单元310。在步骤7中,通信管理单元310通过查阅第一内存管理单元中维持的扩展页表,获得客户物理地址Add2对应的主机物理地址Add3。然后,步骤8中,通信管理单元310通知第一内存管理单元对扩展页表进行修改,用共享内存的主机物理地址Add0替换请求的内存空间的主机物理地址Add3,也就是,使得扩展页表中客户物理地址Add2对应于共享内存的物理地址Add0。之后,通信管理单元310将请求的内存空间的地址返回给虚拟机100。在一个实施例中,通信管理单元310将请求的内存空间的客户物理地址Add2返回给虚拟机。这样,网络连接单元110仍然根据获得的地址Add2来存取数据,然而经过扩展页表的地址转换,它实际上是向主机物理地址Add0存取数据,也就是说,实际上将数据存取入了共享内存中。图6中仅示出了通信管理单元310将第一虚拟机100请求的空间地址映射到共享内存地址的步骤。对于第二虚拟机,可以重复执行上述步骤2-8,使得第二虚拟机中的网络连接单元210同样将数据写入共享内存或从其读取数据。
由此可见,通信管理单元310通过更改扩展页表实现了虚拟机空间到共享内存的映射。然而,虚拟机的操作系统和上层应用对此并不知晓。在数据传输过程中,虚拟机中的应用如常规方式一样,利用虚拟地址将数据写入到对应的物理地址。它并不知道实际上数据并没有写入到分配给该虚拟机的专用内存之中,而是写入到了专用内存区段之外的共享内存空间中。
以上结合第一虚拟机和第二虚拟机之间面向连接的通信作为例子,描述了同一物理主机上的虚拟机之间的通信过程。在另一例子中,第一虚拟机和第二虚拟机之间也可以采用无连接的通信方式,例如采用UDP协议。在这种通信方式下,第一虚拟机中的第一应用直接向第二虚拟机中的第二应用发送数据包,而不经过通知和响应的步骤。针对这样的通信方式,通信管理单元310可以提供一段专用内存作为共享内存,用于所有无连接的通信。更具体地,通信管理单元310可以不需要响应于虚拟机之间的连接请求而进行共享内存的分配。并且,通信管理单元310通知所有可能进行无连接通信的虚拟机中的网络连接单元,共享内存已经提供,随时可以支持通信。在此基础上,当第一应用需要以无连接方式与第二应用进行通信时,它仍然以常规方式调用网络连接单元110。接下来,与面向连接的通信方式一样,网络连接单元110透过信号传递单元120与通信管理单元310通信,向其请求地址空间。在获得已经映射到共享内存的请求空间的地址后,网络连接单元110向共享内存中复制数据,从而与第二虚拟机完成数据交换,实现通信。
在无连接通信方式下,通信管理单元310还可以支持组播和广播的通信模式,也就是,一个虚拟机同时向多个虚拟机传输数据的情况。在这种情况下,通信管理单元310提供专用共享内存,并为各个需要通信的虚拟机进行地址映射。在此基础上,通信源方的虚拟机将数据复制到该共享内存中,其他虚拟机均从共享内存中读取数据。具体地,与两个虚拟机通信有所不同的是,为了实现一方写入多方读取的通信方式,可以为共享内存的每一存储单元设置一个多重计数器,其状态可以是从0到n,其中n为接收方虚拟机的个数。类似的,每个虚拟机对该单元中数据的一次读取操作使得计数器的状态值减1。这样,可以保证通信源方虚拟机写入的数据被每个接收方虚拟机读取一次。可以理解,现有技术中也存在多种组播和广播通信过程中数据状态标记方法。本领域技术人员能够根据需要采用适当的方法用于上述虚拟机之间的组播和广播通信。
从以上结合具体例子描述的具体通信过程可以看出,进行通信的多个虚拟机直接在同一物理主机中的内存中进行数据的存取,因此相对于传统的经由物理NIC的通信方式,通信的速度可以得到数量级的提高。此外,网络连接单元的实现方式使得无需对虚拟机现有的操作系统和应用做任何修改。由于虚拟机中应用所请求的内存空间被映射到共享内存,因此上述通信过程对于虚拟机的操作系统和应用来说完全是透明的。他们并不知道实际上将数据写入到了共享内存中。因此可以说,本发明实施例提供的方法为同一物理主机上的虚拟机提供透明而高效的通信方式。
基于同一发明构思,本发明还提供了实现上述方法的装置。图7示出根据本发明一个实施例的通信管理装置的结构框图。在图7中,通信管理装置总体由数字700标示,用于协助在第一虚拟机和第二虚拟机之间进行通信,其中所述第一虚拟机和第二虚拟机位于同一物理主机上。如图所示,通信管理装置700包括内存分配单元710,配置为从上述物理主机的内存中分配一段共享内存,并通知所述第一虚拟机和第二虚拟机;以及内存映射单元720,配置为响应于第一虚拟机和第二虚拟机对内存空间的请求,将第一虚拟机和第二虚拟机请求的内存空间地址分别映射到所述共享内存地址;并向所述第一虚拟机和第二虚拟机返回请求的内存空间地址。
在一种实施方式中,通信管理装置700还包括判断单元(未示出),配置为判断进行通信的第一虚拟机和第二虚拟机是否位于同一物理主机上。如果不是,则仍然按照传统方式进行通信。在另一种实施方式中,通信管理装置700中的内存分配单元710还被配置为在第一虚拟机和第二虚拟机结束通信时释放所述共享内存。
与通信管理装置700相对应,本发明还提供一种虚拟机。虚拟机的结构配置可以如图3中的第一虚拟机100或第二虚拟机200所示。虚拟机中设置有网络连接单元,配置用于执行下列步骤:响应于共享内存已分配的通知,请求一段内存空间;获得请求的内存空间地址,其中所述请求的内存空间地址已经映射到分配的共享内存;以及根据获得的内存空间地址,在所述共享内存中存取通信数据。虚拟机中还包括信号传递单元,配置用于在网络连接单元和通信管理装置之间执行直接通信。
通过以上对具体实施例的描述,本领域技术人员可以理解,上述的协助进行通信的方法和装置可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本实施例的装置及其单元可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合实现。
虽然以上结合具体实施例,对本发明的协助在虚拟机之间进行通信的方法和装置进行了详细描述,但本发明并不限于此。本领域普通技术人员能够在说明书教导之下对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围。应该理解,所有这样的变化、替换、修改仍然落入本发明的保护范围之内。本发明的保护范围由所附权利要求来限定。
Claims (17)
1.一种协助在第一虚拟机和第二虚拟机之间进行通信的方法,其中所述第一虚拟机和第二虚拟机位于同一物理主机上,所述方法包括:
从所述同一物理主机的内存中分配一段共享内存,并通知所述第一虚拟机和第二虚拟机;
响应于第一虚拟机和第二虚拟机对内存空间的请求,将所述第一虚拟机和第二虚拟机请求的内存空间地址分别映射到所述共享内存地址;
向所述第一虚拟机和第二虚拟机返回请求的内存空间地址。
2.如权利要求1所述的方法,其中所述共享内存为没有被任何虚拟机占用的空闲内存空间。
3.如权利要求1所述的方法,其中分配一段共享内存的步骤包括:响应于所述第一虚拟机与第二虚拟机建立连接而分配共享内存。
4.如权利要求1所述的方法,其中所述将第一虚拟机请求的内存空间地址映射到共享内存地址的步骤包括:
获得第一虚拟机请求的内存空间在该第一虚拟机中的第一客户物理地址;
通过查找扩展页表,将所述第一客户物理地址转换为其在所述物理主机中的第一主机物理地址;
在所述扩展页表中,用所述共享内存的主机物理地址替换所述第一主机物理地址,
并且,所述将第二虚拟机请求的内存空间地址映射到共享内存地址的步骤包括:
获得第二虚拟机请求的内存空间在该第二虚拟机中的第二客户物理地址;
通过查找扩展页表,将所述第二相对物理地址转换为其在所述物理主机中的第二主机物理地址;
在所述扩展页表中,用所述共享内存的主机物理地址替换所述第二主机物理地址。
5.如权利要求1-4中任一项所述的方法,还包括:
响应于从第一虚拟机接收到的将数据复制到所述共享内存的通知,通知第二虚拟机所述数据在所述共享内存中的地址。
6.如权利要求1-5中任一项所述的方法,还包括:
响应于第一虚拟机与第二虚拟机之间连接的断开,释放所述共享内存。
7.在第一虚拟机中与第二虚拟机进行通信的方法,其中所述第一虚拟机与所述第二虚拟机位于同一物理主机上,所述方法包括:
响应于共享内存已分配的通知,请求一段内存空间;
获得请求的内存空间地址,其中所述请求的内存空间地址已经映射到分配的共享内存地址;以及
根据获得的内存空间地址,在所述共享内存中存取通信数据。
8.如权利要求7的方法,还包括:
与所述第二虚拟机建立连接。
9.如权利要求7的方法,其中所述请求一段内存空间的步骤包括:
请求与所述共享内存同样大小的虚拟地址空间;
发送所述虚拟地址空间在该虚拟机中的客户物理地址。
10.一种通信管理装置,用于协助第一虚拟机和第二虚拟机之间的通信,其中所述第一虚拟机和第二虚拟机位于同一物理主机上,所述装置包括:
内存分配单元,配置为从所述同一物理主机的内存中分配一段共享内存,并通知所述第一虚拟机和第二虚拟机;
内存映射单元,配置为响应于第一虚拟机和第二虚拟机对内存空间的请求,将所述第一虚拟机和第二虚拟机请求的内存空间地址分别映射到所述共享内存地址,并向所述第一虚拟机和第二虚拟机返回请求的内存空间地址。
11.如权利要求10所述的装置,其中所述内存分配单元配置为分配一段没有被任何虚拟机占用的空闲内存空间作为共享内存。
12.如权利要求10所述的装置,其中所述内存分配单元配置为响应于所述第一虚拟机与第二虚拟机建立连接而分配共享内存。
13.如权利要求10所述的装置,其中所述内存映射单元进一步配置为:
获得第一虚拟机请求的内存空间在该第一虚拟机中的第一客户物理地址;通过查找扩展页表,将所述第一客户物理地址转换为其在所述物理主机中的第一主机物理地址;在所述扩展页表中,用所述共享内存的主机物理地址替换所述第一主机物理地址,以及
获得第二虚拟机请求的内存空间在该第二虚拟机中的第二客户物理地址;通过查找扩展页表,将所述第二相对物理地址转换为其在所述物理主机中的第二主机物理地址;在所述扩展页表中,用所述共享内存的主机物理地址替换所述第二主机物理地址。
14.如权利要求10-13中任一项所述的装置,其中所述内存分配单元还配置为:响应于第一虚拟机与第二虚拟机之间连接的断开,释放所述共享内存。
15.一种虚拟机,用于与位于同一物理主机上的另一虚拟机进行通信,所述虚拟机包括网络连接单元,配置为响应于共享内存已分配的通知,请求一段内存空间;获得请求的内存空间地址,其中所述请求的内存空间地址已经映射到分配的共享内存地址;并根据获得的内存空间地址,在所述共享内存中存取通信数据。
16.如权利要求15的虚拟机,其中所述网络连接单元还配置为:
与所述另一虚拟机建立连接。
17.如权利要求15的虚拟机,其中所述网络连接单元进一步配置为:
请求与所述共享内存同样大小的虚拟地址空间;
发送所述虚拟地址空间在该虚拟机中的客户物理地址。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101185216A CN101819564B (zh) | 2009-02-26 | 2009-02-26 | 协助在虚拟机之间进行通信的方法和装置 |
US12/711,775 US8447935B2 (en) | 2009-02-26 | 2010-02-24 | Method and apparatus for facilitating communication between virtual machines |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101185216A CN101819564B (zh) | 2009-02-26 | 2009-02-26 | 协助在虚拟机之间进行通信的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101819564A true CN101819564A (zh) | 2010-09-01 |
CN101819564B CN101819564B (zh) | 2013-04-17 |
Family
ID=42631893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101185216A Expired - Fee Related CN101819564B (zh) | 2009-02-26 | 2009-02-26 | 协助在虚拟机之间进行通信的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8447935B2 (zh) |
CN (1) | CN101819564B (zh) |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102664803A (zh) * | 2012-04-23 | 2012-09-12 | 杭州华三通信技术有限公司 | 一种ef队列的实现方法和设备 |
CN102694784A (zh) * | 2011-03-25 | 2012-09-26 | 北京网鼎芯睿科技有限公司 | 一种优化的服务器端ip数据发送方法和装置 |
CN102916882A (zh) * | 2012-08-30 | 2013-02-06 | 华为技术有限公司 | 一种报文接收方法与芯片组 |
CN103034544A (zh) * | 2012-12-04 | 2013-04-10 | 杭州迪普科技有限公司 | 一种用户态与内核态共享内存的管理方法和装置 |
WO2013075445A1 (zh) * | 2011-11-22 | 2013-05-30 | 中兴通讯股份有限公司 | 虚拟驱动的交互方法及装置 |
WO2013075443A1 (zh) * | 2011-11-24 | 2013-05-30 | 中兴通讯股份有限公司 | 一种内存区间相互隔离的程序之间的通讯方法及处理单元 |
CN103346981A (zh) * | 2013-06-28 | 2013-10-09 | 华为技术有限公司 | 虚拟交换方法、相关装置和计算机系统 |
CN103618809A (zh) * | 2013-11-12 | 2014-03-05 | 华为技术有限公司 | 一种虚拟化环境下通信的方法、装置和系统 |
CN103795621A (zh) * | 2013-12-12 | 2014-05-14 | 华为技术有限公司 | 一种虚拟机的数据交换方法、装置及物理主机 |
CN103823638A (zh) * | 2014-02-08 | 2014-05-28 | 华为技术有限公司 | 一种虚拟设备访问方法及装置 |
CN104092661A (zh) * | 2014-06-10 | 2014-10-08 | 深圳市深信服电子科技有限公司 | 虚拟机串口的通信方法及装置 |
CN104580124A (zh) * | 2013-10-29 | 2015-04-29 | 华为技术有限公司 | 协议栈选择方法、装置及设备 |
CN105635219A (zh) * | 2014-11-06 | 2016-06-01 | 上海贝尔股份有限公司 | 用于实施虚拟基站间通信的方法和基带处理单元 |
CN106201646A (zh) * | 2014-08-15 | 2016-12-07 | 英特尔公司 | 用于安全虚拟机间共享存储器通信的技术 |
WO2017008675A1 (zh) * | 2015-07-16 | 2017-01-19 | 阿里巴巴集团控股有限公司 | 一种用于虚拟化环境下传输数据的方法与设备 |
CN106598696A (zh) * | 2016-11-08 | 2017-04-26 | 北京华为数字技术有限公司 | 一种虚拟机之间数据交互的方法及装置 |
WO2017067391A1 (zh) * | 2015-10-22 | 2017-04-27 | 中兴通讯股份有限公司 | 虚拟机的数据共享方法及装置 |
CN106778274A (zh) * | 2016-12-29 | 2017-05-31 | 北京瑞星信息技术股份有限公司 | 基于虚拟化环境下的安全防护方法及系统 |
CN106778275A (zh) * | 2016-12-29 | 2017-05-31 | 北京瑞星信息技术股份有限公司 | 基于虚拟化环境下的安全防护方法及系统和物理主机 |
CN106874128A (zh) * | 2017-01-22 | 2017-06-20 | 广州华多网络科技有限公司 | 数据传输方法及装置 |
CN107678835A (zh) * | 2017-09-30 | 2018-02-09 | 东软集团股份有限公司 | 一种数据传输方法及系统 |
CN107995129A (zh) * | 2017-11-30 | 2018-05-04 | 锐捷网络股份有限公司 | 一种nfv报文转发方法和装置 |
CN108595244A (zh) * | 2017-12-05 | 2018-09-28 | 北京神州绿盟信息安全科技股份有限公司 | 虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统 |
CN108829529A (zh) * | 2018-06-14 | 2018-11-16 | 中国平安人寿保险股份有限公司 | 虚拟机内存共享方法、装置、计算机设备及存储介质 |
CN109426545A (zh) * | 2017-08-31 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 一种数据通信方法及装置 |
CN109460373A (zh) * | 2017-09-06 | 2019-03-12 | 阿里巴巴集团控股有限公司 | 一种数据共享方法、终端设备和存储介质 |
WO2019127191A1 (zh) * | 2017-12-28 | 2019-07-04 | 深圳前海达闼云端智能科技有限公司 | 一种多操作系统共享文件系统的方法、装置和电子设备 |
CN111259380A (zh) * | 2017-08-22 | 2020-06-09 | 海光信息技术有限公司 | 内存页转移方法和函数调用方法 |
CN111813584A (zh) * | 2020-08-05 | 2020-10-23 | Oppo广东移动通信有限公司 | 内存共享方法、装置、电子设备及存储介质 |
CN111988230A (zh) * | 2020-08-19 | 2020-11-24 | 海光信息技术有限公司 | 虚拟机通信方法、装置、系统及电子设备 |
CN112153116A (zh) * | 2020-08-27 | 2020-12-29 | 上海赫千电子科技有限公司 | 一种基于车载以太网的中央计算平台多虚拟机的数据共享方法 |
CN112256394A (zh) * | 2020-10-23 | 2021-01-22 | 海光信息技术股份有限公司 | 一种进程安全方法、装置、cpu、芯片及计算机设备 |
CN113076174A (zh) * | 2021-03-24 | 2021-07-06 | 海光信息技术股份有限公司 | 一种虚拟机内存的管理方法及管理系统 |
CN113434089A (zh) * | 2021-06-29 | 2021-09-24 | 苏州科达科技股份有限公司 | 数据搬移方法、装置及pcie系统 |
CN113821309A (zh) * | 2021-11-16 | 2021-12-21 | 科东(广州)软件科技有限公司 | 一种微内核虚拟机间的通信方法、装置、设备及存储介质 |
WO2023193687A1 (zh) * | 2022-04-08 | 2023-10-12 | 科东(广州)软件科技有限公司 | 一种共享内存的访问方法、装置、设备和存储介质 |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008070172A2 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for remote direct memory access to a solid-state storage device |
US8646052B2 (en) * | 2008-03-31 | 2014-02-04 | Intel Corporation | Method and apparatus for providing a secure display window inside the primary display |
US8336050B2 (en) * | 2009-08-31 | 2012-12-18 | Red Hat, Inc. | Shared memory inter-process communication of virtual machines using virtual synchrony |
JP5457916B2 (ja) * | 2010-04-01 | 2014-04-02 | 株式会社東芝 | メモリ共有装置 |
CN102467408B (zh) | 2010-11-12 | 2014-03-19 | 阿里巴巴集团控股有限公司 | 一种虚拟机数据的访问方法和设备 |
WO2012068302A2 (en) * | 2010-11-16 | 2012-05-24 | Tibco Software Inc. | Locking and signaling for implementing messaging transports with shared memory |
WO2012083308A2 (en) | 2010-12-17 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
CN102541619B (zh) * | 2010-12-23 | 2015-09-16 | 国际商业机器公司 | 虚拟机管理装置和方法 |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US8996807B2 (en) | 2011-02-15 | 2015-03-31 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a multi-level cache |
US8874823B2 (en) * | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US9473596B2 (en) | 2011-09-27 | 2016-10-18 | International Business Machines Corporation | Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections |
US8356050B1 (en) * | 2011-11-21 | 2013-01-15 | Yahoo! Inc. | Method or system for spilling in query environments |
CN103218266B (zh) | 2012-01-18 | 2016-03-23 | 国际商业机器公司 | 虚拟机与外部机器通信时使用的方法、设备及虚拟机系统 |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US8819345B2 (en) | 2012-02-17 | 2014-08-26 | Nokia Corporation | Method, apparatus, and computer program product for inter-core communication in multi-core processors |
US9256545B2 (en) * | 2012-05-15 | 2016-02-09 | Mellanox Technologies Ltd. | Shared memory access using independent memory maps |
US8880935B2 (en) | 2012-06-12 | 2014-11-04 | International Business Machines Corporation | Redundancy and load balancing in remote direct memory access communications |
US9396101B2 (en) | 2012-06-12 | 2016-07-19 | International Business Machines Corporation | Shared physical memory protocol |
US8930507B2 (en) | 2012-06-12 | 2015-01-06 | International Business Machines Corporation | Physical memory shared among logical partitions in a VLAN |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US20140012704A1 (en) | 2012-07-05 | 2014-01-09 | Google Inc. | Selecting a preferred payment instrument based on a merchant category |
US10346095B2 (en) | 2012-08-31 | 2019-07-09 | Sandisk Technologies, Llc | Systems, methods, and interfaces for adaptive cache persistence |
US9703582B1 (en) * | 2012-09-07 | 2017-07-11 | Tellabs Operations, Inc. | Share access of allocated storage space via in-memory file system between virtual machines |
US9286094B2 (en) * | 2012-10-12 | 2016-03-15 | Citrix Systems, Inc. | Human interface device virtualization using paravirtual USB system |
US9298642B2 (en) | 2012-11-01 | 2016-03-29 | Mellanox Technologies Ltd. | Sharing address translation between CPU and peripheral devices |
US20140143372A1 (en) * | 2012-11-20 | 2014-05-22 | Unisys Corporation | System and method of constructing a memory-based interconnect between multiple partitions |
US9092767B1 (en) * | 2013-03-04 | 2015-07-28 | Google Inc. | Selecting a preferred payment instrument |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US10410003B2 (en) * | 2013-06-07 | 2019-09-10 | Apple Inc. | Multiple containers assigned to an application |
US9628433B2 (en) * | 2013-08-27 | 2017-04-18 | International Business Machines Corporation | Transmission of short message service (SMS) message and notifications in virtualized wireless mobile computing device based on the status of intended recipient |
US9529616B2 (en) * | 2013-12-10 | 2016-12-27 | International Business Machines Corporation | Migrating processes between source host and destination host using a shared virtual file system |
US9858572B2 (en) | 2014-02-06 | 2018-01-02 | Google Llc | Dynamic alteration of track data |
WO2015121750A1 (en) * | 2014-02-14 | 2015-08-20 | 6Wind | System and method for data communication between virtual interfaces |
US9727503B2 (en) | 2014-03-17 | 2017-08-08 | Mellanox Technologies, Ltd. | Storage system and server |
US9696942B2 (en) | 2014-03-17 | 2017-07-04 | Mellanox Technologies, Ltd. | Accessing remote storage devices using a local bus protocol |
EP3163461B1 (en) * | 2014-07-31 | 2022-05-11 | Huawei Technologies Co., Ltd. | Communication system and communication method |
CN109324833B (zh) * | 2014-09-19 | 2020-07-07 | 华为技术有限公司 | 一种运行应用程序的方法及装置 |
US9459903B2 (en) * | 2014-09-24 | 2016-10-04 | Intel Corporation | Techniques for routing service chain flow packets between virtual machines |
TWI574158B (zh) * | 2014-12-01 | 2017-03-11 | 旺宏電子股份有限公司 | 具應用程式資訊感知的資料處理方法以及系統 |
CN104850451B (zh) * | 2015-05-15 | 2017-12-22 | 北京北信源软件股份有限公司 | 一种实现虚拟机与管理域进程间通信的方法 |
WO2016205976A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Apparatus and method for efficient communication between virtual machines |
US11429442B2 (en) * | 2015-06-29 | 2022-08-30 | Vmware, Inc. | Parallel and distributed computing using multiple virtual machines |
JP6579916B2 (ja) * | 2015-10-28 | 2019-09-25 | 株式会社日立製作所 | 仮想計算機間の通信経路制御方法および計算機システム |
CN105550576B (zh) * | 2015-12-11 | 2018-09-11 | 华为技术服务有限公司 | 容器间通信的方法与装置 |
EP3264711B1 (en) | 2016-06-28 | 2018-09-19 | Virtual Open Systems | Virtual switch for multi-compartment mixed critical network communications |
US10241947B2 (en) * | 2017-02-03 | 2019-03-26 | Intel Corporation | Hardware-based virtual machine communication |
US10242194B2 (en) | 2017-05-09 | 2019-03-26 | The Charles Stark Draper Laboratory, Inc. | Method and apparatus for trusted execution of applications |
US11240207B2 (en) | 2017-08-11 | 2022-02-01 | L3 Technologies, Inc. | Network isolation |
US11601467B2 (en) | 2017-08-24 | 2023-03-07 | L3 Technologies, Inc. | Service provider advanced threat protection |
US11374906B2 (en) | 2017-09-28 | 2022-06-28 | L3 Technologies, Inc. | Data exfiltration system and methods |
US11223601B2 (en) * | 2017-09-28 | 2022-01-11 | L3 Technologies, Inc. | Network isolation for collaboration software |
US11552987B2 (en) | 2017-09-28 | 2023-01-10 | L3 Technologies, Inc. | Systems and methods for command and control protection |
US11336619B2 (en) | 2017-09-28 | 2022-05-17 | L3 Technologies, Inc. | Host process and memory separation |
US11550898B2 (en) | 2017-10-23 | 2023-01-10 | L3 Technologies, Inc. | Browser application implementing sandbox based internet isolation |
CN110011933B (zh) * | 2018-01-05 | 2021-05-18 | 华为技术有限公司 | 发送数据包的方法、装置及计算机可读存储介质 |
CN109240800B (zh) * | 2018-09-11 | 2021-07-23 | 武汉光庭信息技术股份有限公司 | 一种基于Hypervisor多系统共享内存的管理方法 |
US10956240B2 (en) * | 2018-10-30 | 2021-03-23 | Blackberry Limited | Sharing data by a virtual machine |
KR20200093168A (ko) * | 2019-01-28 | 2020-08-05 | 삼성전자주식회사 | 전자 장치 및 전자 장치의 제어 방법 |
US11099911B1 (en) | 2019-07-01 | 2021-08-24 | Northrop Grumman Systems Corporation | Systems and methods for inter-partition communication |
JP7309579B2 (ja) | 2019-11-14 | 2023-07-18 | 株式会社東芝 | 通信装置、通信方法及びプログラム |
JP7309580B2 (ja) * | 2019-11-14 | 2023-07-18 | 株式会社東芝 | 通信装置、通信方法及びプログラム |
US12093713B2 (en) * | 2020-04-14 | 2024-09-17 | Research Foundation For The State University Of New York | Systems and methods for live update of operating systems and hypervisors within virtualization systems |
US11940933B2 (en) | 2021-03-02 | 2024-03-26 | Mellanox Technologies, Ltd. | Cross address-space bridging |
US11934658B2 (en) | 2021-03-25 | 2024-03-19 | Mellanox Technologies, Ltd. | Enhanced storage protocol emulation in a peripheral device |
DE102021203329A1 (de) * | 2021-04-01 | 2022-10-06 | Robert Bosch Gesellschaft mit beschränkter Haftung | Vorrichtung und Verfahren zum Verwalten von Kommunikation über Schnittstellen in einem virtualisierten System |
US11726666B2 (en) | 2021-07-11 | 2023-08-15 | Mellanox Technologies, Ltd. | Network adapter with efficient storage-protocol emulation |
US12007921B2 (en) | 2022-11-02 | 2024-06-11 | Mellanox Technologies, Ltd. | Programmable user-defined peripheral-bus device implementation using data-plane accelerator (DPA) |
CN116149820B (zh) * | 2023-02-20 | 2024-02-06 | 亿咖通(湖北)技术有限公司 | 基于Xen的域间通信方法、装置、设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7784060B2 (en) | 2003-11-06 | 2010-08-24 | Intel Corporation | Efficient virtual machine communication via virtual machine queues |
US7739684B2 (en) * | 2003-11-25 | 2010-06-15 | Intel Corporation | Virtual direct memory access crossover |
US7334076B2 (en) * | 2005-03-08 | 2008-02-19 | Microsoft Corporation | Method and system for a guest physical address virtualization in a virtual machine environment |
US20070288921A1 (en) | 2006-06-13 | 2007-12-13 | King Steven R | Emulating a network-like communication connection between virtual machines on a physical device |
US7346909B1 (en) | 2006-08-28 | 2008-03-18 | Intel Corporation | Network-like communication and stack synchronization for different virtual machines on the same physical device |
JP4756603B2 (ja) * | 2006-10-10 | 2011-08-24 | ルネサスエレクトロニクス株式会社 | データプロセッサ |
CN100527098C (zh) * | 2007-11-27 | 2009-08-12 | 北京大学 | 一种虚拟机管理器的动态内存映射方法 |
-
2009
- 2009-02-26 CN CN2009101185216A patent/CN101819564B/zh not_active Expired - Fee Related
-
2010
- 2010-02-24 US US12/711,775 patent/US8447935B2/en not_active Expired - Fee Related
Cited By (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102694784A (zh) * | 2011-03-25 | 2012-09-26 | 北京网鼎芯睿科技有限公司 | 一种优化的服务器端ip数据发送方法和装置 |
WO2013075445A1 (zh) * | 2011-11-22 | 2013-05-30 | 中兴通讯股份有限公司 | 虚拟驱动的交互方法及装置 |
CN103136057A (zh) * | 2011-11-22 | 2013-06-05 | 中兴通讯股份有限公司 | 虚拟驱动的交互方法及装置 |
WO2013075443A1 (zh) * | 2011-11-24 | 2013-05-30 | 中兴通讯股份有限公司 | 一种内存区间相互隔离的程序之间的通讯方法及处理单元 |
CN103136059A (zh) * | 2011-11-24 | 2013-06-05 | 中兴通讯股份有限公司 | 一种内存区间相互隔离的程序之间的通讯方法及处理单元 |
CN102664803B (zh) * | 2012-04-23 | 2015-04-15 | 杭州华三通信技术有限公司 | 一种ef队列的实现方法和设备 |
CN102664803A (zh) * | 2012-04-23 | 2012-09-12 | 杭州华三通信技术有限公司 | 一种ef队列的实现方法和设备 |
CN102916882A (zh) * | 2012-08-30 | 2013-02-06 | 华为技术有限公司 | 一种报文接收方法与芯片组 |
CN102916882B (zh) * | 2012-08-30 | 2015-05-27 | 华为技术有限公司 | 一种报文接收方法及芯片组 |
CN103034544A (zh) * | 2012-12-04 | 2013-04-10 | 杭州迪普科技有限公司 | 一种用户态与内核态共享内存的管理方法和装置 |
CN103034544B (zh) * | 2012-12-04 | 2015-08-05 | 杭州迪普科技有限公司 | 一种用户态与内核态共享内存的管理方法和装置 |
CN103346981B (zh) * | 2013-06-28 | 2016-08-10 | 华为技术有限公司 | 虚拟交换方法、相关装置和计算机系统 |
CN103346981A (zh) * | 2013-06-28 | 2013-10-09 | 华为技术有限公司 | 虚拟交换方法、相关装置和计算机系统 |
US9996371B2 (en) | 2013-06-28 | 2018-06-12 | Huawei Technologies Co., Ltd. | Virtual switching method, related apparatus, and computer system |
US10649798B2 (en) | 2013-06-28 | 2020-05-12 | Huawei Technologies Co., Ltd. | Virtual switching method, related apparatus, and computer system |
CN104580124A (zh) * | 2013-10-29 | 2015-04-29 | 华为技术有限公司 | 协议栈选择方法、装置及设备 |
CN104580124B (zh) * | 2013-10-29 | 2019-04-05 | 华为技术有限公司 | 协议栈选择方法、装置及设备 |
US10127067B2 (en) | 2013-10-29 | 2018-11-13 | Huawei Technologies Co., Ltd. | Method and computing device for selecting protocol stack for virtual machines |
CN103618809A (zh) * | 2013-11-12 | 2014-03-05 | 华为技术有限公司 | 一种虚拟化环境下通信的方法、装置和系统 |
CN103795621A (zh) * | 2013-12-12 | 2014-05-14 | 华为技术有限公司 | 一种虚拟机的数据交换方法、装置及物理主机 |
CN103795621B (zh) * | 2013-12-12 | 2017-02-15 | 华为技术有限公司 | 一种虚拟机的数据交换方法、装置及物理主机 |
CN103823638A (zh) * | 2014-02-08 | 2014-05-28 | 华为技术有限公司 | 一种虚拟设备访问方法及装置 |
CN103823638B (zh) * | 2014-02-08 | 2017-01-18 | 华为技术有限公司 | 一种虚拟设备访问方法及装置 |
CN104092661A (zh) * | 2014-06-10 | 2014-10-08 | 深圳市深信服电子科技有限公司 | 虚拟机串口的通信方法及装置 |
CN106201646A (zh) * | 2014-08-15 | 2016-12-07 | 英特尔公司 | 用于安全虚拟机间共享存储器通信的技术 |
CN106201646B (zh) * | 2014-08-15 | 2020-03-31 | 英特尔公司 | 用于安全虚拟机间共享存储器通信的设备和方法 |
CN105635219B (zh) * | 2014-11-06 | 2020-04-03 | 上海诺基亚贝尔股份有限公司 | 用于实施虚拟基站间通信的方法和基带处理单元 |
CN105635219A (zh) * | 2014-11-06 | 2016-06-01 | 上海贝尔股份有限公司 | 用于实施虚拟基站间通信的方法和基带处理单元 |
CN106354670A (zh) * | 2015-07-16 | 2017-01-25 | 阿里巴巴集团控股有限公司 | 一种用于虚拟化环境下传输数据的方法与设备 |
WO2017008675A1 (zh) * | 2015-07-16 | 2017-01-19 | 阿里巴巴集团控股有限公司 | 一种用于虚拟化环境下传输数据的方法与设备 |
CN106612306A (zh) * | 2015-10-22 | 2017-05-03 | 中兴通讯股份有限公司 | 虚拟机的数据共享方法及装置 |
WO2017067391A1 (zh) * | 2015-10-22 | 2017-04-27 | 中兴通讯股份有限公司 | 虚拟机的数据共享方法及装置 |
CN106598696A (zh) * | 2016-11-08 | 2017-04-26 | 北京华为数字技术有限公司 | 一种虚拟机之间数据交互的方法及装置 |
CN106598696B (zh) * | 2016-11-08 | 2020-07-28 | 北京华为数字技术有限公司 | 一种虚拟机之间数据交互的方法及装置 |
CN106778275A (zh) * | 2016-12-29 | 2017-05-31 | 北京瑞星信息技术股份有限公司 | 基于虚拟化环境下的安全防护方法及系统和物理主机 |
CN106778274A (zh) * | 2016-12-29 | 2017-05-31 | 北京瑞星信息技术股份有限公司 | 基于虚拟化环境下的安全防护方法及系统 |
CN106874128A (zh) * | 2017-01-22 | 2017-06-20 | 广州华多网络科技有限公司 | 数据传输方法及装置 |
CN106874128B (zh) * | 2017-01-22 | 2020-11-20 | 广州华多网络科技有限公司 | 数据传输方法及装置 |
CN111259380A (zh) * | 2017-08-22 | 2020-06-09 | 海光信息技术有限公司 | 内存页转移方法和函数调用方法 |
CN109426545A (zh) * | 2017-08-31 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 一种数据通信方法及装置 |
CN109460373A (zh) * | 2017-09-06 | 2019-03-12 | 阿里巴巴集团控股有限公司 | 一种数据共享方法、终端设备和存储介质 |
CN109460373B (zh) * | 2017-09-06 | 2022-08-26 | 阿里巴巴集团控股有限公司 | 一种数据共享方法、终端设备和存储介质 |
CN107678835B (zh) * | 2017-09-30 | 2020-05-08 | 东软集团股份有限公司 | 一种数据传输方法及系统 |
CN107678835A (zh) * | 2017-09-30 | 2018-02-09 | 东软集团股份有限公司 | 一种数据传输方法及系统 |
CN107995129B (zh) * | 2017-11-30 | 2021-12-17 | 锐捷网络股份有限公司 | 一种nfv报文转发方法和装置 |
CN107995129A (zh) * | 2017-11-30 | 2018-05-04 | 锐捷网络股份有限公司 | 一种nfv报文转发方法和装置 |
CN108595244A (zh) * | 2017-12-05 | 2018-09-28 | 北京神州绿盟信息安全科技股份有限公司 | 虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统 |
WO2019127191A1 (zh) * | 2017-12-28 | 2019-07-04 | 深圳前海达闼云端智能科技有限公司 | 一种多操作系统共享文件系统的方法、装置和电子设备 |
CN108829529A (zh) * | 2018-06-14 | 2018-11-16 | 中国平安人寿保险股份有限公司 | 虚拟机内存共享方法、装置、计算机设备及存储介质 |
CN111813584A (zh) * | 2020-08-05 | 2020-10-23 | Oppo广东移动通信有限公司 | 内存共享方法、装置、电子设备及存储介质 |
CN111988230A (zh) * | 2020-08-19 | 2020-11-24 | 海光信息技术有限公司 | 虚拟机通信方法、装置、系统及电子设备 |
CN112153116A (zh) * | 2020-08-27 | 2020-12-29 | 上海赫千电子科技有限公司 | 一种基于车载以太网的中央计算平台多虚拟机的数据共享方法 |
CN112256394A (zh) * | 2020-10-23 | 2021-01-22 | 海光信息技术股份有限公司 | 一种进程安全方法、装置、cpu、芯片及计算机设备 |
CN112256394B (zh) * | 2020-10-23 | 2022-11-18 | 海光信息技术股份有限公司 | 一种进程安全方法、装置、cpu、芯片及计算机设备 |
CN113076174A (zh) * | 2021-03-24 | 2021-07-06 | 海光信息技术股份有限公司 | 一种虚拟机内存的管理方法及管理系统 |
CN113434089A (zh) * | 2021-06-29 | 2021-09-24 | 苏州科达科技股份有限公司 | 数据搬移方法、装置及pcie系统 |
CN113434089B (zh) * | 2021-06-29 | 2022-08-16 | 苏州科达科技股份有限公司 | 数据搬移方法、装置及pcie系统 |
CN113821309A (zh) * | 2021-11-16 | 2021-12-21 | 科东(广州)软件科技有限公司 | 一种微内核虚拟机间的通信方法、装置、设备及存储介质 |
WO2023193687A1 (zh) * | 2022-04-08 | 2023-10-12 | 科东(广州)软件科技有限公司 | 一种共享内存的访问方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101819564B (zh) | 2013-04-17 |
US20100217916A1 (en) | 2010-08-26 |
US8447935B2 (en) | 2013-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101819564B (zh) | 协助在虚拟机之间进行通信的方法和装置 | |
US11934883B2 (en) | Computer cluster arrangement for processing a computation task and method for operation thereof | |
US8683109B2 (en) | Computer system and bus assignment method | |
JP6328134B2 (ja) | クラスタ化されたコンピュータ・システムで通信チャネルのフェイルオーバを実行する方法、装置、およびプログラム | |
US9183026B2 (en) | Supporting heterogeneous virtualization | |
CN103080918B (zh) | 功率优化的中断传递 | |
CN103034524B (zh) | 半虚拟化的虚拟gpu | |
US8312201B2 (en) | Managing memory allocations loans | |
US20090164739A1 (en) | Method,system and apparatus for handling events for partitions in a socket with sub-socket partitioning | |
US20080052432A1 (en) | Data buffer allocation in a non-blocking data services platform using input/output switching fabric | |
US8151081B2 (en) | Method, system and apparatus for memory address mapping for sub-socket partitioning | |
JP2008165789A (ja) | パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換 | |
KR101900436B1 (ko) | 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고 | |
KR20120068464A (ko) | 통합 메모리 서비스를 위한 소프트웨어 구조 및 이 소프트웨어 구조를 이용한 통합 메모리 서비스 제공 방법 | |
CN107491340B (zh) | 跨物理机的巨型虚拟机实现方法 | |
US20240264768A1 (en) | Request Processing Method, Apparatus, and System | |
US11138146B2 (en) | Hyperscale architecture | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
US20230376412A1 (en) | A far memory allocator for data center stranded memory | |
CN104272295A (zh) | 地址转换板 | |
US20240231615A1 (en) | Apparatus and method for sanitizing a shared memory device or a memory expander | |
US20200167178A1 (en) | Dynamic virtual input/output and numa node management | |
CN116841731A (zh) | 一种fpga虚拟化资源调度系统及方法 | |
CN117877541A (zh) | 用于控制池化存储器装置或存储器扩展器的设备和方法 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180611 Address after: 7 floor, building 10, Zhang Jiang Innovation Park, 399 Keyuan Road, Zhang Jiang high tech park, Pudong New Area, Shanghai. Patentee after: International Business Machines (China) Co., Ltd. Address before: American New York Patentee before: International Business Machines Corp. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130417 Termination date: 20190226 |