CN117369951B - 虚拟机通信方法、装置、存储介质及电子设备 - Google Patents

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

Info

Publication number
CN117369951B
CN117369951B CN202311669714.7A CN202311669714A CN117369951B CN 117369951 B CN117369951 B CN 117369951B CN 202311669714 A CN202311669714 A CN 202311669714A CN 117369951 B CN117369951 B CN 117369951B
Authority
CN
China
Prior art keywords
virtual machine
memory
mapping
shared memory
space
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311669714.7A
Other languages
English (en)
Other versions
CN117369951A (zh
Inventor
陈友旭
沈标标
王鲲
陈飞
邹懋
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.)
Vita Technology Beijing Co ltd
Original Assignee
Vita Technology Beijing Co ltd
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 Vita Technology Beijing Co ltd filed Critical Vita Technology Beijing Co ltd
Priority to CN202311669714.7A priority Critical patent/CN117369951B/zh
Publication of CN117369951A publication Critical patent/CN117369951A/zh
Application granted granted Critical
Publication of CN117369951B publication Critical patent/CN117369951B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/45583Memory management, e.g. access or allocation
    • 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/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本公开涉及通信技术领域,尤其涉及一种虚拟机通信方法、装置、存储介质及电子设备,以解决虚拟机通信受限于PCI设备编号的技术问题。该虚拟机通信方法包括:在第一虚拟机存在通信需求的情况下,通过第一虚拟机将待传输数据写入第一共享内存,并根据映射关系,通过第一代理进程将第一共享内存中的待传输数据同步至第一映射内存空间,以使其它虚拟机的映射内存空间中同步存储待传输数据;根据第一虚拟机的通信需求在其它虚拟机中确定第二虚拟机,通信需求包括第二虚拟机的身份标识;通过第二虚拟机读取第二映射内存空间中的待传输数据,其中,每一虚拟机对应的映射内存空间是根据虚拟机间共享内存设备的物理地址空间映射得到的虚拟地址空间。

Description

虚拟机通信方法、装置、存储介质及电子设备
技术领域
本公开涉及于通信领域,具体地,涉及一种虚拟机通信方法、装置、存储介质及电子设备。
背景技术
在虚拟化场景中,通常基于一个宿主机(Host)创建出多个虚拟机(Guest),通过一些虚拟化技术,将宿主机上的硬件资源虚拟化成多份资源供虚拟机使用,来提升资源使用效率。通常一个宿主机上的多个虚拟机之间需要进行数据交互,常用共享内存(SharedMemory)和套接字(Socket)通信等实现。而共享内存具有较好的通信性能,广泛应用于虚拟机通信场景中。
而共享内存受限于PCI(Peripheral Component Interconnect,定义局部总线的标准)设备编号的限制,导致虚拟机难以支持多个客户端的通信,且无法支持多并发连接场景。
发明内容
本公开的目的是提供一种虚拟机通信方法、装置、存储介质及电子设备,以解决相关技术中虚拟机通信受限于PCI设备编号的技术问题。
为了实现上述目的,第一方面,本公开提供一种虚拟机通信方法,包括:
在第一虚拟机存在通信需求的情况下,通过所述第一虚拟机将待传输数据写入第一共享内存,并根据映射关系,通过第一代理进程将所述第一共享内存中的所述待传输数据同步至第一映射内存空间,以使其它虚拟机的映射内存空间中同步存储所述待传输数据,其中,所述映射关系包括所述第一共享内存的内存地址与所述第一映射内存空间的内存地址之间的映射关系,每一所述虚拟机对应一个代理进程,所述第一共享内存通过对所述第一映射内存空间进行切分处理得到;
根据所述第一虚拟机的所述通信需求在所述其它虚拟机中确定第二虚拟机,所述通信需求包括所述第二虚拟机的身份标识;
通过所述第二虚拟机读取第二映射内存空间中的所述待传输数据,其中,每一虚拟机对应的映射内存空间是根据虚拟机间共享内存设备的物理地址空间映射得到的虚拟地址空间。
可选地,所述通过所述第二虚拟机读取第二映射内存空间中的所述待传输数据,包括:
通过第二代理进程将所述第二映射内存空间中的所述待传输数据写入第二共享内存,所述第二共享内存通过对所述第二映射内存空间进行切分处理得到;
通过所述第二虚拟机读取所述第二共享内存中的所述待传输数据。
可选地,还包括:
在所述第一虚拟机与第二虚拟机通信结束的情况下,通过所述第一代理进程释放所述第一共享内存,以及通过所述第二代理进程释放所述第二共享内存。
可选地,每一虚拟机对应的共享内存的数量与所述虚拟机中的应用程序的数量一致。
可选地,每一虚拟机对应的映射内存空间通过如下方式得到:
根据所述虚拟机间共享内存设备的物理地址空间进行虚拟地址映射,得到映射内存空间,其中,所述映射内存空间的空间大小与所述物理地址空间的空间大小相同。
第二方面,本公开提供一种虚拟机通信装置,包括:
写入模块,用于在第一虚拟机存在通信需求的情况下,通过所述第一虚拟机将待传输数据写入第一共享内存,并根据映射关系,通过第一代理进程将所述第一共享内存中的所述待传输数据同步至第一映射内存空间,以使其它虚拟机的映射内存空间中同步存储所述待传输数据,其中,所述映射关系包括所述第一共享内存的内存地址与所述第一映射内存空间的内存地址之间的映射关系,每一所述虚拟机对应一个代理进程,所述第一共享内存通过对所述第一映射内存空间进行切分处理得到;
确定模块,用于根据所述第一虚拟机的所述通信需求在所述其它虚拟机中确定第二虚拟机,所述通信需求包括所述第二虚拟机的身份标识;
读取模块,用于通过所述第二虚拟机读取第二映射内存空间中的所述待传输数据,其中,每一虚拟机对应的映射内存空间是根据虚拟机间共享内存设备的物理地址空间映射得到的虚拟地址空间。
可选地,所述读取模块,用于通过第二代理进程将所述第二映射内存空间中的所述待传输数据写入第二共享内存,所述第二共享内存通过对所述第二映射内存空间进行切分处理得到;
并通过所述第二虚拟机读取所述第二共享内存中的所述待传输数据。
可选地,所述虚拟机通信装置还包括释放模块,所述释放模块用于在第一虚拟机与第二虚拟机通信结束的情况下,通过第一代理进程释放第一共享内存,以及通过第二代理进程释放第二共享内存。
第三方面,本公开提供一种非临时性计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面所述的虚拟机通信方法的步骤。
第四方面,本公开提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面所述的虚拟机通信方法的步骤。
通过上述技术方案,在第一虚拟机存在通信需求的情况下,通过第一虚拟机将待传输数据写入第一映射空间,根据第一虚拟机的通信需求在其它虚拟机中确定第二虚拟机,通过第二虚拟机读取第二映射空间中的待传输数据,每一虚拟机对应的映射内存空间是根据虚拟机间共享内存设备的物理地址空间映射得到的虚拟地址空间。将虚拟机共享内存设备的物理地址空间映射为虚拟地址空间,各个虚拟机通过虚拟地址空间进行数据传输,消除了PCI设备编号对虚拟机通信的限制。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据本公开示例性实施例示出的一种虚拟机通信方法的流程图。
图2是现有的虚拟机的通信架构图。
图3是现有的虚拟机的通信扩展架构图。
图4是现有的虚拟机的另一通信扩展架构图。
图5是根据本公开示例性实施例示出的步骤S13的流程图。
图6是根据本公开示例性实施例示出的虚拟机的通信架构图。
图7是根据本公开示例性实施例示出的虚拟机的另一通信架构图。
图8是根据本公开示例性实施例示出的一种虚拟机通信方法的另一流程图。
图9是根据本公开示例性实施例示出的一种虚拟机通信装置的框图。
图10是根据本公开示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
需要说明的是,本公开中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
正如背景技术所言,参见图2,共享内存的原理包括:在宿主机上创建出一块共享内存空间,然后将这部分共享内存分别直通进两台需要通信的虚拟机内部,作为虚拟机内的一个PCI(Peripheral Component Interconnect,定义局部总线的标准)设备,虚拟机内部的程序通过打开和映射此PCI设备的地址空间,进行数据存取,从而实现基于共享内存的虚拟机通信方案。
但每个PCI设备拥有唯一的PCI设备编号,由Bus.Device.Function三部分组成,分别占用8bits、5bits以及3bits,即一根总线上最多支持32个设备。由于虚拟机运行需要一些固定的PCI设备,例如CPU(Central Processing Unit,中央处理器)、PCI桥、系统CMOS(Complementary Metal Oxide Semiconductor,互补金属氧化物半导体)/实时时钟以及USB(Universal Serial Bus,通用串行总线)设备等,导致可供IVSHMEM(Inter-VM SharedMemory Device,虚拟机间共享内存)设备使用的PCI设备编号小于32个。
其次,在虚拟机通信场景中,通常存在一对多连接情况,即一个虚拟机作为服务端,其它多个虚拟机作为客户端。例如,在远程图像渲染场景中,客户端通常不配备GPU资源和服务端配置GPU资源,通常转发客户端中图像渲染程序的图像渲染指令至服务端执行,从而使用服务端的GPU资源来进行图像渲染,服务端将服务器中GPU渲染好的图像回传至客户端进行显示。对于服务端虚拟机而言,由于其自身的PCI设备编号限制,无法支持多个客户端的通信连接。
其次,使用IVSHEM设备对应的共享内存空间的过程中,虚拟机通信过程中的进程需要打开此IVSHMEM设备并映射到内存地址空间,对于已被任一进行打开的IVSHMEM设备,其他的进程无法再次打开并映射此IVSHMEM设备地址空间,因此即使在同一个虚拟机中,IVSHMEM设备仍无法在多进程间共享。因此在虚拟机中每新增一个有通信需求的应用程序,便需要再插入一个PCI IVSHMEM设备,同样受PCI设备编号有限,因此难以支撑多并发连接场景。
相关技术中,虚拟机通过图3和图4所示的步骤实现通信:如图3所示,首先向虚拟机插入PCI Bridge(桥)设备,模拟新的BUS(总线);如图4所示,再向新BUS上插入IVSHMEM设备,模拟一条新的PCI总线,从而增多PCI设备的数量。例如,1号虚拟机中应用程序向2号虚拟机中应用程序进行数据传输的进程,先在宿主机中插入一个IVSHMEM设备,在1号虚拟机和2号虚拟机中存在多个进程的情况下,再插入多个IVSHMEM设备。发明人发现,相关技术中在虚拟机通信过程中,一个进程对应一个IVSHMEM设备,进程数量与IVSHMEM设备数量一致,导致在复杂通信场景中即使插入32个IVSHMEM设备也不能满足虚拟机的通信需求。可确定相关技术中仍受限于PCI设备编号的限制。
有鉴于此,本公开提供一种虚拟机通信方法装置,存储介质及电子设备,各虚拟机之间通信不再受限于PCI设备编号。
图1是根据本公开示例性实施例示出的一种虚拟机通信方法的流程图,本公开实施例以该虚拟机通信方法应用于宿主机为例,该虚拟机通信方法可以包括以下步骤:
在步骤S11中,在第一虚拟机存在通信需求的情况下,通过第一虚拟机将待传输数据写入第一共享内存,并根据映射关系,通过第一代理进程将第一共享内存中的待传输数据同步至第一映射内存空间,以使其它虚拟机的映射内存空间中同步存储待传输数据,其中,映射关系包括第一共享内存的内存地址与第一映射内存空间的内存地址之间的映射关系,每一虚拟机对应一个代理进程,第一共享内存通过对第一映射内存空间进行切分处理得到。
值得说明的是,本公开实施例中,每个虚拟机分别对应一个映射内存空间,且每个映射内存空间中存储的数据信息是完全同步的。因而,第一虚拟机将待传输数据写入第一映射内存空间后,其它虚拟机的映射内存空间同步存储待传输数据。
值得说明的是,因为在虚拟机通信过程中,共享内存无法复用,而每个虚拟机中可能存在多个应用程序,因而将对应虚拟机的映射内存空间进行切分,得到多个共享内存。在多个应用程序同时进行通信时,不同的应用程序可将待传输数据写入不同的共享内存中,可支持多个应用程序同时通信。
示例地,在第一虚拟机中存在两个应用程序有通信需求时,通过第一虚拟机中的第一应用程序将第一待传输数据写入第一共享内存中,通过第一虚拟机中的第二应用程序将第二待传输数据写入第二共享内存中。
值得说明的是,每一虚拟机对应一个代理进程,该代理进程用于对共享内存与映射内存空间进行同步管理,同步操作可以包括:通知同步、定期同步、监控内存写操作同步等等。在同一个虚拟机中的多个应用程序同时进行通信时,不同的应用程序可将待传输数据写入不同的共享内存中,对应该虚拟机的代理进程将所有共享内存中的待传输数据同步至对应该虚拟机的映射空间,实现多个应用程序同时通信。
示例地,在第一虚拟机中存在两个应用程序有通信需求时,通过第一虚拟机中的第一应用程序将第一待传输数据写入第一共享内存中,通过第一虚拟机中的第二应用程序将第二待传输数据写入第二共享内存中,通过代理进程将第一共享内存中的第一待传输数据和第二共享内存中的第二待传输数据同步至第一映射空间中,以使其它虚拟机的映射内存空间中同步存储第一待传输数据和第二待传输数据。
值得说明的是,对映射内存空间进行切分处理得到共享内存,每个共享内存的内存大小可以相等也可以不相等,每个共享内存的内存地址都可映射在内存空间的内存地址上。
示例地,将映射内存空间为190M切分得到三块共享内存,依次为共享内存A、共享内存B以及共享内存C。若每个共享内存的大小都为64M的情况下,共享内存A的内存地址映射到映射空间内存空间的内存地址上的0-26位,共享内存A的内存地址映射到映射空间内存空间的内存地址上的26-52位,共享内存A的内存地址映射到映射空间内存空间的内存地址上的52-78位。
在步骤S12中,根据第一虚拟机的通信需求在其它虚拟机中确定第二虚拟机,通信需求包括第二虚拟机的身份标识。
其中,每个虚拟机对应唯一的虚拟机序列号,该虚拟机序列号可以作为虚拟机的身份标识。
在步骤S13中,通过第二虚拟机读取第二映射内存空间中的待传输数据,其中,每一虚拟机对应的映射内存空间是根据虚拟机间共享内存设备的物理地址空间映射得到的虚拟地址空间。
值得说明的是,本公开实施例中,每个虚拟机分别对应的映射内存空间均是根据同一个虚拟机间共享内存设备(IVSHMEM设备)的物理地址空间映射得到的虚拟地址空间。
本公开实施例中对映射内存空间进行切分处理得到共享内存,通过虚拟机将待传输数据写入共享内存中,通过代理进程将共享内存中的待传输数据同步至映射内存空间中。在虚拟机上多个应用程序同时存储交互需求时,可基于共享内存分别独立进行交互,支持一对多或者多对多的通信场景,无需根据进程的数量插入IVSHMEM设备,减小IVSHMEM设备数量的同时提高了虚拟机通信的扩展性,将PCI设备编号限制转换为内存限制。且基于代理进程可实现多应用程序共享一个IVSHMEM设备,从而避免了PCI设备编号限制和进程独占IVSHMEM设备的情况,提高了多连接场景通信的扩展性和可用性,通过代理进程根据共享内存与映射内存空间之间的内存地址之间的映射关系,实现共享内存与映射内存空间的数据同步,将IVSHMEM设备的物理地址空间映射为虚拟地址空间,各个虚拟机通过虚拟地址空间进行数据传输,从而消除PCI设备编号对虚拟机通信的限制,并支持多并发连接场景。
为了便于本领域技术人员更加理解本公开提供的虚拟机通信方法,下面对该虚拟机通信方法涉及的相关步骤进行详细举例说明。
在一可能的实施例中,参见图5,在步骤S13中,通过第二虚拟机读取第二映射内存空间中的待传输数据,可以包括:
在步骤S51中,通过第二代理进程将第二映射内存空间中的待传输数据写入第二共享内存,第二共享内存通过对第二映射内存空间进行切分处理得到。
值得说明的是,每一虚拟机对应一个代理进程,该代理进程用于对共享内存与映射内存空间进行同步管理,同步操作可以包括:通知同步、定期同步、监控内存写操作同步等等。
在步骤S52中,通过第二虚拟机读取第二共享内存中的待传输数据。
值得说明的是,因为在虚拟机通信过程中,共享内存无法复用,而每个虚拟机中可能存在多个应用程序,因而将对应虚拟机的映射内存空间进行切分,得到多个共享内存。在多个应用程序同时进行通信时,根据映射空间内存与共享内存的映射关系,将映射空间内中对应第一虚拟机中不同的应用程序的待传输数据写入不同的共享内存中,以供第二虚拟机中不同的应用程序读取对应的共享内存中的待传输数据。
本公开实施例对映射内存空间进行切分处理得到共享内存,通过代理进程将映射空间中的待传输数据写入共享内存中,通过虚拟机读取共享内存中的待传输数据。在虚拟机上多个应用程序同时存储交互需求时,可基于共享内存分别独立进行交互,支持一对多或者多对多的通信场景,无需根据进程的数量插入IVSHMEM设备,减小IVSHMEM设备数量的同时提高了虚拟机通信的扩展性,将PCI设备编号限制转换为内存限制。且基于代理进程可实现多应用程序共享一个IVSHMEM设备,从而避免了PCI设备编号限制和进程独占IVSHMEM设备的情况,提高了多连接场景通信的扩展性和可用性。
在一可能的实施例中,每一虚拟机对应的共享内存的数量与虚拟机中的应用程序的数量一致。
值得说明的是,每一虚拟机对应的共享内存的数量可以与虚拟机中的应用程序的数量一致,也可以大于虚拟机中的应用程序的数量,从而保证在不同虚拟机上的多个应用程序同时存储交互需求时,可基于共享内存分别独立进行交互。
在一可能的实施例中,每一虚拟机对应的映射内存空间可以通过如下方式得到:
根据虚拟机间共享内存设备的物理地址空间进行虚拟地址映射,得到映射内存空间,其中,映射内存空间的空间大小与物理地址空间的空间大小相同。
值得说明的是,针对每个虚拟机,可根据同一个IVSHMEM设备的物理地址空间进行虚拟地址映射,得到对应的映射内存空间,且映射内存空间的空间大小与物理地址空间的空间大小相同,即将物理地址空间的PCI设备编号数量限制转换为映射内存空间的内存大小限制,从而消除PCI设备对虚拟机通信的限制。且虚拟机中多个应用程序可通过一个IVSHMEM设备实现通信,无需插入多个IVSHMEM设备,从而减少通信过程中涉及的硬件数量,间接减小通信成本。
在一可能的实施例中,虚拟机通信方法还可以包括:
在第一虚拟机与第二虚拟机通信结束的情况下,通过第一代理进程释放第一共享内存,以及通过第二代理进程释放第二共享内存。
值得说明的是,在两个虚拟机之间通信结束的情况下,对两个虚拟机通信过程中占用的共享内存进行释放,避免进程一直占用其通信过程中使用过得共享内存占用,释放虚拟内存的存储空间,从而避免内存资源的浪费。
在一可能的实施例中,参见图6,本公开示例性实施例示出的基于代理进程的虚拟机通信架构可包括:宿主机,1号虚拟机和2号虚拟机,1号虚拟机通过宿主机中的共享内存与2号虚拟机通信。
其中,1号虚拟机和2号虚拟机中分别包括应用程序,代理进程和PCI设备。代理进程包括通信模块,进程管理模块和内存管理模块,通信模块与应用程序通信连接;通信模块用于在应用程序有通信需求时通知内存管理模块创建共享内存,并在应用程序写入的待传输数据时,调用共享内存地址空间对待传输数据进行存储;进程管理模块用于记录PCI设备的进程信息。内存管理模块包括共享内存模块,内存同步模块以及内存映射模块;共享内存模块用于切分映射内存空间,得到对应应用程序的共享内存;内存同步模块用于将共享内存中的待传输数据同步至映射内存空间;内存映射模块用于将PCI设备的物理地址空间映射为虚拟地址空间,得到映射内存空间。
在一可能的实施例中,参见图7,本公开示例性实施例示出一种基于代理进程的虚拟机通信架构的数据传输路径:
1号虚拟机中第一应用程序有通信需求,该通信需求中包括2号虚拟机中第二应用程序的身份标识,通过1号虚拟机中第一应用程序将待传输数据,写入1号虚拟机中的第一共享内存,通过1号虚拟机中的代理进程将第一共享内存中的待传输数据同步至1号虚拟机中的映射内存空间,同时2号虚拟机中的映射内存空间中同步存储有待传输数据,通过2号虚拟机中的代理进程将待传输数据写入2号虚拟机中的第二共享内存中,通过2号虚拟机中的第二应用程序从2号虚拟机中的第二共享内存中读取待传输数据,实现1号虚拟机中第一应用程序与2号虚拟机中第二应用程序的通信。
在一可能的实施例中,参见图8,本公开实施例提供的虚拟机通信方法还可以包括以下步骤:
在步骤S81中,在第一虚拟机存在通信需求的情况下,通过第一虚拟机将待传输数据写入第一共享内存,第一共享内存通过对第一映射内存空间进行切分处理得到。
在步骤S82中,通过第一代理进程将第一共享内存中的待传输数据同步至第一映射内存空间,以使其它虚拟机的映射内存空间中同步存储待传输数据。
在步骤S83中,根据第一虚拟机的通信需求在其它虚拟机中确定第二虚拟机,通信需求包括第二虚拟机的身份标识。
在步骤S84中,通过第二代理进程将第二映射内存空间中的待传输数据写入第二共享内存,第二共享内存通过对第二映射内存空间进行切分处理得到。
在步骤S85中,通过第二虚拟机读取第二共享内存中的待传输数据,其中,每一虚拟机对应的映射内存空间是根据虚拟机间共享内存设备的物理地址空间映射得到的虚拟地址空间。
在步骤S86中,在第一虚拟机与第二虚拟机通信结束的情况下,通过第一代理进程释放第一共享内存,以及通过第二代理进程释放第二共享内存。
本公开实施例将IVSHMEM设备的物理地址空间映射为虚拟地址空间,各个虚拟机通过虚拟地址空间切分进行数据传输,消除了PCI设备编号对虚拟机通信的限制。在虚拟机上多个应用程序同时存储交互需求时,可基于共享内存分别独立进行交互,支持一对多或者多对多的通信场景,无需根据进程的数量插入IVSHMEM设备,减小IVSHMEM设备数量的同时提高了虚拟机通信的扩展性,将PCI设备编号限制转换为内存限制。在两个虚拟机之间通信结束的情况下,对两个虚拟机同过程中占用的共享内存进行释放,避免进程一直占用其通信过程中使用过得共享内存占用,释放虚拟内存的存储空间,从而避免内存资源的浪费。
基于同样的发明构思,本公开还提供一种虚拟机通信装置,参见图9,该虚拟机通信装置可以包括写入模块91、确定模块92以及读取模块93。
其中,写入模块91,用于在第一虚拟机存在通信需求的情况下,通过第一虚拟机将待传输数据写入第一共享内存,并根据映射关系,通过第一代理进程将所述第一共享内存中的所述待传输数据同步至第一映射内存空间,以使其它虚拟机的映射内存空间中同步存储待传输数据,其中,所述映射关系包括所述第一共享内存的内存地址与所述第一映射内存空间的内存地址之间的映射关系,每一所述虚拟机对应一个代理进程,所述第一共享内存通过对所述第一映射内存空间进行切分处理得到;
确定模块92,用于根据第一虚拟机的通信需求在其它虚拟机中确定第二虚拟机,通信需求包括第二虚拟机的身份标识;
读取模块93,用于通过第二虚拟机读取第二映射内存空间中的待传输数据,其中,每一虚拟机对应的映射内存空间是根据虚拟机间共享内存设备的物理地址空间映射得到的虚拟地址空间。
本公开实施例中将IVSHMEM设备的物理地址空间映射为虚拟地址空间,各个虚拟机通过虚拟地址空间进行数据传输,从而消除PCI设备编号对虚拟机通信的限制,并支持多并发连接场景。
可选地,读取模块93用于通过第二代理进程将第二映射内存空间中的待传输数据写入第二共享内存,第二共享内存通过对第二映射内存空间进行切分处理得到;
并通过第二虚拟机读取第二共享内存中的待传输数据。
可选地,该虚拟机通信装置还可以包括释放模块,释放模块用于在第一虚拟机与第二虚拟机通信结束的情况下,通过第一代理进程释放第一共享内存,以及通过第二代理进程释放第二共享内存。
可选地,每一虚拟机对应的共享内存的数量与虚拟机中的应用程序的数量一致。
可选地,该虚拟机通信装置还可以包括映射模块,映射模块用于根据虚拟机间共享内存设备的物理地址空间进行虚拟地址映射,得到映射内存空间,其中,映射内存空间的空间大小与物理地址空间的空间大小相同。
关于上述实施例中的虚拟机通信装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
基于同样的发明构思,本公开还提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行存储器中的计算机程序,以实现上述虚拟机通信方法的步骤。
本公开实施例中将IVSHMEM设备的物理地址空间映射为虚拟地址空间,各个虚拟机通过虚拟地址空间进行数据传输,从而消除PCI设备编号对虚拟机通信的限制,并支持多并发连接场景。
图10是根据一示例性实施例示出的一种电子设备100的框图。如图10所示,该电子设备100可以包括:处理器1001,存储器1002。该电子设备100还可以包括多媒体组件1003,输入/输出(I/O)接口1004,以及通信组件1005中的一者或多者。
其中,处理器1001用于控制该电子设备100的整体操作,以完成上述的虚拟机通信方法中的全部或部分步骤。存储器1002用于存储各种类型的数据以支持在该电子设备100的操作,这些数据例如可以包括用于在该电子设备100上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器1002可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件1003可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1002或通过通信组件1005发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口1004为处理器1001和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件1005用于该电子设备100与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件1005可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备100可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的虚拟机通信方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的虚拟机通信方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器1002,上述程序指令可由电子设备100的处理器1001执行以完成上述的虚拟机通信方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的虚拟机通信方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

Claims (8)

1.一种虚拟机通信方法,其特征在于,包括:
在第一虚拟机存在通信需求的情况下,通过所述第一虚拟机将待传输数据写入第一共享内存,并根据映射关系,通过第一代理进程将所述第一共享内存中的所述待传输数据同步至第一映射内存空间,以使其它虚拟机的映射内存空间中同步存储所述待传输数据,其中,所述映射关系包括所述第一共享内存的内存地址与所述第一映射内存空间的内存地址之间的映射关系,每一所述虚拟机对应一个代理进程,所述第一共享内存通过对所述第一映射内存空间进行切分处理得到;
根据所述第一虚拟机的所述通信需求在所述其它虚拟机中确定第二虚拟机,所述通信需求包括所述第二虚拟机的身份标识;
通过所述第二虚拟机读取第二映射内存空间中的所述待传输数据,其中,每一虚拟机对应的映射内存空间是根据虚拟机间共享内存设备的物理地址空间映射得到的虚拟地址空间;
所述通过所述第二虚拟机读取第二映射内存空间中的所述待传输数据,包括:
通过第二代理进程将所述第二映射内存空间中的所述待传输数据写入第二共享内存,所述第二共享内存通过对所述第二映射内存空间进行切分处理得到;
通过所述第二虚拟机读取所述第二共享内存中的所述待传输数据。
2.根据权利要求1所述的虚拟机通信方法,其特征在于,还包括:
在所述第一虚拟机与第二虚拟机通信结束的情况下,通过所述第一代理进程释放所述第一共享内存,以及通过所述第二代理进程释放所述第二共享内存。
3.根据权利要求1所述的虚拟机通信方法,其特征在于,每一虚拟机对应的共享内存的数量与所述虚拟机中的应用程序的数量一致。
4.根据权利要求1所述的虚拟机通信方法,其特征在于,每一虚拟机对应的映射内存空间通过如下方式得到:
根据所述虚拟机间共享内存设备的物理地址空间进行虚拟地址映射,得到映射内存空间,其中,所述映射内存空间的空间大小与所述物理地址空间的空间大小相同。
5.一种虚拟机通信装置,其特征在于,包括:
写入模块,用于在第一虚拟机存在通信需求的情况下,通过所述第一虚拟机将待传输数据写入第一共享内存,并根据映射关系,通过第一代理进程将所述第一共享内存中的所述待传输数据同步至第一映射内存空间,以使其它虚拟机的映射内存空间中同步存储所述待传输数据,其中,所述映射关系包括所述第一共享内存的内存地址与所述第一映射内存空间的内存地址之间的映射关系,每一所述虚拟机对应一个代理进程,所述第一共享内存通过对所述第一映射内存空间进行切分处理得到;
确定模块,用于根据所述第一虚拟机的所述通信需求在所述其它虚拟机中确定第二虚拟机,所述通信需求包括所述第二虚拟机的身份标识;
读取模块,用于通过所述第二虚拟机读取第二映射内存空间中的所述待传输数据,其中,每一虚拟机对应的映射内存空间是根据虚拟机间共享内存设备的物理地址空间映射得到的虚拟地址空间;
所述读取模块,用于通过第二代理进程将所述第二映射内存空间中的所述待传输数据写入第二共享内存,所述第二共享内存通过对所述第二映射内存空间进行切分处理得到;
并通过所述第二虚拟机读取所述第二共享内存中的所述待传输数据。
6.根据权利要求5所述的虚拟机通信装置,其特征在于,所述虚拟机通信装置还包括释放模块,所述释放模块用于在第一虚拟机与第二虚拟机通信结束的情况下,通过第一代理进程释放第一共享内存,以及通过第二代理进程释放第二共享内存。
7.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-4中任一项所述方法的步骤。
8.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-4中任一项所述方法的步骤。
CN202311669714.7A 2023-12-06 2023-12-06 虚拟机通信方法、装置、存储介质及电子设备 Active CN117369951B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311669714.7A CN117369951B (zh) 2023-12-06 2023-12-06 虚拟机通信方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311669714.7A CN117369951B (zh) 2023-12-06 2023-12-06 虚拟机通信方法、装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN117369951A CN117369951A (zh) 2024-01-09
CN117369951B true CN117369951B (zh) 2024-03-15

Family

ID=89404449

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311669714.7A Active CN117369951B (zh) 2023-12-06 2023-12-06 虚拟机通信方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN117369951B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110928646A (zh) * 2019-11-22 2020-03-27 海光信息技术有限公司 一种访问共享内存的方法、装置、处理器和计算机系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8392628B2 (en) * 2010-07-16 2013-03-05 Hewlett-Packard Development Company, L.P. Sharing memory spaces for access by hardware and software in a virtual machine environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110928646A (zh) * 2019-11-22 2020-03-27 海光信息技术有限公司 一种访问共享内存的方法、装置、处理器和计算机系统

Also Published As

Publication number Publication date
CN117369951A (zh) 2024-01-09

Similar Documents

Publication Publication Date Title
US10949158B2 (en) Screenshot method and apparatus
CN107077377B (zh) 一种设备虚拟化方法、装置、系统及电子设备、计算机程序产品
US10686755B2 (en) Assigning IP addresses and configuration parameters in hyper-converged infrastructure
US20140289414A1 (en) Api for resource discovery and utilization
US11853767B2 (en) Inter-core data processing method, system on chip and electronic device
EP3693853B1 (en) Method and device for scheduling acceleration resources, and acceleration system
CN110945475A (zh) 用于提供可打补丁的rom固件的系统和方法
CN104268229A (zh) 一种基于多进程浏览器的资源获得方法及装置
CN109656844A (zh) 一种AT24xx EEPROM驱动方法和装置
JP2019509547A (ja) Gpuリソース再構築方法、ユーザー・デバイス、システム及び記憶媒体
CN116320469A (zh) 一种虚拟化视频编解码系统及方法、电子设备和存储介质
CN112787795A (zh) 云服务器时钟同步方法、计算机存储介质及电子设备
CN117369951B (zh) 虚拟机通信方法、装置、存储介质及电子设备
US11252457B2 (en) Multimedia streaming and routing apparatus and operation method of the same
CN108153564B (zh) 界面管理方法、设备及系统和计算机可读存储介质
CN109656674B (zh) 一种计算机设备、虚拟化芯片及数据传输方法
CN115629809A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
CN115358331A (zh) 设备类型识别方法及装置、计算机可读存储介质、终端
CN114564241A (zh) 硬件设备的访问方法、装置、计算机设备和存储介质
CN111813407A (zh) 游戏开发方法、游戏运行方法、装置和电子设备
CN116680277B (zh) 信息核验方法、装置、设备及存储介质
US20200403887A1 (en) Method for managing software service, and server
CN109976876B (zh) 加速器管理方法和装置
CN111930849B (zh) 数据同步方法、装置及存储介质
US20230350676A1 (en) Tensor Processing Method, Apparatus, and Device, and Computer-Readable Storage Medium

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant