CN107491354A - 一种基于共享内存的虚拟机间通信方法及装置 - Google Patents
一种基于共享内存的虚拟机间通信方法及装置 Download PDFInfo
- Publication number
- CN107491354A CN107491354A CN201710534392.3A CN201710534392A CN107491354A CN 107491354 A CN107491354 A CN 107491354A CN 201710534392 A CN201710534392 A CN 201710534392A CN 107491354 A CN107491354 A CN 107491354A
- Authority
- CN
- China
- Prior art keywords
- data
- request
- regional space
- receiving terminal
- 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.)
- Granted
Links
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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于共享内存的虚拟机间通信方法及装置,用以解决物理计算机中的虚拟机通信过程中,虚拟机访问共享内存时,虚拟机监视器需要与虚拟机进行频繁切换来对虚拟机进行安全性检查和页面授权的问题,提高了通信效率。所述方法包括:发送端虚拟机VM确定共享内存中接收端VM的区域空间;将第一数据写入区域空间中,并向区域空间中添加数据写请求,其中,数据写请求中携带有第一数据在区域空间中的位置标识、发送端VM的标识以及所述请求的操作类型;接收所述接收端VM返回的第二数据,第二数据为接收端VM获取数据写请求、并根据位置标识获取第一数据后,根据所述请求的操作类型对第一数据执行对应的操作后得到的。
Description
技术领域
本发明涉及虚拟化技术领域,尤其涉及一种基于共享内存的虚拟机间通信方法及装置。
背景技术
虚拟化是指通过虚拟化技术将一台物理计算机虚拟为多台逻辑计算机,即虚拟机(Virtual Machine,VM)。在一台计算机上可以同时运行多个VM,每个VM可以运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高了计算机的工作效率。虚拟机监视器(Virtual Machine Monitor,VMM)是虚拟机技术的核心,它是一层位于操作系统和计算机硬件之间的代码,它的主要任务是实现VM技术的各种底层机制,如虚拟化CPU(Central Processing Unit,中央处理器)、虚拟化设备、虚拟化内存和虚拟化网络等机制都是在VMM中实现的,VMM用于隔离并且管理上层运行的多个虚拟机,仲裁VM对底层硬件的访问,每个VM通过VMM来与硬件进行通信。
当前计算机上的VM之间的通信方式有两种:基于CPU外总线和基于共享内存的通信方式。基于共享内存的通信方式具有通信协议简单、传输延迟低的优势,使用内存授权表(grant table)机制,来实现VM之间的内存页面传递和共享。然而,在VM的通信过程中,当VM访问共享内存时,VMM需要与VM进行频繁切换,以对VM进行安全性检查和页面授权,严重影响了通信效率。
发明内容
本发明公开了一种基于共享内存的虚拟机间通信方法及装置,用以解决物理计算机中的虚拟机通信过程中,虚拟机访问共享内存时,虚拟机监视器需要与虚拟机进行频繁切换来对虚拟机进行安全性检查和页面授权的问题,提高了通信效率。
本发明实施例提供了一种基于共享内存的虚拟机间通信方法,包括:
发送端虚拟机VM确定共享内存中接收端VM的区域空间;
将第一数据写入所述区域空间中,并向所述区域空间中添加数据写请求,其中,所述数据写请求中携带有所述第一数据在所述区域空间中的位置标识、所述发送端VM的标识以及所述请求的操作类型;
接收所述接收端VM返回的第二数据,所述第二数据为所述接收端VM获取所述数据写请求、并根据所述位置标识获取所述第一数据后,根据所述请求的操作类型对所述第一数据执行对应的操作后得到的。
本发明实施例提供了一种基于共享内存的虚拟机间通信装置,包括:
第一确定单元,用于发送端虚拟机VM确定共享内存中接收端VM的区域空间;
写入单元,用于将第一数据写入所述区域空间中,并向所述区域空间中添加数据写请求,其中,所述数据写请求中携带有所述第一数据在所述区域空间中的位置标识、所述发送端VM的标识以及所述请求的操作类型;
第一接收单元,用于接收所述接收端VM返回的第二数据,所述第二数据为所述接收端VM获取所述数据写请求、并根据所述位置标识获取所述第一数据后,根据所述请求的操作类型对所述第一数据执行对应的操作后得到的。
本发明实施例提供了一种基于共享内存的虚拟机间通信方法,包括:
接收端虚拟机VM从共享内存中自身的区域空间中获取发送端VM添加的数据写请求,其中,所述数据写请求中携带有所述发送端VM写入所述区域空间中的第一数据在所述区域空间中的位置标识、所述发送端VM的标识以及所述请求的操作类型;
根据所述地址信息读取所述第一数据;
根据所述请求的操作类型对所述第一数据执行对应的操作得到第二数据;
向所述发送端VM发送所述第二数据。
本发明实施例提供了一种基于共享内存的虚拟机间通信装置,包括:
获取单元,用于接收端虚拟机VM从共享内存中自身的区域空间中获取发送端VM添加的数据写请求,其中,所述数据写请求中携带有所述发送端VM写入所述区域空间中的第一数据在所述区域空间中的位置标识、所述发送端VM的标识以及所述请求的操作类型;
读取单元,用于根据所述地址信息读取所述第一数据;
处理单元,用于根据所述请求的操作类型对所述第一数据执行对应的操作得到第二数据;
第一发送单元,用于向所述发送端VM发送所述第二数据。
本发明的有益效果包括:
本发明提供的基于共享内存的虚拟机间通信方法及装置中,发送端VM确定共享内存中接收端VM的区域空间,将第一数据写入接收到VM的区域空间中,并向该区域空间中添加数据写请求,其中,数据写请求中携带有第一数据在接收端VM的区域空间中的地址信息、发送端VM的标识以及所述请求的操作类型,接收所述接收端VM返回的第二数据,该第二数据为接收端VM获取发送端添加的数据写请求、并根据数据写请求中携带的第一数据在接收端VM的区域空间中的地址信息获取所述第一数据后,根据数据写请求中携带的所述请求的操作类型对第一数据执行对应的操作后得到的,从而完成发送端VM与接收端VM之间的数据交互,解决了虚拟机访问共享内存时,VMM需要与虚拟机进行频繁切换来对虚拟机进行安全性检查和页面授权的问题,提高了通信效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例一提供的基于共享内存的虚拟机间通信方法的实施流程示意图;
图2为本发明实施例二提供的基于共享内存的虚拟机间通信装置的结构示意图;
图3为本发明实施例三提供的另一种基于共享内存的虚拟机间通信方法的实施流程示意图;
图4为本发明实施例四提供的另一种基于共享内存的虚拟机间通信装置的结构示意图;
图5为本发明实施例五提供的基于共享内存的文件系统访问服务实施流程示意图。
具体实施方式
为了解决物理计算机中的虚拟机通信过程中,虚拟机访问共享内存时,虚拟机监视器需要与虚拟机进行频繁切换来对虚拟机进行安全性检查和页面授权的问题,本发明提出了一种基于共享内存的虚拟机间通信方法及装置。
本发明实施例提供的基于共享内存的虚拟机间通信方法的实施原理是:
发送端VM确定共享内存中接收端VM的区域空间,将第一数据写入接收到VM的区域空间中,并向该区域空间中添加数据写请求,其中,数据写请求中携带有第一数据在接收端VM的区域空间中的地址信息、发送端VM的标识以及所述请求的操作类型,接收所述接收端VM返回的第二数据,该第二数据为接收端VM获取发送端添加的数据写请求、并根据数据写请求中携带的第一数据在接收端VM的区域空间中的地址信息获取所述第一数据后,根据数据写请求中携带的所述请求的操作类型对第一数据执行对应的操作后得到的,从而完成发送端VM与接收端VM之间的数据交互,虚拟机访问共享内存时,VMM无需与虚拟机进行频繁切换来对虚拟机进行安全性检查和页面授权,提高了通信效率。
以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
本发明实施例中的共享内存为从物理内存中规划出的一块独立的内存空间,在VM启动之前,VMM根据共享内存的预设配置表,将该共享内存映射给所有具有访问权限的VM,具有访问权限的VM可以直接访问该共享内存。其中,访问权限可以包括读权限、写权限或读/写权限。共享内存的预设配置表中可以包括以下内容:允许访问的VM的标识、共享内存空间物理起始地址、共享内存空间大小、各VM访问共享内存的逻辑起始地址以及各VM访问共享内存的访问权限。具体地,VMM根据共享内存的物理起始地址、共享内存空间大小以及各VM访问共享内存的逻辑起始地址,将该共享内存映射给每个具有访问权限的VM,并对各VM授权读、写权限。VMM为每个具有访问权限的VM划分一块区域空间,并生成一个区域空间分配表,该区域空间分配表中包含各VM与VMM为其分配的区域空间的对应关系,VMM将该区域空间分配表下发给每个具有访问权限的VM。进一步地,VM初始化共享内存、安装各自的IPI(Inter-Processor Interrupt,处理器间中断)中断处理函数以及创建处理请求的任务。初始时,各VM需要初始化各自的区域空间,具体地,各VM需要初始化至少以下内容:初始化各自的数据交换空间以及请求队列,并将各自的数据交换空间以及请求队列记录到各自的区域空间中,其中,数据交换空间用于存储与其它VM之间的传输数据,请求队列用于记录每次通信传输的数据用途即操作类型,操作类型由接收端VM的应用程序注册;将各自的标识记录于各自的区域空间中;在各自的区域空间中,设置各自的处理请求的回调函数,处理请求回调函数用于唤醒任务处理请求;在各自的区域空间中,设置各自的发送请求的回调函数,发送请求的回调函数用于唤醒任务发送请求。其中,各VM将各自的数据交换空间划分为若干个预设大小的Block(块),每次通信分配一个Block用于写数据,Block的大小可以根据实际情况预先配置,本发明实施例不作限定,每次通信数据不能超过Block大小。
需要说明的是,为了避免多个VM同时初始化其共享内存,VM需要首先获取自旋锁进行互斥保护,才能设置区域空间。由于共享内存空间可能同时有两个及两个以上的VM访问,因此需要使用互斥锁和/或自旋锁进行互斥保护。
一台物理计算机上的所有VM可以使用同一块共享内存,为了满足各VM间通信的多样性和性能需求,可以从物理内存中规划出多块独立的内存空间作为共享内存,如多个VM之间通信规划使用不同的共享区域。在虚拟机通信过程中,发送端VM针对同一个共享内存可以采用同步模式,每一次发送请求完成后才能进行下一次发送,而不同的共享区域则不在同步范围内。针对同一个共享区域,如果发送端VM存在多个时,每一个发送端VM在确定前一个发送端VM向接收端VM发送请求成功后,再向接收端VM发送该发送端VM的请求。接收端VM采用请求队列方式,可以同时接收多个发送端VM的发送请求,依次处理并进行回复。
本发明实施例提供的虚拟机间通信方法及装置是基于上述VMM划分的共享内存,本发明实施例以VM使用上述VMM划分的一个共享内存为例,对虚拟机间通信过程进行说明。
实施例一
如图1所示,其为本发明实施例一提供的发送端VM侧的基于共享内存的虚拟机间通信方法的实施流程示意图,可以包括以下步骤:
S11、发送端VM确定共享内存中接收端VM的区域空间。
具体实施时,发送端VM在共享内存中确定接收端VM的区域空间,该接收端VM至少具有可读权限,或读/写权限。具体地,发送端VM可以通过VMM将下发的区域空间分配表,根据接收端VM与VMM为其分配的区域空间的对应关系,确定在共享内存中所述接收端VM的区域空间。在发送端虚拟机VM确定共享内存中接收端VM的区域空间之前,所述发送端VM和所述接收端VM分别对各自的区域空间进行下述初始化:初始化各自的数据交换空间以及请求队列,并将各自的数据交换空间以及请求队列记录到各自的区域空间中;和/或将各自的标识记录于各自的区域空间中;和/或设置各自的处理请求的回调函数,所述处理请求的回调函数用于唤醒任务处理请求;和/或设置各自的发送请求的回调函数,所述发送请求的回调函数用于唤醒任务发送请求。
S12、将第一数据写入所述区域空间中,并向所述区域空间中添加数据写请求,其中,所述数据写请求中携带有所述第一数据在所述区域空间中的位置标识、所述发送端VM的标识以及所述请求的操作类型。
具体实施时,发送端VM将第一数据写入接收端VM的区域空间中,并向接收端VM的区域空间中添加一个数据写请求。其中,数据写请求中携带有第一数据在接收端VM的区域空间中的位置标识、发送端VM的标识以及所述请求的操作类型。
具体地,接收端VM的区域空间包括接收端VM的数据交换空间以及请求队列,数据交换空间由若干个Block组成,用于存储与其它VM之间的传输数据。发送端VM在接收端VM的数据交换空间中选择任意一个未被使用的Block,将第一数据写入选择的Block中后,将该Block的标识确定为第一数据在接收端VM的区域空间中的位置标识,并将该位置标识携带于数据写请求中,数据写请求中还携带有发送端VM的标识以及所述请求的操作类型,向接收端VM的请求队列中添加该数据写请求。
具体地,发送端VM利用在其区域空间设置的发送请求的回调函数唤醒发送请求的任务,发送请求的回调函数由发送端VM安装的IPI中断处理函数调用。具体地,应用程序调用API接口(Application Programming Interface,应用程序编程接口),在API接口中唤醒发送请求的任务,然后将自身挂起,等待操作结果,发送请求的任务被唤醒后,将要发送的第一数据写入选择的接收端VM的Block中,并向接收端VM的请求队列中添加一个数据写请求。
较佳地,如果发送端VM存在多个时,每一发送端VM在确定前一个发送端VM向所述接收端VM的区域空间添加所述前一发送端VM的数据写请求成功之后,再向所述接收端VM的区域空间添加该发送端VM的数据写请求。具体地,每一发送端VM向接收端VM的请求队列中添加数据写请求时,可以获取自旋锁,当添加请求成功后,释放自旋锁,下一个发送端VM获取该自旋锁以后,再向接收端VM的请求队列中添加数据写请求。或者可以在共享内存中创建互斥锁,每一发送端VM可以使用互斥锁按顺序向接收端VM的请求队列中添加各自的数据写请求。
S13、接收所述接收端VM返回的第二数据,所述第二数据为所述接收端VM获取所述数据写请求、并根据所述位置标识获取所述第一数据后,根据所述请求的操作类型对所述第一数据执行对应的操作后得到的。
具体实施时,发送端VM向接收端VM的请求队列中添加数据写请求之后,发送第一IPI给接收端VM,然后将发送请求任务挂起,等待接收端VM的回复。接收端VM响应发送端VM发送的第一IPI,确定第一IPI的中断号表示系统间通信后,接收端VM利用在其区域空间安装的处理请求的回调函数唤醒处理请求的任务,处理请求的回调函数由接收端VM安装的IPI中断处理函数调用。具体地,第一IPI触发后,IPI中断处理函数调用上述处理请求的回调函数,在处理请求的回调函数中唤醒处理请求的任务,处理请求的任务被唤醒后,从自身的请求队列中获取发送端VM添加的数据写请求,并根据数据写请求中携带的区域空间的位置标识即发送端写入第一数据的Block的标识,从该Block中获取第一数据,并根据所述请求的操作类型对第一数据执行对应的操作得到第二数据。
进一步地,接收端VM发送第二IPI给发送端VM,将第二数据发送给发送端VM,发送端VM响应该接收端发送的第二IPI,确定该第二IPI的中断号表示系统间通信后,接收发送端VM返回的第二数据并保存。
本发明实施例一提供的基于共享内存的虚拟机间通信方法及装置中,发送端VM确定共享内存中接收端VM的区域空间,将第一数据写入接收到VM的区域空间中,并向该区域空间中添加数据写请求,其中,数据写请求中携带有第一数据在接收端VM的区域空间中的地址信息、发送端VM的标识以及所述请求的操作类型,接收所述接收端VM返回的第二数据,该第二数据为接收端VM获取发送端添加的数据写请求、并根据数据写请求中携带的第一数据在接收端VM的区域空间中的地址信息获取所述第一数据后,根据数据写请求中携带的所述请求的操作类型对第一数据执行对应的操作后得到的,从而完成发送端VM与接收端VM之间的数据交互,解决了虚拟机访问共享内存时,VMM需要与虚拟机进行频繁切换来对虚拟机进行安全性检查和页面授权的问题,提高了通信效率。
实施例二、
基于同一发明构思,本发明实施例二还提供了一种基于共享内存的虚拟机间通信装置,由于上述装置解决问题的原理与基于共享内存的虚拟机间通信方法相似,因此上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图2所示,其为本发明实施例二提供的基于共享内存的虚拟机间通信装置的结构示意图,可以包括:
第一确定单元21,用于发送端虚拟机VM确定共享内存中接收端VM的区域空间;
写入单元22,用于将第一数据写入所述区域空间中,并向所述区域空间中添加数据写请求,其中,所述数据写请求中携带有所述第一数据在所述区域空间中的位置标识、所述发送端VM的标识以及所述请求的操作类型;
接收单元23,用于接收所述接收端VM返回的第二数据,所述第二数据为所述接收端VM获取所述数据写请求、并根据所述位置标识获取所述第一数据后,根据所述请求的操作类型对所述第一数据执行对应的操作后得到的。
较佳地,所述区域空间中包括接收端VM的数据交换空间以及请求队列,所述数据交换空间由若干个块Block组成,用于存储与其它VM之间的传输数据;
所述写入单元22,具体用于在所述数据交换空间中选择任意一个未被使用的Block,并将所述第一数据写入选择的Block中。
可选地,所述基于共享内存的虚拟机间通信装置,还可以包括:
第二确定单元,用于在将第一数据写入所述区域空间中之后,向所述区域空间中添加数据写请求之前,将所述Block的标识确定为所述第一数据在所述区域空间中的位置标识。
可选地,所述基于共享内存的虚拟机间通信装置,还可以包括:
发送单元,用于向所述区域空间中添加数据写请求之后,发送第一处理器间中断IPI给所述接收端VM;
响应单元,用于在发送第一IPI给所述接收端VM之后,接收所述接收端VM返回的第二数据之前,响应所述接收端VM发送的第二IPI;
第三确定单元,用于确定所述第二IPI的中断号表示系统间通信。
可选地,所述基于共享内存的虚拟机间通信装置,还可以包括:
初始化单元,用于在发送端虚拟机VM确定共享内存中接收端VM的区域空间之前,所述发送端VM和所述接收端VM分别对各自的区域空间进行下述初始化:初始化各自的数据交换空间以及请求队列,并将各自的数据交换空间以及请求队列记录到各自的区域空间中;和/或将各自的标识记录于各自的区域空间中;和/或设置各自的处理请求的回调函数,所述处理请求的回调函数用于唤醒任务处理请求;和/或设置各自的发送请求的回调函数,所述发送请求的回调函数用于唤醒任务发送请求。
较佳地,如果发送端VM存在多个时,每一发送端VM在确定前一个发送端VM向所述接收端VM的区域空间添加所述前一发送端VM的数据写请求成功之后,再向所述接收端VM的区域空间添加该发送端VM的数据写请求。
实施例三
本发明实施例三提供的基于共享内存的虚拟机间通信方法为实施例一提供的方法的接收端VM侧的基于共享内存的虚拟机间通信方法,因此上述方法的实施可以参见本发明实施例一中方法的实施,重复之处不再赘述。
如图3所示,本发明实施例三提供了另一种基于共享内存的虚拟机间通信方法的实施流程示意图,可以包括:
S31、接收端虚拟机VM从共享内存中自身的区域空间中获取发送端VM添加的数据写请求,其中,所述数据写请求中携带有所述发送端VM写入所述区域空间中的第一数据在所述区域空间中的位置标识、所述发送端VM的标识以及所述请求的操作类型。
较佳地,所述区域空间中包括接收端VM的数据交换空间以及请求队列,所述数据交换空间由若干个块Block组成,用于存储与其它VM之间的传输数据。
S32、根据所述地址信息读取所述第一数据。
较佳地,根据所述地址信息读取所述第一数据,具体包括:
从所述地址信息对应的Block中读取所述第一数据,其中,所述地址信息对应的Block为所述发送端VM从所述数据交换空间中选择的任意一个未被使用的Block,并将所述第一数据写入所述Block中后、确定所述Block的标识为所述第一数据在所述区域空间中的位置标识。
较佳地,接收端VM从共享内存中自身的区域空间中获取发送端VM添加的数据写请求,具体包括:
接收端VM从共享内存中的接收端VM的所述请求队列中获取发送端VM添加的所述数据写请求。
较佳地,接收端VM从共享内存中自身的区域空间中获取发送端VM添加的数据写请求之前,还可以包括:
响应所述发送端VM发送的第一处理器间中断IPI;并
确定所述第一IPI的中断号表示系统间通信。
S33、根据所述请求的操作类型对所述第一数据执行对应的操作得到第二数据。
S34、向所述发送端VM发送所述第二数据。
较佳地,根据所述请求的操作类型对所述第一数据执行对应的操作得到第二数据之后,向所述发送端VM发送所述第二数据之前,还可以包括:
发送第二IPI给所述发送端VM。
实施例四
基于同一发明构思,本发明实施例四还提供了另一种基于共享内存的虚拟机间通信装置,由于上述装置解决问题的原理与本发明实施例三提供的基于共享内存的虚拟机间通信方法相似,因此上述装置的实施可以参见上述方法的实施,重复之处不再赘述。
如图4所示,其为本发明实施例四提供的基于共享内存的虚拟机间通信装置的结构示意图,可以包括:
获取单元41,用于接收端虚拟机VM从共享内存中自身的区域空间中获取发送端VM添加的数据写请求,其中,所述数据写请求中携带有所述发送端VM写入所述区域空间中的第一数据在所述区域空间中的位置标识、所述发送端VM的标识以及所述请求的操作类型;
读取单元42,用于根据所述地址信息读取所述第一数据;
处理单元43,用于根据所述请求的操作类型对所述第一数据执行对应的操作得到第二数据;
第一发送单元44,用于向所述发送端VM发送所述第二数据。
较佳地,所述区域空间中包括接收端VM的数据交换空间以及请求队列,所述数据交换空间由若干个块Block组成,用于存储与其它VM之间的传输数据。
所述读取单元42,具体用于从所述地址信息对应的Block中读取所述第一数据,其中,所述地址信息对应的Block为所述发送端VM从所述数据交换空间中选择的任意一个未被使用的Block,并将所述第一数据写入所述Block中后、确定所述Block的标识为所述第一数据在所述区域空间中的位置标识。
较佳地,所述获取单元41,具体用于接收端VM从共享内存中的接收端VM的所述请求队列中获取发送端VM添加的所述数据写请求。
可选地,所述基于共享内存的虚拟机间通信装置,还可以包括:
响应单元,用于接收端VM从共享内存中自身的区域空间中获取发送端VM添加的数据写请求之前,响应所述发送端VM发送的第一处理器间中断IPI;
确定单元,用于确定所述第一IPI的中断号表示系统间通信;
第二发送单元,用于根据所述请求的操作类型对所述第一数据执行对应的操作得到第二数据之后,向所述发送端VM发送所述第二数据之前,发送第二IPI给所述发送端VM。
实施例五
本发明实施例五以基于共享内存的文件系统访问服务为例对本发明实施例一与本发明实施例二提供的基于共享内存的虚拟机间通信方法进行具体说明。
如图5所示,其为基于共享内存的文件系统访问服务实施流程示意图,其中,VMServer(VM服务器)用于提供文件系统访问服务,VM Client(VM客户端)需要进行文件系统访问,VM Server与VM Client使用同一共享内存,具体流程如下:
S51、VM Client中的应用任务调用open接口打开文件。
S52、VM Client中的应用任务调用open接口时传入文件名称等信息,在open接口内唤醒发送请求任务后,挂起应用任务。
S53、VM Client发送请求任务被唤醒后,记录文件名称等信息,并添加数据写请求。
具体实施时,VM Client发送请求任务被唤醒后,根据预先配置,从共享内存中选择VM Server的文件系统服务的区域空间,并从VM Server在其区域空间中记录的数据交换空间选择任意一个未被使用的Block,将文件名称等信息写入该Block中,从VM Server在其共享内存中记录的请求队列分配一个数据写请求,并将打开文件操作即请求的操作类型、记录文件名称等信息的Block标识以及VM Client自身的标识记录到该数据写请求中,然后将该数据写请求添加到VM Server的请求队列中。
S54、VM Client发送IPI中断。
具体实施时,VM Client向VM Server发送IPI中断,并等待VM Server的回复。
S55、VM Server响应VM Client发送的IPI中断。
S56、VM Server唤醒处理请求任务。
具体实施时,VM Server根据IPI中断号确定为系统间通信后,在IPI中断处理函数中唤醒处理请求任务。
S57、VM Server处理请求,执行打开文件操作。
具体实施时,VM Server从共享内存中其自身的请求队列中获取VM Client添加的数据写请求,从所述请求中获取打开文件操作的操作类型和记录文件名称等信息的Block标识,进一步地,VM Server调用应用程序注册的打开文件操作,将文件名称等信息传入,并获取操作结果。
S58、VM Server向VM Client发送回复IPI中断。
S59、VM Client响应回复IPI中断。
具体地,VM Client响应步骤S58中VM Server发送的回复IPI中断。
S510、VM Client唤醒发送请求任务。
具体实施时,VM Client根据回复IPI中断号确定为系统间通信的回复,在IPI终端处理函数中唤醒发送请求任务。
S511、VM Client唤醒应用任务,并发送VM Server的操作结果。
具体实施时,VM Client的发送请求任务唤醒应用任务,并将VM Server的操作结果发送给应用任务。
S512、VM Client应用任务返回open接口,并获取上述操作结果。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种基于共享内存的虚拟机间通信方法,其特征在于,包括:
发送端虚拟机VM确定共享内存中接收端VM的区域空间;
将第一数据写入所述区域空间中,并向所述区域空间中添加数据写请求,其中,所述数据写请求中携带有所述第一数据在所述区域空间中的位置标识、所述发送端VM的标识以及所述请求的操作类型;
接收所述接收端VM返回的第二数据,所述第二数据为所述接收端VM获取所述数据写请求、并根据所述位置标识获取所述第一数据后,根据所述请求的操作类型对所述第一数据执行对应的操作后得到的。
2.如权利要求1所述的方法,其特征在于,所述区域空间中包括接收端VM的数据交换空间以及请求队列,所述数据交换空间由若干个块Block组成,用于存储与其它VM之间的传输数据;以及
将第一数据写入所述区域空间,具体包括:
在所述数据交换空间中选择任意一个未被使用的Block,并将所述第一数据写入选择的Block中;以及
在将第一数据写入所述区域空间中之后,向所述区域空间中添加数据写请求之前,还包括:
将所述Block的标识确定为所述第一数据在所述区域空间中的位置标识。
3.如权利要求1所述的方法,其特征在于,向所述区域空间中添加数据写请求之后,还包括:
发送第一处理器间中断IPI给所述接收端VM;以及
在发送第一IPI给所述接收端VM之后,接收所述接收端VM返回的第二数据之前,还包括:
响应所述接收端VM发送的第二IPI;
确定所述第二IPI的中断号表示系统间通信。
4.如权利要求1或2所述的方法,其特征在于,在发送端虚拟机VM确定共享内存中接收端VM的区域空间之前,还包括:
所述发送端VM和所述接收端VM分别对各自的区域空间进行下述初始化:
初始化各自的数据交换空间以及请求队列,并将各自的数据交换空间以及请求队列记录到各自的区域空间中;和/或
将各自的标识记录于各自的区域空间中;和/或
设置各自的处理请求的回调函数,所述处理请求的回调函数用于唤醒任务处理请求;和/或
设置各自的发送请求的回调函数,所述发送请求的回调函数用于唤醒任务发送请求。
5.如权利要求1所述的方法,其特征在于,如果发送端VM存在多个时,每一发送端VM在确定前一个发送端VM向所述接收端VM的区域空间添加所述前一发送端VM的数据写请求成功之后,再向所述接收端VM的区域空间添加该发送端VM的数据写请求。
6.一种基于共享内存的虚拟机间通信装置,其特征在于,包括:
第一确定单元,用于发送端虚拟机VM确定共享内存中接收端VM的区域空间;
写入单元,用于将第一数据写入所述区域空间中,并向所述区域空间中添加数据写请求,其中,所述数据写请求中携带有所述第一数据在所述区域空间中的位置标识、所述发送端VM的标识以及所述请求的操作类型;
接收单元,用于接收所述接收端VM返回的第二数据,所述第二数据为所述接收端VM获取所述数据写请求、并根据所述位置标识获取所述第一数据后,根据所述请求的操作类型对所述第一数据执行对应的操作后得到的。
7.如权利要求6所述的装置,其特征在于,所述区域空间中包括接收端VM的数据交换空间以及请求队列,所述数据交换空间由若干个块Block组成,用于存储与其它VM之间的传输数据;以及
所述写入单元,具体用于在所述数据交换空间中选择任意一个未被使用的Block,并将所述第一数据写入选择的Block中;以及
所述装置还包括:
第二确定单元,用于在将第一数据写入所述区域空间中之后,向所述区域空间中添加数据写请求之前,将所述Block的标识确定为所述第一数据在所述区域空间中的位置标识。
8.如权利要求6所述的装置,其特征在于,所述装置还包括:
发送单元,用于向所述区域空间中添加数据写请求之后,发送第一处理器间中断IPI给所述接收端VM;
响应单元,用于在发送第一IPI给所述接收端VM之后,接收所述接收端VM返回的第二数据之前,响应所述接收端VM发送的第二IPI;
第三确定单元,用于确定所述第二IPI的中断号表示系统间通信。
9.如权利要求6或7所述的装置,其特征在于,还包括:
初始化单元,用于在发送端虚拟机VM确定共享内存中接收端VM的区域空间之前,所述发送端VM和所述接收端VM分别对各自的区域空间进行下述初始化:初始化各自的数据交换空间以及请求队列,并将各自的数据交换空间以及请求队列记录到各自的区域空间中;和/或将各自的标识记录于各自的区域空间中;和/或设置各自的处理请求的回调函数,所述处理请求的回调函数用于唤醒任务处理请求;和/或设置各自的发送请求的回调函数,所述发送请求的回调函数用于唤醒任务发送请求。
10.如权利要求6所述的装置,其特征在于,如果发送端VM存在多个时,每一发送端VM在确定前一个发送端VM向所述接收端VM的区域空间添加所述前一发送端VM的数据写请求成功之后,再向所述接收端VM的区域空间添加该发送端VM的数据写请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710534392.3A CN107491354B (zh) | 2017-07-03 | 2017-07-03 | 一种基于共享内存的虚拟机间通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710534392.3A CN107491354B (zh) | 2017-07-03 | 2017-07-03 | 一种基于共享内存的虚拟机间通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107491354A true CN107491354A (zh) | 2017-12-19 |
CN107491354B CN107491354B (zh) | 2020-01-21 |
Family
ID=60644495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710534392.3A Active CN107491354B (zh) | 2017-07-03 | 2017-07-03 | 一种基于共享内存的虚拟机间通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107491354B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829529A (zh) * | 2018-06-14 | 2018-11-16 | 中国平安人寿保险股份有限公司 | 虚拟机内存共享方法、装置、计算机设备及存储介质 |
CN108932170A (zh) * | 2018-06-06 | 2018-12-04 | 华东师范大学 | 一种同驻虚拟机间高效共享内存文件系统的机制 |
CN109901909A (zh) * | 2019-01-04 | 2019-06-18 | 中国科学院计算技术研究所 | 用于虚拟化系统的方法及虚拟化系统 |
CN111796901A (zh) * | 2019-04-08 | 2020-10-20 | 维塔科技(北京)有限公司 | 切换共享内存区的方法和装置、存储介质和电子设备 |
CN112148432A (zh) * | 2020-10-12 | 2020-12-29 | 北京计算机技术及应用研究所 | 一种基于物理环境下的虚拟机通信方法、装置及龙芯主机 |
CN112363796A (zh) * | 2020-10-19 | 2021-02-12 | 海光信息技术股份有限公司 | 一种虚拟机共享内存分配方法、装置及电子设备 |
CN113157402A (zh) * | 2021-05-24 | 2021-07-23 | 深圳联创和科技有限公司 | 一种基于分区操作系统的虚拟化权限控制通信方法 |
CN114327944A (zh) * | 2021-12-24 | 2022-04-12 | 科东(广州)软件科技有限公司 | 一种多系统共享内存的方法、装置、设备及存储介质 |
CN116069246A (zh) * | 2022-11-30 | 2023-05-05 | 北京天融信网络安全技术有限公司 | 用于虚拟机的数据读写方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101383781A (zh) * | 2008-10-30 | 2009-03-11 | 中国人民解放军国防科学技术大学 | 虚拟域间短信息通讯方法 |
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN101847105A (zh) * | 2009-03-26 | 2010-09-29 | 联想(北京)有限公司 | 一种计算机及多操作系统共享内存的方法 |
CN102457517A (zh) * | 2010-10-26 | 2012-05-16 | 国际商业机器公司 | 虚拟机间通信的方法 |
CN102541618A (zh) * | 2010-12-29 | 2012-07-04 | 中国移动通信集团公司 | 一种通用图形处理器虚拟化的实现方法、系统及装置 |
-
2017
- 2017-07-03 CN CN201710534392.3A patent/CN107491354B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101383781A (zh) * | 2008-10-30 | 2009-03-11 | 中国人民解放军国防科学技术大学 | 虚拟域间短信息通讯方法 |
CN101847105A (zh) * | 2009-03-26 | 2010-09-29 | 联想(北京)有限公司 | 一种计算机及多操作系统共享内存的方法 |
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN102457517A (zh) * | 2010-10-26 | 2012-05-16 | 国际商业机器公司 | 虚拟机间通信的方法 |
CN102541618A (zh) * | 2010-12-29 | 2012-07-04 | 中国移动通信集团公司 | 一种通用图形处理器虚拟化的实现方法、系统及装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108932170A (zh) * | 2018-06-06 | 2018-12-04 | 华东师范大学 | 一种同驻虚拟机间高效共享内存文件系统的机制 |
CN108829529A (zh) * | 2018-06-14 | 2018-11-16 | 中国平安人寿保险股份有限公司 | 虚拟机内存共享方法、装置、计算机设备及存储介质 |
CN109901909A (zh) * | 2019-01-04 | 2019-06-18 | 中国科学院计算技术研究所 | 用于虚拟化系统的方法及虚拟化系统 |
CN109901909B (zh) * | 2019-01-04 | 2020-12-29 | 中国科学院计算技术研究所 | 用于虚拟化系统的方法及虚拟化系统 |
CN111796901A (zh) * | 2019-04-08 | 2020-10-20 | 维塔科技(北京)有限公司 | 切换共享内存区的方法和装置、存储介质和电子设备 |
CN112148432A (zh) * | 2020-10-12 | 2020-12-29 | 北京计算机技术及应用研究所 | 一种基于物理环境下的虚拟机通信方法、装置及龙芯主机 |
CN112363796A (zh) * | 2020-10-19 | 2021-02-12 | 海光信息技术股份有限公司 | 一种虚拟机共享内存分配方法、装置及电子设备 |
CN113157402A (zh) * | 2021-05-24 | 2021-07-23 | 深圳联创和科技有限公司 | 一种基于分区操作系统的虚拟化权限控制通信方法 |
CN113157402B (zh) * | 2021-05-24 | 2021-12-14 | 深圳联创和科技有限公司 | 一种基于分区操作系统的虚拟化权限控制通信方法 |
CN114327944A (zh) * | 2021-12-24 | 2022-04-12 | 科东(广州)软件科技有限公司 | 一种多系统共享内存的方法、装置、设备及存储介质 |
CN116069246A (zh) * | 2022-11-30 | 2023-05-05 | 北京天融信网络安全技术有限公司 | 用于虚拟机的数据读写方法及系统 |
CN116069246B (zh) * | 2022-11-30 | 2023-08-29 | 北京天融信网络安全技术有限公司 | 用于虚拟机的数据读写方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107491354B (zh) | 2020-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107491354A (zh) | 一种基于共享内存的虚拟机间通信方法及装置 | |
WO2021051914A1 (zh) | 基于gpu资源的数据处理方法、电子设备及系统 | |
CN109960551B (zh) | 云桌面服务方法、平台和计算机可读存储介质 | |
EP2892181B1 (en) | Method, device and physical host for managing physical network card | |
JP5837206B2 (ja) | 分離された仮想空間を提供するための方法および装置 | |
EP2656210B1 (en) | Providing a persona-based application experience | |
WO2018036103A1 (zh) | 虚拟机创建方法、系统以及主机 | |
US10263907B2 (en) | Managing virtual network ports | |
RU2009109090A (ru) | Компонующий администратор окон рабочего стола | |
CN113641457A (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
US9858110B2 (en) | Virtual credential adapter for use with virtual machines | |
CN110032413A (zh) | 一种桌面虚拟化方法、相关设备及计算机存储介质 | |
CN1973274A (zh) | 多客户机间共享物理设备 | |
CN102821021A (zh) | 在虚拟化计算环境下运行虚拟交换机的方法和系统 | |
US10021111B2 (en) | Location based authentication of users to a virtual machine in a computer system | |
CN109697120A (zh) | 用于应用迁移的方法、电子设备 | |
CN109726005A (zh) | 用于管理资源的方法、服务器系统和计算机程序产品 | |
WO2018090606A1 (zh) | 数据存储方法及装置 | |
US10691310B2 (en) | Copying/pasting items in a virtual desktop infrastructure (VDI) environment | |
CN106502760A (zh) | 一种虚拟机亲和性策略可视化的方法及装置 | |
CN109240800A (zh) | 一种基于Hypervisor多系统共享内存的管理方法 | |
US9424114B2 (en) | Input/output (I/O) processing via a page fault doorbell mechanism | |
CN113485791B (zh) | 配置方法和访问方法、装置、虚拟化系统和存储介质 | |
US10585730B1 (en) | Enqueue-related processing based on timing out of an attempted enqueue | |
CN107544751B (zh) | 一种远程访问磁盘的方法和装置 |
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 | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20171219 Assignee: Kedong (Guangzhou) Software Technology Co., Ltd Assignor: Beijing Dongtu Technology Co., Ltd.|Beijing keyin Jingcheng Technology Co., Ltd Contract record no.: X2020980000255 Denomination of invention: Shared memory-based virtual machine communication method and device Granted publication date: 20200121 License type: Exclusive License Record date: 20200218 |
|
EE01 | Entry into force of recordation of patent licensing contract |