CN113778611A - 数据传输方法、装置、系统及存储介质 - Google Patents

数据传输方法、装置、系统及存储介质 Download PDF

Info

Publication number
CN113778611A
CN113778611A CN202110762042.9A CN202110762042A CN113778611A CN 113778611 A CN113778611 A CN 113778611A CN 202110762042 A CN202110762042 A CN 202110762042A CN 113778611 A CN113778611 A CN 113778611A
Authority
CN
China
Prior art keywords
target data
data
shared memory
processor
memory area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110762042.9A
Other languages
English (en)
Other versions
CN113778611B (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.)
Ruijie Network Suzhou Co ltd
Original Assignee
Ruijie Network Suzhou 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 Ruijie Network Suzhou Co ltd filed Critical Ruijie Network Suzhou Co ltd
Priority to CN202110762042.9A priority Critical patent/CN113778611B/zh
Publication of CN113778611A publication Critical patent/CN113778611A/zh
Application granted granted Critical
Publication of CN113778611B publication Critical patent/CN113778611B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请实施例提供一种数据传输方法、装置、系统及存储介质,其中,该方法包括:虚拟机的操作系统获取第一应用程序的目标数据,以及对目标数据进行封装,得到目标数据包,并将目标数据包发送至虚拟PCI设备;虚拟PCI设备对目标数据包进行解封装以获取目标数据,以及将目标数据发送给宿主机的处理器;处理器将目标数据存储至宿主机的内存中共享内存区域,并通知第二应用程序从共享内存区域中获取目标数据进行数据处理。本申请实施例提供的技术方案能够提高虚拟机与宿主机之间的数据传输效率。

Description

数据传输方法、装置、系统及存储介质
技术领域
本申请实施例涉及计算机应用技术领域,尤其涉及一种数据传输方法、装置、系统及存储介质。
背景技术
虚拟机(Virtual Machine)是指在宿主机上通过软件模拟出来的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
实际应用中,虚拟机10与宿主机20之间存在数据传输需求。图1示出了相关技术中的一种基于桥接模式的数据传输系统架构图。参见图1,在桥接模式下,数据传输系统包括虚拟网卡12、虚拟交换机13、物理网卡21,虚拟网卡12与虚拟交换机13通信连接,虚拟交换机13与物理网卡21通信连接。虚拟网卡12还与虚拟机的操作系统11通信连接,物理网卡21还与宿主机20中的处理器通信连接。其中,虚拟网卡12、虚拟交换机13为虚拟机10中的虚拟设备,物理网卡21为宿主机20中的真实设备。
以虚拟机向宿主机发送数据为例,参见图1,针对运行于虚拟机的操作系统11上的第一应用程序待传输的目标数据,虚拟机的操作系统11首先对待传输的目标数据进行封装以得到第一数据包,并将第一数据包发送给虚拟网卡12;虚拟网卡12对第一数据包进行解封装,若根据第一数据包的解封装结果确定需要发送给虚拟交换机13时,虚拟网卡12对第一数据包的解封装结果再次进行封装,得到第二数据包,并将第二数据包发送给虚拟交换机13;虚拟交换机13对第二数据包进行解封装,若根据第二数据包的解封装结果确定需要发送给物理网卡21时,虚拟交换机13对第二数据包的解封装结果再次进行封装,得到第三数据包,并将第三数据包发送给宿主机20中的物理网卡21;物理网卡21对第三数据包进行解封装,并将第三数据包的解封装结果发送给宿主机中的处理器22,处理器22将第三数据包的解封装结果发送给运行在宿主机20上的第二应用程序进行数据处理。
显然,虚拟机10与宿主机20之间在桥接模式下进行数据传输时,需要进行多次的数据封装和解封装,数据传输路径较长,数据传输占用的资源较多,数据传输效率较低。
发明内容
本申请实施例提供一种数据传输方法、装置、系统及存储介质,用以提高虚拟机与宿主机之间的数据传输效率。
第一方面,本申请实施例中提供了一种数据传输方法,包括:
虚拟机的操作系统获取第一应用程序的目标数据,以及对所述目标数据进行封装,得到目标数据包,并将所述目标数据包发送至虚拟PCI设备;
所述虚拟PCI设备对所述目标数据包进行解封装以获取所述目标数据,以及将所述目标数据发送给宿主机的处理器;
所述处理器将所述目标数据存储至所述宿主机的内存中共享内存区域,并通知第二应用程序从所述共享内存区域中获取所述目标数据进行数据处理。
第二方面,本申请实施例提供了一种数据传输方法,包括:
虚拟机中的虚拟PCI设备获取所述虚拟机的操作系统发送的目标数据包;
对所述目标数据包进行解封装以获取所述目标数据,以及将所述目标数据发送给宿主机的处理器,以使所述处理器将所述目标数据存储至所述宿主机的内存中共享内存区域,并通知第二应用程序从所述共享内存区域中获取所述目标数据进行数据处理;
其中,所述目标数据包是所述虚拟机的操作系统对第一应用程序的目标数据进行封装得到的。
第三方面,本申请实施例提供了一种数据传输方法,包括:
宿主机的处理器获取虚拟机中的虚拟PCI设备发送的目标数据;
将所述目标数据存储至所述宿主机的内存中共享内存区域,并通知第二应用程序从所述共享内存区域中获取所述目标数据进行数据处理;
其中,所述目标数据是所述虚拟PCI设备对虚拟机的操作系统发送的目标数据包解封装得到的,且所述目标数据包是所述虚拟机的操作系统对第一应用程序的目标数据进行封装得到的。
第四方面,本申请实施例提供了一种数据传输装置,包括:
获取模块,用于获取所述虚拟机的操作系统发送的目标数据包;
处理模块,用于对所述目标数据包进行解封装以获取所述目标数据,以及将所述目标数据发送给宿主机的处理器,以使所述处理器将所述目标数据存储至所述宿主机的内存中共享内存区域,并通知第二应用程序从所述共享内存区域中获取所述目标数据进行数据处理;
其中,所述目标数据包是所述虚拟机的操作系统对第一应用程序的目标数据进行封装得到的。
第五方面,本申请实施例提供了一种据传输系统,包括:虚拟机和宿主机;所述虚拟机至少包括虚拟机的操作系统和虚拟PCI设备;所述宿主机至少包括处理器和内存;
所述虚拟机的操作系统,用于获取第一应用程序的目标数据,以及对所述目标数据进行封装,得到目标数据包,并将所述目标数据包发送至虚拟PCI设备;
所述虚拟PCI设备,用于对所述目标数据包进行解封装以获取所述目标数据,以及将所述目标数据发送给宿主机的处理器;
所述处理器,用于将所述目标数据存储至所述宿主机的内存中共享内存区域,并通知第二应用程序从所述共享内存区域中获取所述目标数据进行数据处理。
第六方面,本申请实施例提供了一种计算机存储介质,存储有计算机程序,所述计算程序被计算机执行时,实现上述数据传输方法中的步骤。
本申请实施例,在虚拟机向宿主机发送数据时,首先由虚拟机的操作系统获取第一应用程序的目标数据,并对目标数据进行封装,得到目标数据包,并将目标数据包发送至虚拟PCI设备。接着,虚拟PCI设备对目标数据包进行解封装以获取目标数据,以及将目标数据发送给宿主机的处理器;处理器将目标数据存储至宿主机的内存中共享内存区域,并通知第二应用程序从共享内存区域中获取目标数据进行数据处理。由此,在虚拟机向宿主机发送数据时,极大地减少了数据封装和解封装次数,数据传输路径较短,数据传输占用的资源较少,数据传输效率较高。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了相关技术中的一种基于桥接模式的数据传输系统架构图;
图2示出了根据本申请一个实施例的数据传输系统架构图;
图3示出了根据本申请一个实施例的数据传输方法的流程图;
图4示出了根据本申请另一个实施例的数据传输方法的流程图;
图5示出了根据本申请另一个实施例的数据传输方法的流程图;
图6示出了根据本申请一个实施例的数据传输装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
现有技术中,虚拟机与宿主机之间在桥接模式下进行数据传输时,需要进行多次的数据封装和解封装,数据传输路径较长,数据传输占用的资源较多,数据传输效率较低。
因此,针对上述技术问题,参见图2,本申请实施例中,虚拟机10至少包括虚拟机的操作系统11和虚拟PCI(Peripheral Component Interconnect,外设组件互连标准)设备14,宿主机20至少包括处理器22和内存23。虚拟机的操作系统11与虚拟PCI设备14通信连接,虚拟PCI设备14与处理器22通信连接,处理器22与内存23通信连接。
在虚拟机向宿主机发送数据时,首先由虚拟机的操作系统获取第一应用程序的目标数据,并对目标数据进行封装,得到目标数据包,并将目标数据包发送至虚拟PCI设备。接着,虚拟PCI设备对目标数据包进行解封装以获取目标数据,以及将目标数据发送给宿主机的处理器;处理器将目标数据存储至宿主机的内存中共享内存区域,并通知第二应用程序从共享内存区域中获取目标数据进行数据处理。由此,在虚拟机向宿主机发送数据时,极大地减少了数据封装和解封装次数,数据传输路径较短,数据传输占用的资源较少,数据传输效率较高。
另外,基于图2所示的系统,宿主机也可以向虚拟机发送数据。例如,宿主机获取第二应用程序对目标数据进行数据处理得到的目标数据处理结果;向虚拟PCI设备发送目标数据处理结果。虚拟PCI设备接收到目标数据处理结果之后,将目标数据处理结果发送给虚拟机的操作系统,以使虚拟机的操作系统将目标数据处理结果返回给运行在虚拟机的操作系统上的第一应用程序。
为了便于理解,以第一应用程序为虚拟机侧的渲染APP,第二应用程序为宿主机侧的渲染APP为例。虚拟机侧的渲染APP可以将渲染素材通过虚拟PCI设备传输给宿主机,宿主机侧的渲染APP可以直接使用渲染素材,得到渲染结果;并将渲染结果通过虚拟PCI设备回传给虚拟机侧的渲染APP,从而实现对虚拟机渲染功能的支持,提高虚拟机渲染的效率。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图3示出了根据本申请一个实施例的数据传输方法的流程图。该数据传输方法可以包括以下几个步骤:
301、虚拟机的操作系统获取第一应用程序的目标数据,以及对目标数据进行封装,得到目标数据包,并将目标数据包发送至虚拟PCI设备。
为了便于理解和区分,将虚拟机的操作系统上运行的应用程序称之为第一应用程序;将宿主机上运行的应用程序称之为第二应用程序。
在需要将第一应用程序的数据发送给宿主机上的第二应用程序使用时,虚拟机的操作系统可以调用设备驱动程序(Device Driver)对第一应用程序的目标数据进行封装,以及通过设备驱动程序将封装得到的目标数据包发送给虚拟PCI设备。
实际应用中,为了使得虚拟PCI设备快速获知是否需要将第一应用程序的目标数据发送至宿主机,可以在目标数据包中封装目标数据的数据操作指令,以便虚拟PCI设备基于数据操作指令对目标数据包进行快速操作。
因此,在一些实施例中,虚拟机的操作系统对目标数据进行封装,得到目标数据包具体可以是:虚拟机的操作系统确定目标数据的数据操作指令;虚拟机的操作系统采用预设的数据封装格式对目标数据的数据操作指令和目标数据进行封装,得到目标数据包。
实际应用中,可以利用基于现有的数据传输协议规定的数据封装格式对数据进行封装,也可以自定义数据封装格式。
在一些实施例中,数据封装格式可以包括以下至少一个字段:操作码字段、数据长度字段、数据对象字段以及数据主体字段,当然,可以数据封装格式根据实际业务需求进行定义。为了便于理解,以表1所示的数据封装格式进行说明。
表1
操作码 数据长度 数据对象 数据主体
其中,操作码字段的字段值用于写入针对数据主体的数据操作指令。
例如,操作码字段的字段值为0X1010时,0X1010操作码指示数据发送指令;操作码字段的字段值为0X1020时,0X1020操作码指示数据接收指令;操作码字段的字段值为0X1030时,0X1030操作码指示写入屏障以隔离两帧数据;操作码字段的字段值为0X1040时,0X1040操作码指示获取虚拟PCI设备的当前工作状态;操作码字段的字段值为0X1050时,0X1050操作码指示强制产生中断以处理紧急数据。
在一些实施例中,若数据封装格式至少包括操作码字段和数据主体字段;
虚拟机的操作系统采用预设的数据封装格式对目标数据的数据操作指令和目标数据进行封装,得到目标数据包可以是:将目标数据的数据操作指令填充至操作码字段的字段值中,以及将目标数据填充至数据主体字段的字段值中,以得到目标数据包。
在一些实施例中,数据封装格式还包括以下中至少一个:数据长度字段和数据对象字段;得到目标数据包可以是:将目标数据的数据操作指令填充至操作码字段的字段值中,以及将目标数据填充至数据主体字段的字段值中,将目标数据的数据长度填充至数据长度字段的字段值中,和/或,将第一应用程序的标识填充至数据对象字段的字段值中,以得到目标数据包。
302、虚拟PCI设备对目标数据包进行解封装以获取目标数据,以及将目标数据发送给宿主机的处理器。
虚拟PCI设备获取虚拟机的操作系统发送的目标数据包之后,可以对目标数据包进行解封装,并从解封装结果中提取目标数据,并将目标数据发送至宿主机的处理器。
实际应用中,虚拟PCI设备可以调用协议处理程序对目标数据进行解封装。其中,协议处理程序是按照数据封装格式编写的程序,能够按照数据封装格式对目标数据进行解封装。关于虚拟PCI设备如何进行解封装可以参见后文介绍。
303、处理器将目标数据存储至宿主机的内存中共享内存区域,并通知第二应用程序从共享内存区域中获取目标数据进行数据处理。
其中,共享内存区域为根据实际业务需求在内存中选定的一个区域,专门用于存储虚拟机与宿主机的交互数据。
具体而言,宿主机可以通过通信接口获取虚拟PCI设备发送的目标数据,以及确定使用该目标数据进行数据处理的第二应用程序,并向第二应用程序发送通知信息,以通知第二应用程序从共享内存区域中获取目标数据进行数据处理。
本申请实施例中,在虚拟机向宿主机发送数据时,首先由虚拟机的操作系统获取第一应用程序的目标数据,并对目标数据进行封装,得到目标数据包,并将目标数据包发送至虚拟PCI设备。接着,虚拟PCI设备对目标数据包进行解封装以获取目标数据,以及将目标数据发送给宿主机的处理器;处理器将目标数据存储至宿主机的内存中共享内存区域,并通知第二应用程序从共享内存区域中获取目标数据进行数据处理。由此,在虚拟机向宿主机发送数据时,极大地减少了数据封装和解封装次数,数据传输路径较短,数据传输占用的资源较少,数据传输效率较高。
图4示出了根据本申请另一个实施例的数据传输方法的流程图。该方法的执行主体为虚拟PCI设备。参见图4,该数据传输方法可以包括以下几个步骤:
401、获取虚拟机的操作系统发送的目标数据包。
其中,目标数据包是虚拟机的操作系统对第一应用程序的目标数据进行封装得到的。
关于虚拟机的操作系统如何封装目标数据包的介绍参见前述内容,在此不再赘述。
402、对目标数据包进行解封装以获取目标数据,以及将目标数据发送给宿主机的处理器,以使处理器将目标数据存储至宿主机的内存中共享内存区域,并通知第二应用程序从共享内存区域中获取目标数据进行数据处理。
实际应用中,虚拟PCI设备可以调用协议处理程序对目标数据进行解封装。其中,协议处理程序是按照数据封装格式编写的程序,能够按照数据封装格式对目标数据进行解封装。
本申请实施例中,在虚拟机向宿主机发送数据时,首先由虚拟机的操作系统获取第一应用程序的目标数据,并对目标数据进行封装,得到目标数据包,并将目标数据包发送至虚拟PCI设备。接着,虚拟PCI设备对目标数据包进行解封装以获取目标数据,以及将目标数据发送给宿主机的处理器;处理器将目标数据存储至宿主机的内存中共享内存区域,并通知第二应用程序从共享内存区域中获取目标数据进行数据处理。由此,在虚拟机向宿主机发送数据时,极大地减少了数据封装和解封装次数,数据传输路径较短,数据传输占用的资源较少,数据传输效率较高。
在一些实施例中,若数据封装格式定义在数据主体字段的字段值写入数据主体,则虚拟PCI设备对目标数据包进行解封装以获取目标数据可以是:采用预设的数据封装格式对目标数据包进行解封装,得到解封装结果;提取解封装结果中数据主体字段的字段值,以获取目标数据。
实际应用中,虚拟机的操作系统向虚拟PCI设备发送的数据可能需要发送给宿主机,也可能不需要发送给宿主机。
因此,在一些实施例中,为了提高虚拟机与宿主机之间数据传输的效率,数据封装格式可以定义操作码字段,虚拟PCI设备基于解封装结果中的操作码字段的字段值,快速判断是否需要启动向宿主机传输数据的操作。示例的,虚拟PCI设备将目标数据发送给宿主机的处理器具体是:若解封装结果中操作码字段的字段值为数据发送指令,将目标数据发送给宿主机的处理器。
实际应用中,随着时间推移,共享内存区域存储的数据越来越多,共享内存区域的当前可用存储容量可能无法满足待存储的目标数据所需的存储容量,进而导致目标数据存储失败,影响数据传输的可靠性。
因此,在一些实施例中,为了保证数据传输的可靠性,
若解封装结果中操作码字段的字段值为数据发送指令,虚拟PCI设备将目标数据发送给宿主机的处理器具体是:若解封装结果中操作码字段的字段值为数据发送指令,根据解封装结果中数据长度字段的字段值,确定存储目标数据所需的存储容量;判断共享内存区域的当前可用存储容量是否大于存储目标数据所需的存储容量;若共享内存区域的当前可用存储容量大于存储目标数据所需的存储容量,执行将目标数据发送给宿主机的处理器的步骤。
在一些实施例中,若共享内存区域的当前可用存储容量不大于存储目标数据所需的存储容量,虚拟PCI设备还可以向宿主机的处理器发送扩充请求,以使处理器扩充共享内存区域当前可用的存储容量。
需要指的是,处理器在接收到扩充请求时,可以判断共享内存区域当前存储的数据是否被宿主机上的应用程序读取,若被宿主机上的应用程序读取,则处理器可以清空共享内存区域中的数据已实现容量扩充。或者,若判断出共享内存区域当前存储的数据尚未被宿主机上的应用程序读取,则处理器通知宿主机上的应用程序读取,并在当前存储的数据被宿主机上的应用程序读取后,处理器可以清空共享内存区域中的数据已实现容量扩充。
可选的,若共享内存区域的当前可用存储容量不大于存储目标数据所需的存储容量,虚拟PCI设备还可以将目标数据进行分块,得到至少两个数据块;从至少两个数据块中选择至少一个数据块,其中,至少一个数据块所需的存储容量不大于共享内存区域的当前可用存储容量;向处理器发送至少一个数据块和扩充请求,以使处理器将至少一个数据块存储至共享内存区域中,并在第二应用程序读取共享内存区域中的至少一个数据块之后,清空共享内存区域中的数据以扩充共享内存区域的当前可用存储容量;响应处理器基于扩充请求返回的扩充响应,虚拟PCI设备从剩余的数据块中选择至少一个数据块,并向处理器发送至少一个数据块和扩充请求,直至全部的数据块发送完毕,其中,扩充响应用于指示共享内存区域的当前可用存储容量。
图5示出了根据本申请另一个实施例的数据传输方法的流程图。该方法的执行主体为虚拟PCI设备。参见图5,该数据传输方法可以包括以下几个步骤:
501、宿主机的处理器获取虚拟机中的虚拟PCI设备发送的目标数据。
其中,目标数据是虚拟PCI设备对虚拟机的操作系统发送的目标数据包解封装得到的,且目标数据包是虚拟机的操作系统对第一应用程序的目标数据进行封装得到的。
502、将目标数据存储至宿主机的内存中共享内存区域,并通知第二应用程序从共享内存区域中获取目标数据进行数据处理。
具体的,处理器可通过与虚拟PCI设备通信连接的通信接口获取虚拟PCI设备发送的目标数据。
若虚拟PCI设备在发送目标数据的同时,还向处理器发送了数据对象标识。该数据对象标识可以标识目标数据的提供方,处理器基于数据对象标识确定接收目标数据的接收方,也即确定使用目标数据进行数据处理的第二应用程序,并通知第二应用程序从共享内存区域中获取目标数据进行数据处理。
本申请实施例中,在虚拟机向宿主机发送数据时,首先由虚拟机的操作系统获取第一应用程序的目标数据,并对目标数据进行封装,得到目标数据包,并将目标数据包发送至虚拟PCI设备。接着,虚拟PCI设备对目标数据包进行解封装以获取目标数据,以及将目标数据发送给宿主机的处理器;处理器将目标数据存储至宿主机的内存中共享内存区域,并通知第二应用程序从共享内存区域中获取目标数据进行数据处理。由此,在虚拟机向宿主机发送数据时,极大地减少了数据封装和解封装次数,数据传输路径较短,数据传输占用的资源较少,数据传输效率较高。
在一些实施例中,宿主机还可以向虚拟机发送数据。具体的,宿主机获取第二应用程序对目标数据进行数据处理得到的目标数据处理结果;向虚拟PCI设备发送目标数据处理结果。虚拟PCI设备接收到目标数据处理结果之后,将目标数据处理结果发送给虚拟机的操作系统,以使虚拟机的操作系统将目标数据处理结果返回给运行在虚拟机的操作系统上的第一应用程序。
为了便于理解,以第一应用程序为虚拟机侧的渲染APP,第二应用程序为宿主机侧的渲染APP为例。虚拟机侧的渲染APP可以将渲染素材直接传输给宿主机,宿主机侧的渲染APP可以直接使用渲染素材,得到渲染结果;并将渲染结果回传给虚拟机侧的渲染APP,从而实现对虚拟机渲染功能的支持,提高虚拟机渲染的效率。
图6示出了根据本申请一个实施例的数据传输装置的结构示意图。参见图6,该数据传输装置可以包括:
获取模块601,用于获取虚拟机的操作系统发送的目标数据包;
处理模块602,用于对目标数据包进行解封装以获取目标数据,以及将目标数据发送给宿主机的处理器,以使处理器将目标数据存储至宿主机的内存中共享内存区域,并通知第二应用程序从共享内存区域中获取目标数据进行数据处理;
其中,目标数据包是虚拟机的操作系统对第一应用程序的目标数据进行封装得到的。
在一些实施例中,处理模块602对目标数据包进行解封装以获取目标数据具体是:
采用预设的数据封装格式对目标数据包进行解封装,得到解封装结果;
提取解封装结果中数据主体字段的字段值,以获取目标数据。
在一些实施例中,处理模块602将目标数据发送给宿主机的处理器具体是:
若解封装结果中操作码字段的字段值为数据发送指令,将目标数据发送给宿主机的处理器。
在一些实施例中,若解封装结果中操作码字段的字段值为数据发送指令,处理模块602将目标数据发送给宿主机的处理器具体是:
若解封装结果中操作码字段的字段值为数据发送指令,根据解封装结果中数据长度字段的字段值,确定存储目标数据所需的存储容量;
判断共享内存区域的当前可用存储容量是否大于存储目标数据所需的存储容量;
若共享内存区域的当前可用存储容量大于存储目标数据所需的存储容量,执行将目标数据发送给宿主机的处理器的步骤。
在一些实施例中,处理模块602还用于:
若共享内存区域的当前可用存储容量不大于存储目标数据所需的存储容量,向宿主机的处理器发送扩充请求,以使处理器扩充共享内存区域当前可用的存储容量。
在一些实施例中,处理模块602还用于:若共享内存区域的当前可用存储容量不大于存储目标数据所需的存储容量,将目标数据进行分块,得到至少两个数据块;
从至少两个数据块中选择至少一个数据块,其中,至少一个数据块所需的存储容量不大于共享内存区域的当前可用存储容量;
向处理器发送至少一个数据块和扩充请求,以使处理器将至少一个数据块存储至共享内存区域中,并在第二应用程序读取共享内存区域中的至少一个数据块之后,清空共享内存区域中的数据以扩充共享内存区域的当前可用存储容量;
响应处理器基于扩充请求返回的扩充响应,虚拟PCI设备从剩余的数据块中选择至少一个数据块,并向处理器发送至少一个数据块和扩充请求,直至全部的数据块发送完毕,其中,扩充响应用于指示共享内存区域的当前可用存储容量。
图6的数据传输装置可以执行图4所示实施例的数据传输方法,其实现原理和技术效果不再赘述。对于上述实施例中的数据传输装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时可以实现上述图3至5所示实施例的数据传输方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (15)

1.一种数据传输方法,其特征在于,包括:
虚拟机的操作系统获取第一应用程序的目标数据,以及对所述目标数据进行封装,得到目标数据包,并将所述目标数据包发送至虚拟外设组件互连标准PCI设备;
所述虚拟PCI设备对所述目标数据包进行解封装以获取所述目标数据,以及将所述目标数据发送给宿主机的处理器;
所述处理器将所述目标数据存储至所述宿主机的内存中共享内存区域,并通知第二应用程序从所述共享内存区域中获取所述目标数据进行数据处理。
2.根据权利要求1所述的方法,其特征在于,所述虚拟机的操作系统对所述目标数据进行封装,得到目标数据包,包括:
所述虚拟机的操作系统确定所述目标数据的数据操作指令;
所述虚拟机的操作系统采用预设的数据封装格式对所述目标数据的数据操作指令和所述目标数据进行封装,得到所述目标数据包。
3.根据权利要求2所述的方法,其特征在于,所述数据封装格式至少包括操作码字段和数据主体字段;
所述虚拟机的操作系统采用预设的数据封装格式对所述目标数据的数据操作指令和所述目标数据进行封装,得到所述目标数据包,包括:
将所述目标数据的数据操作指令填充至所述操作码字段的字段值中,以及将所述目标数据填充至所述数据主体字段的字段值中,以得到所述目标数据包。
4.根据权利要求3所述的方法,其特征在于,所述数据封装格式还包括以下中至少一个:数据长度字段和数据对象字段;
得到所述目标数据包,包括:
将所述目标数据的数据操作指令填充至所述操作码字段的字段值中,以及将所述目标数据填充至所述数据主体字段的字段值中,将所述目标数据的数据长度填充至数据长度字段的字段值中,和/或,将所述第一应用程序的标识填充至所述数据对象字段的字段值中,以得到所述目标数据包。
5.一种数据传输方法,其特征在于,所述方法应用于虚拟机中的虚拟PCI设备,包括:
虚拟机中的虚拟PCI设备获取所述虚拟机的操作系统发送的目标数据包;
对所述目标数据包进行解封装以获取所述目标数据,以及将所述目标数据发送给宿主机的处理器,以使所述处理器将所述目标数据存储至所述宿主机的内存中共享内存区域,并通知第二应用程序从所述共享内存区域中获取所述目标数据进行数据处理;
其中,所述目标数据包是所述虚拟机的操作系统对第一应用程序的目标数据进行封装得到的。
6.根据权利要求5所述的方法,其特征在于,对所述目标数据包进行解封装以获取所述目标数据包括:
采用预设的数据封装格式对所述目标数据包进行解封装,得到解封装结果;
提取所述解封装结果中数据主体字段的字段值,以获取所述目标数据。
7.根据权利要求6所述的方法,其特征在于,将所述目标数据发送给宿主机的处理器包括:
若所述解封装结果中操作码字段的字段值为数据发送指令,将所述目标数据发送给宿主机的处理器。
8.根据权利要求7所述的方法,其特征在于,若所述解封装结果中操作码字段的字段值为数据发送指令,将所述目标数据发送给宿主机的处理器包括:
若所述解封装结果中操作码字段的字段值为数据发送指令,根据所述解封装结果中数据长度字段的字段值,确定存储所述目标数据所需的存储容量;
判断所述共享内存区域的当前可用存储容量是否大于存储所述目标数据所需的存储容量;
若所述共享内存区域的当前可用存储容量大于存储所述目标数据所需的存储容量,执行将所述目标数据发送给宿主机的处理器的步骤。
9.根据权利要求8所述的方法,其特征在于,还包括:
若所述共享内存区域的当前可用存储容量不大于存储所述目标数据所需的存储容量,向所述宿主机的处理器发送扩充请求,以使所述处理器扩充所述共享内存区域当前可用的存储容量。
10.根据权利要求8所述的方法,其特征在于,还包括:
若所述共享内存区域的当前可用存储容量不大于存储所述目标数据所需的存储容量,将所述目标数据进行分块,得到至少两个数据块;
从所述至少两个数据块中选择至少一个数据块,其中,所述至少一个数据块所需的存储容量不大于所述共享内存区域的当前可用存储容量;
向所述处理器发送所述至少一个数据块和扩充请求,以使所述处理器将所述至少一个数据块存储至所述共享内存区域中,并在所述第二应用程序读取所述共享内存区域中的至少一个数据块之后,清空所述共享内存区域中的数据以扩充所述共享内存区域的当前可用存储容量;
响应所述处理器基于所述扩充请求返回的扩充响应,所述虚拟PCI设备从剩余的数据块中选择至少一个数据块,并向所述处理器发送所述至少一个数据块和所述扩充请求,直至全部的数据块发送完毕,其中,扩充响应用于指示所述共享内存区域的当前可用存储容量。
11.一种数据传输方法,其特征在于,所述方法应用于运行虚拟机的宿主机,包括:
宿主机的处理器获取虚拟机中的虚拟PCI设备发送的目标数据;
将所述目标数据存储至所述宿主机的内存中共享内存区域,并通知第二应用程序从所述共享内存区域中获取所述目标数据进行数据处理;
其中,所述目标数据是所述虚拟PCI设备对虚拟机的操作系统发送的目标数据包解封装得到的,且所述目标数据包是所述虚拟机的操作系统对第一应用程序的目标数据进行封装得到的。
12.根据权利要求11所述的方法,其特征在于,还包括:
获取所述第二应用程序对所述目标数据进行数据处理得到的目标数据处理结果;
向所述虚拟PCI设备发送目标数据处理结果。
13.一种数据传输装置,其特征在于,包括:
获取模块,用于获取虚拟机的操作系统发送的目标数据包;
处理模块,用于对所述目标数据包进行解封装以获取所述目标数据,以及将所述目标数据发送给宿主机的处理器,以使所述处理器将所述目标数据存储至所述宿主机的内存中共享内存区域,并通知第二应用程序从所述共享内存区域中获取所述目标数据进行数据处理;
其中,所述目标数据包是所述虚拟机的操作系统对第一应用程序的目标数据进行封装得到的。
14.一种数据传输系统,其特征在于,包括:虚拟机和宿主机;所述虚拟机至少包括虚拟机的操作系统和虚拟PCI设备;所述宿主机至少包括处理器和内存;
所述虚拟机的操作系统,用于获取第一应用程序的目标数据,以及对所述目标数据进行封装,得到目标数据包,并将所述目标数据包发送至虚拟PCI设备;
所述虚拟PCI设备,用于对所述目标数据包进行解封装以获取所述目标数据,以及将所述目标数据发送给宿主机的处理器;
所述处理器,用于将所述目标数据存储至所述宿主机的内存中共享内存区域,并通知第二应用程序从所述共享内存区域中获取所述目标数据进行数据处理。
15.一种计算机存储介质,其特征在于,存储有计算机程序,所述计算程序被计算机执行时,实现如权利要求1~12任一项所述方法中的步骤。
CN202110762042.9A 2021-07-06 2021-07-06 数据传输方法、装置、系统及存储介质 Active CN113778611B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110762042.9A CN113778611B (zh) 2021-07-06 2021-07-06 数据传输方法、装置、系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110762042.9A CN113778611B (zh) 2021-07-06 2021-07-06 数据传输方法、装置、系统及存储介质

Publications (2)

Publication Number Publication Date
CN113778611A true CN113778611A (zh) 2021-12-10
CN113778611B CN113778611B (zh) 2024-08-20

Family

ID=78835841

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110762042.9A Active CN113778611B (zh) 2021-07-06 2021-07-06 数据传输方法、装置、系统及存储介质

Country Status (1)

Country Link
CN (1) CN113778611B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113867993A (zh) * 2021-12-03 2021-12-31 维塔科技(北京)有限公司 虚拟化的rdma方法、系统、存储介质及电子设备
CN115576656A (zh) * 2022-12-12 2023-01-06 山东三未信安信息科技有限公司 一种域间通讯的装置、方法及设备
CN115658216A (zh) * 2022-12-26 2023-01-31 飞腾信息技术有限公司 应用程序窗口的处理方法、设备及计算机可读存储介质
CN116401900A (zh) * 2023-06-09 2023-07-07 南京朗立微集成电路有限公司 一种软件仿真多系统间通信的方法和装置
WO2023174220A1 (zh) * 2022-03-17 2023-09-21 北京有竹居网络技术有限公司 数据处理方法、装置、可读介质以及计算设备
WO2023185478A1 (zh) * 2022-03-29 2023-10-05 华为技术有限公司 应用程序间通信方法、装置、存储介质及程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104881254A (zh) * 2015-05-27 2015-09-02 北京百度网讯科技有限公司 数据存储方法和装置
CN106874128A (zh) * 2017-01-22 2017-06-20 广州华多网络科技有限公司 数据传输方法及装置
CN107678835A (zh) * 2017-09-30 2018-02-09 东软集团股份有限公司 一种数据传输方法及系统
WO2019127191A1 (zh) * 2017-12-28 2019-07-04 深圳前海达闼云端智能科技有限公司 一种多操作系统共享文件系统的方法、装置和电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104881254A (zh) * 2015-05-27 2015-09-02 北京百度网讯科技有限公司 数据存储方法和装置
CN106874128A (zh) * 2017-01-22 2017-06-20 广州华多网络科技有限公司 数据传输方法及装置
CN107678835A (zh) * 2017-09-30 2018-02-09 东软集团股份有限公司 一种数据传输方法及系统
WO2019127191A1 (zh) * 2017-12-28 2019-07-04 深圳前海达闼云端智能科技有限公司 一种多操作系统共享文件系统的方法、装置和电子设备

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113867993A (zh) * 2021-12-03 2021-12-31 维塔科技(北京)有限公司 虚拟化的rdma方法、系统、存储介质及电子设备
WO2023174220A1 (zh) * 2022-03-17 2023-09-21 北京有竹居网络技术有限公司 数据处理方法、装置、可读介质以及计算设备
WO2023185478A1 (zh) * 2022-03-29 2023-10-05 华为技术有限公司 应用程序间通信方法、装置、存储介质及程序产品
CN115576656A (zh) * 2022-12-12 2023-01-06 山东三未信安信息科技有限公司 一种域间通讯的装置、方法及设备
CN115658216A (zh) * 2022-12-26 2023-01-31 飞腾信息技术有限公司 应用程序窗口的处理方法、设备及计算机可读存储介质
CN116401900A (zh) * 2023-06-09 2023-07-07 南京朗立微集成电路有限公司 一种软件仿真多系统间通信的方法和装置
CN116401900B (zh) * 2023-06-09 2023-08-29 南京朗立微集成电路有限公司 一种软件仿真多系统间通信的方法和装置

Also Published As

Publication number Publication date
CN113778611B (zh) 2024-08-20

Similar Documents

Publication Publication Date Title
CN113778611B (zh) 数据传输方法、装置、系统及存储介质
CN109766302B (zh) 设备管理的方法和装置
CN111274019B (zh) 一种数据处理方法、装置及计算机可读存储介质
CN111464419B (zh) 一种基于总线网络通信的数据传输控制方法
US11671678B2 (en) Method and device, equipment, and storage medium for data processing
EP2509351A1 (en) Smart card authentication device and method
CN108647131B (zh) 运行日志的输出系统
CN110312266B (zh) 终端的多系统实现wifi通信的方法和装置
CN110731101B (zh) 实现移动网络系统切换的方法、设备及存储介质
CN105610730A (zh) Cpu与网络设备之间的消息交互方法及系统
CN109358820B (zh) 数据访问方法、装置、电子设备及计算机可读存储介质
CN103092676A (zh) 虚拟机集群的模拟输入输出方法、装置及系统
CN111310638B (zh) 一种数据处理方法、装置及计算机可读存储介质
CN112422485B (zh) 一种传输控制协议的通信方法及装置
CN115878351B (zh) 消息的传输方法及装置、存储介质及电子装置
CN109614354B (zh) 接口分配方法、板卡、设备及存储介质
CN107643938A (zh) 数据传输方法、装置及存储介质
CN109656674B (zh) 一种计算机设备、虚拟化芯片及数据传输方法
CN116346959A (zh) 一种dpu场景弹性网卡高效实现方法及装置
CN105404557A (zh) 基于消息队列的进程通信方法
US9078282B2 (en) Method and apparatus for implementing network device function of wireless communication terminal
CN109426547B (zh) 一种虚拟机的热迁移方法、装置和系统
CN113110950A (zh) 处理器及通信方法、存储介质及计算设备
CN108880738B (zh) 一种信息处理方法及装置
EP3038390A1 (en) Processing method and apparatus for signaling tracing

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