掌桥专利:专业的专利平台
掌桥专利
首页

虚拟机间通信的方法、装置、电子设备及存储介质

文献发布时间:2024-04-18 20:00:50


虚拟机间通信的方法、装置、电子设备及存储介质

技术领域

本发明实施例涉及计算机技术领域,尤其涉及一种虚拟机间通信的方法、装置、电子设备及存储介质。

背景技术

相关技术中,虚拟机间进行通信的方式,通常需要建立通信通道。然而,通信通道的建立一般耗时较长,使得通信通道的建立较为缓慢。此外,对于多个虚拟机之间进行通信,往往需要借助虚拟机两两之间单独建立的通道进行通信,不仅使得虚拟机间的通信较为复杂化,而且容易出现内存开销较大的现象,导致虚拟机间的通信效率较低。

发明内容

本发明提供了一种虚拟机间通信的方法、装置、电子设备及存储介质,以实现对虚拟机间通信过程的简化处理,使得虚拟机之间能够灵活通信,降低了内存开销,提升了虚拟机之间的通信效率。

根据本发明的一方面,提供了一种虚拟机间通信的方法,该方法包括:

在检测到第一虚拟机产生待传输数据的情况下,配置针对所述待传输数据的传输参数;

根据所述传输参数生成数据传输指令,将所述数据传输指令发送至与所述第一虚拟机连接的虚拟总线上;

控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将所述待传输数据转发给第二虚拟机。

根据本发明的另一方面,提供了一种虚拟机间通信的装置。该装置包括:

参数配置模块,用于在检测到第一虚拟机产生待传输数据的情况下,配置针对所述待传输数据的传输参数;

指令发送模块,用于根据所述传输参数生成数据传输指令,将所述数据传输指令发送至与所述第一虚拟机连接的虚拟总线上;

数据传输模块,用于控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将所述待传输数据转发给第二虚拟机。

根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的虚拟机间通信的方法。

根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的虚拟机间通信的方法。

本发明实施例的技术方案,在检测到第一虚拟机产生待传输数据的情况下,通过配置针对所述待传输数据的传输参数。根据所述传输参数生成数据传输指令,将所述数据传输指令发送至与所述第一虚拟机连接的虚拟总线上。本发明实施例中,通过设定虚拟总线,并将虚拟机连接至虚拟总线上,使得虚拟机之间通过虚拟总线进行通信。进而控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将所述待传输数据转发给第二虚拟机。本发明实施例的技术方案,对虚拟机间通信过程的简化处理,使得虚拟机之间能够灵活通信,降低了内存开销,提升了虚拟机之间的通信效率。

应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的适用于虚拟机间通信的方法的框架示意图;

图2为本发明实施例一提供的一种虚拟机间通信的方法的流程示意图;

图3为本发明实施例一提供的一种虚拟机间通信的方法的数据交互图;

图4为本发明实施例一提供的一种虚拟机间通信的方法的数据交互图;

图5为本发明实施例二提供的一种虚拟机间通信的方法的可选实施例的数据交互图;

图6为本发明实施例三提供的一种虚拟机间通信的装置的结构示意图;

图7为本发明实施例四提供的一种电子设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

可以理解的是,本技术方案所涉及的数据(包括但不限于数据本身、数据的获取或使用)应当遵循相应法律法规及相关规定的要求。

为了便于理解,在介绍本发明实施例的虚拟机间通信的方法之前,本发明以一种虚拟机间通信框架示例性的进行介绍,参见图1,本发明实施例中,虚拟机间通信框架可以包括虚拟总线(Virtual BUS)和至少两个虚拟机(Virtual Machine,VM)。其中,虚拟总线设置在虚拟机监视器(Hypervisor)中。所述至少两个虚拟机可以包括VM0、VM1、VM2。每个虚拟机安装有客户机系统(GuestOS)和配置有总线端口(BusPort)。总线端口中定义有设备寄存器。每个虚拟机通过总线端口和虚拟总线连接,那么,虚拟机之间可以通过虚拟总线进行数据通信,从而实现虚拟机之间的数据传输。

还需要说明的是,在本发明实施例中,虚拟机的总线端口可以分为两个部分,其中,一个部分可以为位于GuestOS的驱动程序,用于访问总线端口定义的设备寄存器,通过操作设备寄存器向虚拟总线传输数据;另一部分可以为位于虚拟机监视器中的总线端口模拟程序,用于处理总线端口区驱动程序产生的陷入操作,并从虚拟总线接收数据。在数据接收条件触发后,可以向GuestOS中断以通知GuestOS中的驱动程序需要接收数据。

实施例一

图2为本发明实施例一提供的一种虚拟机间通信的方法的流程示意图,本实施例可适用于虚拟机之间进行数据通信的情况,该方法可以由虚拟机间通信的装置来执行,该虚拟机间通信的装置可以采用硬件和/或软件的形式实现,该虚拟机间通信的装置可配置于诸如计算机或者服务器等的电子设备中。

如图2所示,本实施例的方法包括:

S110、在检测到第一虚拟机产生待传输数据的情况下,配置针对所述待传输数据的传输参数。

其中,第一虚拟机可以理解为产生待传输数据的虚拟机。在本发明实施例中,第一虚拟机可以作为在虚拟机间通信中的数据发送方。待传输数据可以理解为第一虚拟机在与其他虚拟机进行通信时产生的数据。其他虚拟机可以理解为除第一虚拟机之外的虚拟机。其他虚拟机的数量可以为一个、两个或两个以上。

在本发明实施例中,传输参数可以理解为针对第一虚拟机所产生的待传输数据配置的用于传输所述待传输数据的参数。可选地,传输参数可以包括所述待传输数据的类型、所述待传输数据所在缓存区的物理地址、缓存区中所述待传输数据的数据大小以及接收所述待传输数据的虚拟机标识。

其中,待传输数据的类型可以用于确定待传输数据是否为按页对齐数据。待传输数据所在缓存区的物理地址可以理解为第一虚拟机的缓存区中用于存储待传输数据的空间的首地址。缓存区中所述待传输数据的数据大小可以理解为待传输数据在缓存区中占用空间的大小。接收所述待传输数据的虚拟机标识可以为一个或多个虚拟机的标识。不同的虚拟机标识可以用于区分不同的虚拟机。在本发明实施例中,接收所述待传输数据的虚拟机标识可以以列表形式存储。

具体的,在检测到第一虚拟机产生待传输数据的情况下,可以对所述待传输数据进行数据分析处理,从而可以得到所述待传输数据的数据特征。进而可以根据所述待传输数据的数据特征,对所述待传输数据的传输参数进行配置处理,以得到所述待传输数据的传输参数。

在本发明实施例中,第一虚拟机可以包括第一设备寄存器。其中,第一设备寄存器可以理解为定义在第一虚拟机中的设备寄存器。第一设备寄存器可以定义有配置区域。在本发明实施例中,第一设备寄存器的配置区域可以映射到实际物理内存,可以用于设置设备控制参数和数据传输参数。相应的,所述配置针对所述待传输数据的传输参数,可以包括:确定所述待传输数据的传输参数,将所述传输参数配置于所述配置区域中。需要说明的是,第一设备寄存器的配置区域可以包括一个或多个寄存器。

S120、根据所述传输参数生成数据传输指令,将所述数据传输指令发送至与所述第一虚拟机连接的虚拟总线上。

其中,数据传输指令可以理解为用于将第一虚拟机产生的待传输数据通过虚拟总线传输给与所述第一虚拟机进行通信的其他虚拟机的指令。虚拟总线可以理解为预先设置的用于进行虚拟机间通信的虚拟总线。在本发明实施例中,虚拟总线上连接有需要进行通信的虚拟机。在实际应用中,虚拟总线上连接的虚拟机的数量通常为两个或两个以上。可以理解的是,在发明实施例中,虚拟总线上连接有第一虚拟机以及与所述第一虚拟机进行通信的其他虚拟机。

在本发明实施例中,根据所述传输参数生成数据传输指令,可以包括:在参数配置完成后,可以将所述传输参数作为实际参数,传递给预先设置的数据传输事件的形式参数;在参数传递完成后,基于所述数据传输事件,生成针对所述待传输数据的数据传输指令。其中,数据传输事件可以理解为用于对第一虚拟机的待传输数据进行传输的事件。

在上述实施例的基础上,第一设备寄存器还可以定义有控制区域。在本发明实施例中,第一设备寄存器定义的控制区域为映射到实际物理内存,可以用于触发控制事务和传输事务。具体的,在第一虚拟机的总线端口的驱动程序访问所述控制区域的寄存器时,第一虚拟机将发生陷入;在第一虚拟机发生陷入后,虚拟机监视器中的总线端口模拟程序对所述第一虚拟机的陷入进行分析,得到分析结果;进而执行虚拟设备控制和数据传输相关的逻辑。相应的,所述根据所述传输参数生成数据传输指令,可以包括:在检测到所述传输参数已配置与所述配置区域后,可以于所述控制区域设置针对所述传输参数的数据传输指令。需要说明的是,第一设备寄存器的控制区域可以包括一个或多个寄存器。

在上述实施例的基础上,第一设备寄存器还可以定义有描述符区域和读缓存区域。其中,第一设备寄存器中定义的描述符区域可以用于接收描述符表,其中,描述符表可以包括至少一个描述符项,每个描述符项可以用于记录一个缓存区的内存信息。第一设备寄存器中定义的读缓存区域可以理解为接收数据的缓存区。

在本发明实施例中,在将所述数据传输指令发送至与所述第一虚拟机连接的虚拟总线上之前,所述方法还包括:可以将第一虚拟机连接至虚拟总线上。具体的,可以于第一虚拟机中配置总线端口;在总线端口配置完成后,可以建立所述总线端口和所述虚拟总线之间的连接,以使第一虚拟机通过所述总线端口连接至所述虚拟总线上。

在本发明实施例中,在将第一虚拟机连接至虚拟总线上之前,所述方法还包括:对虚拟总线进行初始化处理。具体的,可以通过下述步骤对虚总线进行初始化处理:

步骤一、读取设备类型寄存器(cfg_regs.magic),读取设备版本寄存器(cfg_regs.version);

步骤二、在读取后,可以通过总线端口的驱动程序判断是否支持第一虚拟机;如果不支持,则可以表征第一虚拟机中总线端口的初始化失败;如果支持,则可以通过第一虚拟机中总线端口的驱动程序设置已探测寄存器(ctrl_regs.probed);

步骤三、在已探测寄存器设置完成后,可以读取设备特性寄存器,从而可以得到总线端口的驱动可支持特性;进而可以将驱动可支持特性写入特性寄存器(cfg_regs.feature);在写入完成后,可以对协商寄存器(ctrl_regs.negotiate)进行设置,得到协商寄存器的设置结果;根据协商寄存器的设置结果,可以确定第一虚拟中设备寄存器的功能特征是否协商成功。如果协商成功,则此时从cfg_regs.prepare读取到的值为1;如果协商失败,则可以表征总线端口的初始化失败;

步骤四、在协商成功后,可以先设置虚拟机标识寄存器(cfg_regs.vmid),然后设置虚拟机连接寄存器(ctrl_regs.connect)以发起与虚拟总线和第一虚拟机的连接,如果连接总线成功,则虚拟总线将cfg_regs.vmid作为数据传输时标识虚拟机的唯一地址;如果连接失败,则可以表征总线端口的初始化失败;

步骤五、在虚拟机和虚拟总线连接成功后,可以先设置目标虚拟机寄存器(cfg_regs.target_vmid),然后设置监测寄存器(ctrl_regs.detect)以通过监测寄存器确定目标虚拟机是否在线;需要说明的是,在本发明实施例中,目标虚拟机可以理解为需要和虚拟总线连接的虚拟机,例如,第一虚拟机;

步骤六、在监测寄存器确定目标虚拟机在线后,可以通过设置监听寄存器(ctrl_regs.listen)来监听事件;当检测到事件发生时,则可以通过总线端口设备发起中断,进而可以通过总线端口的驱动来识别事件类型并处理。

S130、控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将所述待传输数据转发给第二虚拟机。

其中,第二虚拟机可以理解为需要和第一虚拟机进行通信且连接至虚拟总线上的虚拟机。在本发明实施例中,第二虚拟机的数量可以为一个、两个或两个以上。

具体的,在检测到虚拟总线接收到数据传输指令后,可以根据传输参数中接收所述待传输数据的虚拟机标识,确定与所述第一虚拟机通信连接的第二虚拟机。可以根据所述传输参数中待传输数据的类型,确定所第二虚拟机中设备寄存器用于存储所述待传输数据的存储方式。可以所述传输参数中待传输数据所在缓存区的物理地址、缓存区中所述待传输数据的数据大小,控制虚拟总线根据所述物理地址和所述数据大小获取所述待存储数据,将所述待传输数据以所述存储方式存储至所述第二虚拟机中。

在本发明实施例中,第二虚拟机包括第二设备寄存器。其中,第二设备寄存器可以理解为定义在第二虚拟机中的设备寄存器。第二设备寄存器可以定义有描述符区域和读缓存区域。其中,所述描述符区域对应于第一缓存区,所述读缓存区域对应于第二缓存区。在本发明实施例中,第一缓存区可以理解为用于存储按页对齐数据的缓存区。第二缓存区可以理解为用于存储非按页对齐数据的缓存区。

作为本发明实施例的一种可选的实施方式,所述控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将所述待传输数据转发给第二虚拟机,可以包括:在所述待传输数据为非按页对齐数据的情况下,可以控制所述虚拟总线基于所述数据传输指令,从所述第一虚拟机的内存中拷贝所述待传输数据,并按照所述传输参数将拷贝的数据写入至所述第二虚拟机的第二缓存区,以通过单次拷贝技术实现虚拟机间的数据传输。

作为本发明实施例的另一种可选的实施方式,所述控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将所述待传输数据转发给第二虚拟机,可以包括:在所述待传输数据为按页对齐数据且所述第二虚拟机的数量为一个的情况下,可以确定所述待传输数据在所述第一虚拟机的内存地址,以及确定所述第二虚拟机中用于存储数据的缓存地址;控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将所述内存地址指向的数据和所述缓存地址指向的数据进行交换,以使所述目标虚拟的所述缓存地址指向所述待传输数据。

其中,第二虚拟机中用于存储数据的缓存地址,可以为第二虚拟机的缓存区域中的任意数据,或者;可以为第二虚拟机需要向第一虚拟机发送的数据。

参见图3,第一虚拟机可以为VM0,第二虚拟机可以为VM1。VM0和VM1通信时,在VM0需要向VM1传输的数据为MEM0。此时,MEM0为按页对齐数据,MEM0中存储VM0的内存地址为TX_DATA。第二虚拟机中能够存储数据的缓存地址为RX_BUFFER,RX_BUFFER指向的数据为MEM1。那么,在VM0需要向VM1传输的MEM0时,则可以将TX_DATA所指向的数据和RX_BUFFER所指向的数据进行交换,以使TX_DATA指向MEM1,RX_BUFFER指向MEM0,以基于内存重映射方式通过零拷贝技术完成虚拟机间的通信。

作为本发明实施例的又一种可选的实施方式,所述控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将所述待传输数据转发给第二虚拟机,包括:在所述待传输数据为按页对齐数据,且所述第二虚拟机的数量为多个的情况下,可以确定所述待传输数据在所述第一虚拟机的内存地址,以及确定各所述第二虚拟机中用于存储数据的缓存地址;进而可以控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将各所述第二虚拟机的缓存地址指向的数据释放至预设数据池,将各所述第二虚拟机的缓存地址指向所述内存地址所指向的数据,将所述内存地址指向所述预设数据池中的数据,从而使得各所述第二虚拟机的缓存地址指向的数据为第一虚拟机所产生的待传输数据。

其中,预设数据池可以理解为用于存储数据的数据池。预设数据池通常用于存储内存或缓存中指针释放的数据。预设数据池中数据的数量可以为一个或多个。

参见图4,预设数据池可以为MEM-POOL。第一虚拟机为VM0,第二虚拟机包括VM1和VM2。第一虚拟机和第二虚拟机进行通信包括:VM0和VM1进行通信,VM0和VM1进行通信,即,VM0分别与VM1和VM2进行通信。其中,VM0需要分别向VM1和VM2传输的数据为MEM0。MEM0在VM0中存储的内存地址为TX_DATA。VM1中用于存储数据的缓存地址为VM1中的RX_BUFFER,VM1中的RX_BUFFER指向的数据为MEM1。VM2中用于存储数据的缓存地址为VM2中的RX_BUFFER,VM2中的RX_BUFFER指向的数据为MEM2。

那么,VM0分别向VM1和VM2发送传输MEM0时,则可以将VM1中RX_BUFFER指向的MEM1释放至MEM-POOL,以及将VM2中RX_BUFFER指向的MEM2释放至MEM-POOL。在释放完成后,可以将VM1中RX_BUFFER指向MEM0,将VM2中RX_BUFFER指向MEM0。此外,将VM0中TX_DATA指向MEM-POOL中的任意数据(MEM-x)。

本发明实施例的技术方案,在检测到第一虚拟机产生待传输数据的情况下,通过配置针对所述待传输数据的传输参数。根据所述传输参数生成数据传输指令,将所述数据传输指令发送至与所述第一虚拟机连接的虚拟总线上。本发明实施例中,通过设定虚拟总线,并将虚拟机连接至虚拟总线上,使得虚拟机之间通过虚拟总线进行通信。进而控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将所述待传输数据转发给第二虚拟机。本发明实施例的技术方案,对虚拟机间通信过程的简化处理,使得虚拟机之间能够灵活通信,降低了内存开销,提升了虚拟机之间的通信效率。

实施例二

本发明实施例二提供一种虚拟机间通信的方法的可选实施例,其具体实施方式可以参见下述实施例。其中,与上述实施例相同或者相似的技术特征在此不再赘述。

如图5所示,第一虚拟机中定义的设备寄存器包括配置区域(CFG)、控制区域(CTRL)、描述符区域(DESC)和读缓存区域(RBUF)。第二虚拟机定义的设备寄存器包括配置区域、控制区域、描述符区域和读缓存区域。

在第一虚拟机产生待传输数据后,可以在第一虚拟机中CFG对应的相关寄存器中设置传输参数。在设置完成后,在第一虚拟机中CTRL对应的相关寄存器设置数据传输指令(Trap Handler和Data Hanler)。在数据传输指令设置完成后,可以将数据传输指令发送至虚拟总线(Virtual BUS)。进一步,可以控制总线按照已设置的传输参数将待传输数据传输至与虚拟总线连接的第二虚拟机。

其中,在待传输数据为按页对齐数据的情况下,则可以控制虚拟总线将所述待传输数据转发至第二虚拟机中设备寄存器中描述符区域对应的缓存区(Once Cope,单次拷贝);在待传输数据为非按页对齐数据的情况下,则可以控制虚拟总线将待传输数据转发至第二虚拟机中设备寄存器中读缓存区域(Zero Cope,零次拷贝)。

本发明实施例的技术方案,通过虚拟总线实现第一虚拟机和第二虚拟机之间的通信。本发明实施例的技术方案,对虚拟机间通信过程的简化处理,使得虚拟机之间能够灵活通信,降低了内存开销,提升了虚拟机之间的通信效率。

实施例三

图6为本发明实施例三提供的一种虚拟机间通信的装置的结构示意图。如图6所示,该装置包括:参数配置模块210、指令发送模块220和数据传输模块230。

其中,参数配置模块210,用于在检测到第一虚拟机产生待传输数据的情况下,配置针对所述待传输数据的传输参数;

指令发送模块220,用于根据所述传输参数生成数据传输指令,将所述数据传输指令发送至与所述第一虚拟机连接的虚拟总线上;

数据传输模块230,用于控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将所述待传输数据转发给第二虚拟机。

本发明实施例的技术方案,在检测到第一虚拟机产生待传输数据的情况下,通过配置针对所述待传输数据的传输参数。根据所述传输参数生成数据传输指令,将所述数据传输指令发送至与所述第一虚拟机连接的虚拟总线上。本发明实施例中,通过设定虚拟总线,并将虚拟机连接至虚拟总线上,使得虚拟机之间通过虚拟总线进行通信。进而控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将所述待传输数据转发给第二虚拟机。本发明实施例的技术方案,对虚拟机间通信过程的简化处理,使得虚拟机之间能够灵活通信,降低了内存开销,提升了虚拟机之间的通信效率。

可选地,所述第一虚拟机包括第一设备寄存器,所述第一设备寄存器定义有配置区域,参数配置模块210,具体用于:

确定所述待传输数据的传输参数,将所述传输参数配置于所述配置区域中;其中,所述传输参数包括所述待传输数据的类型、所述待传输数据所在缓存区的物理地址、缓存区中所述待传输数据的数据大小以及接收所述待传输数据的虚拟机标识。

可选地,所述第一设备寄存器还定义有控制区域,指令发送模块220,具体用于:

在检测到所述传输参数已配置与所述配置区域后,于所述控制区域设置针对所述传输参数的数据传输指令。

可选地,所述第二虚拟机包括第二设备寄存器,所述第二设备寄存器定义有描述符区域和读缓存区域,其中,所述描述符区域对应于第一缓存区,所述读缓存区域对应于第二缓存区。

可选地,数据传输模块230,具体用于:

在所述待传输数据为非按页对齐数据的情况下,控制所述虚拟总线基于所述数据传输指令,从所述第一虚拟机的内存中拷贝所述待传输数据,并按照所述传输参数将拷贝的数据写入至所述第二虚拟机的第二缓存区。

可选地,数据传输模块230,具体用于:

在所述待传输数据为按页对齐数据且所述第二虚拟机的数量为一个的情况下,确定所述待传输数据在所述第一虚拟机的内存地址,确定所述第二虚拟机中用于存储数据的缓存地址;

控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将所述内存地址指向的数据和所述缓存地址指向的数据进行交换,以使所述目标虚拟的所述缓存地址指向所述待传输数据。

可选地,数据传输模块230,具体用于:

在所述待传输数据为按页对齐数据,且所述第二虚拟机的数量为多个的情况下,确定所述待传输数据在所述第一虚拟机的内存地址,确定各所述第二虚拟机中用于存储数据的缓存地址;

控制所述虚拟总线基于所述数据传输指令按照所述传输参数,将各所述第二虚拟机的缓存地址指向的数据释放至预设数据池,将各所述第二虚拟机的缓存地址指向所述内存地址所指向的数据,将所述内存地址指向所述预设数据池中的数据。

本发明实施例所提供的虚拟机间通信的装置可执行本发明任意实施例所提供的虚拟机间通信的方法,具备执行方法相应的功能模块和有益效果。

值得注意的是,上述虚拟机间通信的装置所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明实施例的保护范围。

实施例四

图7示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。

如图7所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。

电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如虚拟机间通信的方法。

在一些实施例中,虚拟机间通信的方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的虚拟机间通信的方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行虚拟机间通信的方法。

本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。

计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

相关技术
  • 桥梁花架安装作业平台
  • 一种公路工程桥梁防眩板安装作业平台
技术分类

06120116545387