CN107943596A - 进程通信方法、装置及*** - Google Patents
进程通信方法、装置及*** Download PDFInfo
- Publication number
- CN107943596A CN107943596A CN201610891511.6A CN201610891511A CN107943596A CN 107943596 A CN107943596 A CN 107943596A CN 201610891511 A CN201610891511 A CN 201610891511A CN 107943596 A CN107943596 A CN 107943596A
- Authority
- CN
- China
- Prior art keywords
- host
- shared
- section key
- virtual machine
- shared section
- 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.)
- Pending
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
-
- 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
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
本发明公开了一种进程通信方法、装置及***,涉及信息技术领域,可以提高虚拟机中进程与宿主机中进程之间的通信效率。本发明的主要技术方案为:首先宿主机接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;然后根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;最后通过所述共享内存区与所述虚拟机进行进程通信。本发明主要用于进程之间的通信。
Description
技术领域
本发明涉及信息技术领域,尤其涉及一种进程通信方法、装置及***。
背景技术
随着信息技术的不断发展,虚拟机技术得到广泛应用。虚拟机(Virtual Machine)是指通过软件模拟的、具有完整硬件功能的,运行在一个完全隔离环境中的完整计算机***。通过虚拟机软件,可以在一台物理计算机上模拟出一台或多台虚拟的计算机。虚拟机可以像真正的计算机那样进行工作,例如,可以安装操作***、安装应用程序、访问网络资源等等。通常虚拟机所在的物理计算机称为宿主机(HOST),虚拟机自身称为客户机(Guest)。虚拟机中进程与宿主机中进程之间可以进行通信,从而可以实现虚拟机与宿主机之间的数据交互。
目前,在虚拟化平台上,虚拟机中进程与宿主机中进程之间进行通信时,通常是通过网络传输虚拟机与宿主机之间的交互数据,然而,由于网络条件受外界干扰因素较多,无法保证网络条件一直保持良好状态,当网络条件较差时,会导致进程之间的通信效率低下。
发明内容
有鉴于此,本发明实施例提供了一种进程通信方法、装置及***,主要目的是解决通过网络进行虚拟机中进程与宿主机中进程之间的通信,会造成进程通信效率较低的问题。
为达到上述目的,本发明提供如下技术方案:
一方面,本发明提供了一种进程通信方法,包括:
宿主机接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;
根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;
通过所述共享内存区与所述虚拟机进行进程通信。
另一方面,本发明提供了另一种进程通信方法,包括:
虚拟机向宿主机发送共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息,以使得所述宿主机根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;
通过所述共享内存区与所述宿主机进行进程通信。
又一方面,本发明提供了一种宿主机,包括:
接收单元,用于接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;
创建单元,用于根据所述接收单元接收的创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;
通信单元,用于通过所述创建单元创建的共享内存区与所述虚拟机进行进程通信。
再一方面,本发明提供了一种虚拟机,包括:
发送单元,用于向宿主机发送共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息,以使得所述宿主机根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;
通信单元,用于通过所述共享内存区与所述宿主机进行进程通信。
再一方面,本发明提供了一种进程通信***,包括:宿主机和虚拟机;
所述虚拟机,用于向所述宿主机发送共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;
所述宿主机,用于接收所述虚拟机发送的共享内存区的创建请求;根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;通过所述共享内存区与所述虚拟机进行进程通信。
借由上述技术方案,本发明实施例提供的技术方案至少具有下列优点:
本发明实施例提供的一种进程通信方法、装置及***,首先宿主机接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;然后根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;最后通过所述共享内存区与所述虚拟机进行进程通信。与目前通过网络进行虚拟机中进程与宿主机中进程之间的通信相比,本发明可以在不重启虚拟机、不新增虚拟设备的情况下,建立虚拟机中进程与宿主机中进程之间的内存共享区,创建得到的内存共享区的大小及数量可以灵活配置,通过内存共享区进行进程之间的通信,不会受到网络条件因素的影响,可以提高进程之间的通信效率,并且同一个虚拟机中进程可以和一个或多个宿主机中进程建立内存共享区进行通信。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的共享内存区实例示意图;
图2示出了本发明实施例提供的一种进程通信方法的流程图;
图3示出了本发明实施例提供的另一种进程通信方法的流程图;
图4示出了本发明实施例提供的间接页实例示意图;
图5示出了本发明实施例提供的又一种进程通信方法的流程图;
图6示出了本发明实施例提供的再一种进程通信方法的流程图;
图7示出了本发明实施例提供的一种宿主机的结构示意图;
图8示出了本发明实施例提供的另一种宿主机的结构示意图;
图9示出了本发明实施例提供的一种虚拟机的结构示意图;
图10示出了本发明实施例提供的另一种虚拟机的结构示意图;
图11示出了本发明实施例提供的一种进程通信***的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种虚拟机中进程与宿主机中进程之间创建共享内存区的机制,具体的,如图1所示,以虚拟操作***模拟器Qemu为例进行说明。Qemu在宿主机中启动时,将虚拟机的内存后端文件映射到Qemu进程的地址空间中。宿主机中的进程根据Qemu进程的PID(Process Identification,进程识别号),在Qemu用户空间中查找映射虚拟机中内存的进程线性区,通过该进程线性区确定虚拟机的内存后端文件,然后将该文件中的部分内容映射到宿主机中进程的地址空间,进而建立虚拟机中进程与宿主机中进程之间的共享内存区。
基于上述机制,本发明实施例提供了一种进程通信方法,可以应用于宿主机,如图2所示,所述方法包括:
101、宿主机接收虚拟机发送的共享内存区的创建请求。
其中,所述创建请求中包含所述共享内存区对应的创建配置信息。所述创建配置信息中可以包含需要创建的共享内存区的长度、虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址等。
102、根据创建配置信息,创建宿主机中进程与虚拟机中进程之间的共享内存区。
对于本发明实施例,提供了一种虚拟机中进程与宿主机中进程之间创建共享内存区的机制,具体的以虚拟操作***模拟器Qemu为例进行说明。
例如,根据要创建的共享内存区的长度,在宿主机进程中分配一大块连续的线性区,并将创建配置信息中包含的虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址转换成对应的宿主机虚拟空间地址,然后逐页以映射共享MAP_SHARED的方式,将虚拟机中共享内存对应的内存后端文件通过预设MMAP函数映射到上述分配的一大块连续的线性区中,进而得到本地进程与虚拟机中进程之间的共享内存区。其中,预设MMAP函数可以根据实际需求进行编写配置,用于将一个文件或其它对象映射进内存。
103、通过共享内存区与虚拟机进行进程通信。
例如,在宿主机中创建的共享内存区内映射有虚拟机对应的内存后端文件,通过读写该内存后端文件等操作,与虚拟机进行进程通信。
本发明实施例提供的一种进程通信方法,首先宿主机接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;然后根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;最后通过所述共享内存区与所述虚拟机进行进程通信。与目前通过网络进行虚拟机中进程与宿主机中进程之间的通信相比,本发明可以在不重启虚拟机、不新增虚拟设备的情况下,建立虚拟机中进程与宿主机中进程之间的内存共享区,创建得到的内存共享区的大小及数量可以灵活配置,通过内存共享区进行进程之间的通信,不会受到网络条件因素的影响,可以提高进程之间的通信效率,并且同一个虚拟机中进程可以和一个或多个宿主机中进程建立内存共享区进行通信。
进一步地,本发明实施例提供了另一种进程通信方法,可以应用于宿主机,如图3所示,所述方法包括:
201、宿主机接收虚拟机发送的共享内存区的创建请求。
其中,所述创建请求中包含所述共享内存区对应的创建配置信息。所述创建配置信息中包含需要创建的共享内存区的长度以及所述虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址,所述虚拟机中共享内存内保存有内存后端文件。
具体地,所述步骤201具体可以包括:通过预设高级虚拟化管理接口AVMI接口函数,接收虚拟机发送的共享内存区的创建请求。其中,所述预设高级虚拟化管理接口AVMI接口函数可以根据实际需求进行配置。
对于本发明实施例,若所述创建请求的数据长度大于或等于预设阈值,所述步骤201具体可以包括:接收虚拟机通过间接页发送的共享内存区的创建请求,所述间接页中保存有所述虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址。其中,所述预设阈值可以根据实际需求进行配置,例如,预设阈值可以配置为4KB等。
例如,虚拟机发送共享内存区的创建请求时,除了基本的信息(如消息长度、消息类型等)之外,还需要传送所有共享内存页的物理空间地址,每一个物理空间地址都占用一个无符号长整数unsigned long长度。由于每次发送的消息有最大限制,为避免请求分片,需要约束一个创建请求的数据长度小于或等于4KB。为了解决这个问题,可以采用间接页保存虚拟机中对应的每个共享内存页的物理空间地址gpa。具体如图4所示,当共享内存页的页数小于256时,共享内存页的物理空间地址gpa保存在创建请求对应的数据data数组中;当共享内存页的页数大于或等于256时,先将共享内存页的物理空间地址gpa保存在间接页中,再将间接页的物理空间地址gpa保存在创建请求对应的数据data数组中。
在本发明实施例中,由于虚拟机每次发送的请求消息有最大限制,当创建请求的数据长度大于或等于预设阈值时,为避免请求分片,可以通过间接页发送虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址,进而可以创建大块共享内存区,可以满足更多的进程通信需求。
202、根据创建配置信息,创建宿主机中进程与虚拟机中进程之间的共享内存区。
对于本发明实施例,所述步骤202具体可以包括:根据所述需要创建的共享内存区的长度,在所述宿主机中进程中分配进程线性区;根据所述进程线性区和所述每个共享内存页的物理空间地址,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
根据所述进程线性区和所述每个共享内存页的物理空间地址,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区包括:通过将所述每个共享内存页的物理空间地址转换为所述宿主机中虚拟空间地址,将所述内存后端文件映射到所述进程线性区中,得到所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
203、记录共享内存区的标识信息并发送给虚拟机。
其中,所述标识信息可以为名称信息、ID(Identity,身份标识号码)等。进一步地,以使得所述虚拟机确定与所述标识信息对应的共享内存区创建成功。在本发明实施例中,通过记录共享内存区的标识信息,当需要管理共享内存区时,可以依据记录的标识信息找到对应的共享内存区进行管理,进而可以满足共享内存区的管理需求。
进一步地,可以将新创建的共享内存区的标识信息以及起始地址,返回给宿主机用户空间,以便进行相应管理。
204、通过共享内存区与虚拟机进行进程通信。
对于本发明实施例,所述步骤204具体可以包括:通过所述进程线性区中映射的所述内存后端文件,进行所述宿主机中进程与所述虚拟机中进程之间的通信。
205、按照预设时间间隔检测是否触发预设删除共享内存区条件。
其中,所述预设时间间隔可以根据实际需求进行配置,例如,可以配置为0.01s、0.1s等。
对于本发明实施例,所述步骤205具体可以包括:按照预设时间间隔检测是否接收到虚拟机发送的共享内存区的删除请求,所述删除请求中包含需要删除的共享内存区的标识信息,以便删除与所述标识信息对应的共享内存区;若是,则确定触发预设删除共享内存区条件。
需要说明的是,对于本发明实施例,删除共享内存区的操作只能由虚拟机侧发起,宿主机侧进行响应,即在宿主机侧不能主动发起一个删除共享内存区的请求。具体地,虚拟机可以通过预设AVMI接口函数,向宿主机发送一个删除共享内存区的请求。
对于本发明实施例,所述步骤205具体还可以包括:按照预设时间间隔检测共享内存区对应的本地进程是否终止;若是,则确定触发预设删除共享内存区条件。
在本发明实施例中,通过按照预设时间间隔检测是否触发预设删除共享内存区条件,可以实现及时对共享内存区进行删除,避免造成宿主机出现未知错误。
206、若检测出触发了预设删除共享内存区条件,则通过解除共享内存区与内存后端文件之间的映射关系并将预设文件映射到共享内存区对应的进程线性区中,将共享内存区进行删除。
其中,所述预设文件可以配置为/dev/zero文件等。
例如,宿主机通过预设AVMI接口函数接收到了虚拟机侧发送的共享内存区的删除请求,根据请求中包含的需要删除的共享内存区的ID,可以确定要删除的共享内存区,并把该共享内存区对应的进程线性区重新映射到其他文件,比如/dev/zero文件等,从而安全解除宿主机对虚拟机中对应的内存后端文件的映射。最后,宿主机通过预设AVMI接口函数回复一个成功删除共享内存区的信息给虚拟机,通知共享内存区已删除。
207、向虚拟机发送共享内存区的删除成功信息。
进一步地,以使得所述虚拟机根据所述删除成功信息,对所述共享内存对应的共享内存页的引用计数进行统计,进而避免虚拟机重复发送相同的删除请求。例如,虚拟机接收到共享内存区的删除成功信息后,将共享内存页的引用计数减1,从而释放共享内存。
进一步地,在本发明实施例中,同一个虚拟机还可以向多个宿主机发送共享内存区的创建请求,进而可以创建同一个虚拟机与多个宿主机之间分别对应的共享内存区,通过这些共享内存区可以实现同一个虚拟机中进程和多个宿主机中进程进行通信。
本发明实施例提供的另一种进程通信方法,首先宿主机接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;然后根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;最后通过所述共享内存区与所述虚拟机进行进程通信。与目前通过网络进行虚拟机中进程与宿主机中进程之间的通信相比,本发明可以在不重启虚拟机、不新增虚拟设备的情况下,建立虚拟机中进程与宿主机中进程之间的内存共享区,创建得到的内存共享区的大小及数量可以灵活配置,通过内存共享区进行进程之间的通信,不会受到网络条件因素的影响,可以提高进程之间的通信效率,并且同一个虚拟机中进程可以和一个或多个宿主机中进程建立内存共享区进行通信。
进一步地,本发明实施例提供了又一种进程通信方法,可以应用于虚拟机,如图5所示,所述方法包括:
301、虚拟机向宿主机发送共享内存区的创建请求。
其中,所述创建请求中包含所述共享内存区对应的创建配置信息。进一步地,以使得所述宿主机根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
具体地,对于本发明实施例,当虚拟机接收到共享内存区的创建请求的发送指令时,首先在用户空间中为本地进程分配一块虚拟内存,并向虚拟机内核发送一个创建共享内存区的请求,该请求包含要创建的共享内存的起始地址和长度,虚拟机内核根据该长度,计算出要分配的页框数,并根据该起始地址触发虚拟机物理内存分配,以及获取分配到的物理内存的每一页的物理空间地址,最后向宿主机发送共享内存区的创建请求,该创建请求中包含需要创建的共享内存区的长度以及为本地进程分配的共享内存对应的每个共享内存页的物理空间地址等。
302、通过共享内存区与宿主机进行进程通信。
需要说明的是,对于本发明实施例,主要的实现是在内核态,并不局限于某一种操作***核心,例如,*nux,*bsd等等。
本发明实施例提供的又一种进程通信方法,首先虚拟机向宿主机发送共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息,以使得所述宿主机根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;然后通过所述共享内存区与所述宿主机进行进程通信。与目前通过网络进行虚拟机中进程与宿主机中进程之间的通信相比,本发明可以在不重启虚拟机、不新增虚拟设备的情况下,建立虚拟机中进程与宿主机中进程之间的内存共享区,创建得到的内存共享区的大小及数量可以灵活配置,通过内存共享区进行进程之间的通信,不会受到网络条件因素的影响,可以提高进程之间的通信效率,并且同一个虚拟机中进程可以和一个或多个宿主机中进程建立内存共享区进行通信。
进一步地,本发明实施例提供了再一种进程通信方法,可以应用于虚拟机,如图6所示,所述方法包括:
401、虚拟机向宿主机发送共享内存区的创建请求。
其中,所述创建请求中包含所述共享内存区对应的创建配置信息,创建配置信息包含需要创建的共享内存区的长度以及为所述虚拟机中进程分配的共享内存对应的每个共享内存页的物理空间地址。进一步地,以使得所述宿主机根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
需要说明的是,所述步骤401具体可以包括:通过预设高级虚拟化管理接口AVMI接口函数,向宿主机发送共享内存区的创建请求。
对于本发明实施例,所述步骤401之前还可以包括:为所述虚拟机中进程分配共享内存;将内存后端文件保存在所述共享内存中。在宿主机侧,宿主机根据需要创建的共享内存区的长度,在本地进程中分配进程线性区,通过将所述每个共享内存页的物理空间地址转换为本地虚拟空间地址,将所述内存后端文件映射到所述进程线性区中,得到宿主机中进程与所述虚拟机中进程之间的共享内存区。
例如,虚拟机物理内存映射到虚拟机物理地址空间的布局区域如下,其中N值取决于虚拟机的体系结构:当虚拟机内存大小ramsize小于NG时,映射的物理地址空间为[0,ramsize-1];当虚拟机内存大于NG时,映射的物理地址空间为[0,G-1]和[4G,ramsize-NG-1]。假设N值为3,位于[4G,ramsize-3G-1]的宿主机物理空间地址gpa,转换成宿主机虚拟空间地址hva的计算公式为:gpa->hva:hva_base+(gpa-0x100000000ULL+0xc0000000ULL),其中,hva_base为宿主机虚拟空间地址的起始地址;位于[0,ramsize-1]的gpa地址,转换成hva的计算公式为:gpa->hva:hva_base+gpa。
对于本发明实施例,所述步骤401具体可以包括:检测所述创建请求的数据长度是否大于或等于预设阈值;若是,则通过间接页向所述宿主机发送所述创建请求,其中,所述间接页中保存有为所述虚拟机中进程分配的共享内存对应的每个共享内存页的物理空间地址。所述预设阈值可以根据实际需求进行配置。需要说明的是,对应的具体实现过程可以参考步骤201中相应描述,在此不再赘述。在本发明实施例中,由于虚拟机每次发送的请求消息有最大限制,当创建请求的数据长度大于或等于预设阈值时,为避免请求分片,可以通过间接页发送虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址,进而可以创建大块共享内存区,可以满足更多的进程通信需求。
402、对共享内存对应的共享内存页的引用计数进行统计。
其中,所述创建成功信息中包含所述共享内存区的标识信息。
例如,当虚拟机成功发送创建内存共享区的请求后,将共享内存页的引用计数增1。
需要说明的是,虚拟机侧释放掉共享内存,而宿主机依然保持着对共享内存的映射的这种情况是可能存在的。例如,共享内存的虚拟机进程主动释放该共享内存或虚拟机中进程终止都将导致共享内存被虚拟机内核回收。出现这种情况造成的影响是,可能宿主机还在读写内存共享区,但是与其对应的共享内存已经被虚拟机回收,虚拟机可能将其用作它用,因此可能会造成虚拟机出现未知错误。为了避免这种情况发生,虚拟机侧需要增加对共享内存页的引用计数的操作。例如,在虚拟机成功发送创建共享内存区的请求后,将共享内存页的引用计数增1;当虚拟机收到成功删除共享内存区的回复时,将共享内存页的引用计数减1;当虚拟机进程终止时,将共享内存页的引用计数减1。
403、记录宿主机发送的共享内存区的标识信息。
对于本发明实施例,虚拟机接收到共享内存区的标识信息后,可以确定该共享内存区已经创建成功。并记录该标识信息,以便后续发起共享内存区的删除请求。
404、通过共享内存区与宿主机进行进程通信。
对于本发明实施例,通过所述宿主机分配的进程线性区中映射的所述内存后端文件,进行本地进程与所述宿主机中进程之间的通信。
405、当接收到共享内存区的删除指令时,向宿主机发送共享内存区的删除请求。
其中,所述删除请求中包含需要删除的共享内存区的标识信息,进一步地,以使得所述宿主机根据所述标识信息,确定需要删除的共享内存区,通过解除所述共享内存区与所述内存后端文件之间的映射关系并将预设文件映射到所述共享内存区对应的进程线性区中,将所述共享内存区进行删除。需要说明的是,所述删除指令可以由用户主动输入,例如,通过触击删除指令按钮等使虚拟机中进程主动释放共享内存;所述删除指令也可以由检测虚拟机中进程终止时生成。
406、当接收到宿主机发送的共享内存区的删除成功信息时,根据删除成功信息,对共享内存对应的共享内存页的引用计数进行统计。
具体地,可以通过预设高级虚拟化管理接口AVMI接口函数,接收宿主机发送的共享内存区的删除成功信息。
需要说明的是,对于已经建立了共享内存区的虚拟机中进程和宿主机中进程,无论是虚拟机中进程终止,还是宿主机中进程终止,都需要进行接下来的关闭流程:首先宿主机中进程先执行重新映射操作,将之前建立的共享内存区重新映射到其他文件,如/dev/zero文件等;然后虚拟机中进程将共享内存区关联的页的引用计数减1,从而释放共享内存区。目的是为了避免虚拟机中进程先被终止时,导致虚拟机出现未知错误,即虚拟机内核可能将该进程对应的共享内存进行回收并用作它用,但宿主机如果没有对共享内存区做重新映射,仍有可能对共享内存区执行读写操作,而导致错误。
本发明实施例提供的再一种进程通信方法,首先虚拟机向宿主机发送共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息,以使得所述宿主机根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;然后通过所述共享内存区与所述宿主机进行进程通信。与目前通过网络进行虚拟机中进程与宿主机中进程之间的通信相比,本发明可以在不重启虚拟机、不新增虚拟设备的情况下,建立虚拟机中进程与宿主机中进程之间的内存共享区,创建得到的内存共享区的大小及数量可以灵活配置,通过内存共享区进行进程之间的通信,不会受到网络条件因素的影响,可以提高进程之间的通信效率,并且同一个虚拟机中进程可以和一个或多个宿主机中进程建立内存共享区进行通信。
进一步地,作为图2所示方法的具体实现,本发明实施例提供了一种宿主机,如图7所示,所述宿主机可以包括:接收单元51、创建单元52、通信单元53。
所述接收单元51,可以用于接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息。
所述创建单元52,可以用于根据所述接收单元51接收的创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
所述通信单元53,可以用于通过所述创建单元52创建的共享内存区与所述虚拟机进行进程通信。
需要说明的是,该装置实施例与前述方法实施例对应,具体可以参考图2中的对应描述,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。
本发明实施例提供的一种宿主机,首先宿主机接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;然后根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;最后通过所述共享内存区与所述虚拟机进行进程通信。与目前通过网络进行虚拟机中进程与宿主机中进程之间的通信相比,本发明可以在不重启虚拟机、不新增虚拟设备的情况下,建立虚拟机中进程与宿主机中进程之间的内存共享区,创建得到的内存共享区的大小及数量可以灵活配置,通过内存共享区进行进程之间的通信,不会受到网络条件因素的影响,可以提高进程之间的通信效率,并且同一个虚拟机中进程可以和一个或多个宿主机中进程建立内存共享区进行通信。
进一步地,作为图3所示方法的具体实现,本发明实施例提供了另一种宿主机,如图8所示,所述宿主机可以包括:接收单元61、创建单元62、通信单元63。
所述接收单元61,可以用于接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息。
所述创建单元62,可以用于根据所述接收单元61接收的创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
所述通信单元63,可以用于通过所述创建单元62创建的共享内存区与所述虚拟机进行进程通信。
可选地,所述创建配置信息中包含需要创建的共享内存区的长度以及所述虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址。
进一步地,所述创建单元62包括:分配模块621、创建模块622。
所述分配模块621,可以用于根据所述需要创建的共享内存区的长度,在所述宿主机中进程中分配进程线性区。
所述创建模块622,可以用于根据所述进程线性区和所述每个共享内存页的物理空间地址,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
可选地,所述虚拟机中共享内存内保存有内存后端文件。
所述创建模块622,具体可以用于通过将所述每个共享内存页的物理空间地址转换为所述宿主机中虚拟空间地址,将所述内存后端文件映射到所述进程线性区中,得到所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
所述通信单元63,具体可以用于通过所述进程线性区中映射的所述内存后端文件,进行所述宿主机中进程与所述虚拟机中进程之间的通信。
进一步地,所述宿主机还包括:记录单元64、发送单元65、检测单元66、删除单元67。
所述记录单元64,可以用于记录所述共享内存区的标识信息。
所述发送单元65,可以用于向所述虚拟机发送所述共享内存区的标识信息。
所述检测单元66,可以用于按照预设时间间隔检测是否触发预设删除共享内存区条件。
所述删除单元67,可以用于若所述检测单元66检测出触发了预设删除共享内存区条件,则将所述共享内存区进行删除。
所述发送单元65,可以用于向所述虚拟机发送所述共享内存区的删除成功信息。
所述删除单元67,具体可以用于通过解除所述共享内存区与所述内存后端文件之间的映射关系并将预设文件映射到所述共享内存区对应的进程线性区中,将所述共享内存区进行删除。
进一步地,以使得所述虚拟机根据所述删除成功信息,对所述共享内存对应的共享内存页的引用计数进行统计。
所述检测单元66,具体可以用于按照预设时间间隔检测是否接收到虚拟机发送的共享内存区的删除请求,所述删除请求中包含需要删除的共享内存区的标识信息。
进一步地,以便于删除与所述标识信息对应的共享内存区。
所述检测单元66,具体还可以用于若接收到虚拟机发送的共享内存区的删除请求,则确定触发预设删除共享内存区条件。
所述检测单元66,具体可以用于按照预设时间间隔检测共享内存区对应的所述宿主机中进程是否终止。
所述检测单元66,具体还可以用于若共享内存区对应的所述宿主机中进程终止,则确定触发预设删除共享内存区条件。
所述接收单元61,具体可以用于若所述创建请求的数据长度大于或等于预设阈值,接收虚拟机通过间接页发送的共享内存区的创建请求,所述间接页中保存有所述虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址。
所述接收单元61,具体可以用于通过预设高级虚拟化管理接口AVMI接口函数,接收虚拟机发送的共享内存区的创建请求。
需要说明的是,该装置实施例与前述方法实施例对应,具体可以参考图3中的对应描述,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。
所述宿主机包括处理器和存储器,上述接收单元、创建单元、通信单元、记录单元、发送单元、检测单元、删除单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决通过网络进行虚拟机中进程与宿主机中进程之间的通信,会造成进程通信效率较低的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM),存储器包括至少一个存储芯片。
本发明实施例提供的另一种宿主机,首先宿主机接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;然后根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;最后通过所述共享内存区与所述虚拟机进行进程通信。与目前通过网络进行虚拟机中进程与宿主机中进程之间的通信相比,本发明可以在不重启虚拟机、不新增虚拟设备的情况下,建立虚拟机中进程与宿主机中进程之间的内存共享区,创建得到的内存共享区的大小及数量可以灵活配置,通过内存共享区进行进程之间的通信,不会受到网络条件因素的影响,可以提高进程之间的通信效率,并且同一个虚拟机中进程可以和一个或多个宿主机中进程建立内存共享区进行通信。
进一步地,作为图5所示方法的具体实现,本发明实施例提供了一种虚拟机,如图9所示,所述虚拟机可以包括:发送单元71、通信单元72。
所述发送单元71,可以用于向宿主机发送共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息。
进一步地,以使得所述宿主机根据所述创建配置信息,创建本地进程与所述虚拟机中进程之间的共享内存区。
所述通信单元72,可以用于通过所述共享内存区与所述宿主机进行进程通信。
需要说明的是,本发明实施例提供的一种虚拟机所涉及各功能单元的其他相应描述,可以参考图5中的对应描述,在此不再赘述。
本发明实施例提供的一种虚拟机,首先虚拟机通过发送单元向宿主机发送共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息,以使得所述宿主机根据所述创建配置信息,创建本地进程与所述虚拟机中进程之间的共享内存区;然后通信单元通过所述共享内存区与所述宿主机进行进程通信。与目前通过网络进行虚拟机中进程与宿主机中进程之间的通信相比,本发明可以在不重启虚拟机、不新增虚拟设备的情况下,建立虚拟机中进程与宿主机中进程之间的内存共享区,创建得到的内存共享区的大小及数量可以灵活配置,通过内存共享区进行进程之间的通信,不会受到网络条件因素的影响,可以提高进程之间的通信效率,并且同一个虚拟机中进程可以和一个或多个宿主机中进程建立内存共享区进行通信。
进一步地,作为图6所示方法的具体实现,本发明实施例提供了另一种虚拟机,如图10所示,所述虚拟机可以包括:发送单元81、通信单元82。
所述发送单元81,可以用于向宿主机发送共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息。
进一步地,以使得所述宿主机根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
所述通信单元82,可以用于通过所述共享内存区与所述宿主机进行进程通信。
可选地,所述创建配置信息中包含需要创建的共享内存区的长度以及所述虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址。
进一步地,所述虚拟机还包括:分配单元83、保存单元84。
所述分配单元83,可以用于为所述虚拟机中进程分配共享内存。
所述保存单元84,可以用于将内存后端文件保存在所述共享内存中。
所述通信单元82,具体可以用于通过所述进程线性区中映射的所述内存后端文件,进行所述虚拟机中进程与所述宿主机中进程之间的通信。
进一步地,所述虚拟机还包括:统计单元85、记录单元86。
所述统计单元85,可以用于对所述共享内存对应的共享内存页的引用计数进行统计。
所述记录单元86,可以用于记录所述宿主机发送的共享内存区的标识信息。
所述发送单元81,还可以用于当接收到共享内存区的删除指令时,向所述宿主机发送共享内存区的删除请求,所述删除请求中包含需要删除的共享内存区的标识信息。
进一步地,以使得所述宿主机删除与所述标识信息对应的共享内存区。
所述统计单元85,还可以用于当接收到所述宿主机发送的所述共享内存区的删除成功信息时,根据所述删除成功信息,对所述共享内存对应的共享内存页的引用计数进行统计。
所述发送单元81,具体可以用于检测所述创建请求的数据长度是否大于或等于预设阈值。
所述发送单元81,具体还可以用于若所述创建请求的数据长度大于或等于所述预设阈值,则通过间接页向所述宿主机发送所述创建请求,所述间接页中保存有为所述虚拟机中进程分配的共享内存对应的每个共享内存页的物理空间地址。
所述发送单元81,具体可以用于通过预设高级虚拟化管理接口AVMI接口函数,向宿主机发送共享内存区的创建请求。
需要说明的是,本发明实施例提供的另一种虚拟机所涉及各功能单元的其他相应描述,可以参考图6中的对应描述,在此不再赘述。
本发明实施例提供的另一种虚拟机,首先虚拟机通过发送单元向宿主机发送共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息,以使得所述宿主机根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;然后通信单元通过所述共享内存区与所述宿主机进行进程通信。与目前通过网络进行虚拟机中进程与宿主机中进程之间的通信相比,本发明可以在不重启虚拟机、不新增虚拟设备的情况下,建立虚拟机中进程与宿主机中进程之间的内存共享区,创建得到的内存共享区的大小及数量可以灵活配置,通过内存共享区进行进程之间的通信,不会受到网络条件因素的影响,可以提高进程之间的通信效率,并且同一个虚拟机中进程可以和一个或多个宿主机中进程建立内存共享区进行通信。
进一步地,本发明实施例提供了一种进程通信***,如图11所示,包括:宿主机91、虚拟机92。
所述虚拟机92,可以用于向所述宿主机91发送共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息。
所述宿主机91,可以用于接收所述虚拟机92发送的共享内存区的创建请求;根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;通过所述共享内存区与所述虚拟机92进行进程通信。
本发明实施例提供的一种进程通信***,首先宿主机接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;然后根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;最后通过所述共享内存区与所述虚拟机进行进程通信。与目前通过网络进行虚拟机中进程与宿主机中进程之间的通信相比,本发明可以在不重启虚拟机、不新增虚拟设备的情况下,建立虚拟机中进程与宿主机中进程之间的内存共享区,创建得到的内存共享区的大小及数量可以灵活配置,通过内存共享区进行进程之间的通信,不会受到网络条件因素的影响,可以提高进程之间的通信效率,并且同一个虚拟机中进程可以和一个或多个宿主机中进程建立内存共享区进行通信。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:宿主机接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;通过所述共享内存区与所述虚拟机进行进程通信。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的进程通信方法、装置、***、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (37)
1.一种进程通信方法,其特征在于,包括:
宿主机接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;
根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;
通过所述共享内存区与所述虚拟机进行进程通信。
2.根据权利要求1所述的进程通信方法,其特征在于,所述创建配置信息中包含需要创建的共享内存区的长度以及所述虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址。
3.根据权利要求2所述的进程通信方法,其特征在于,所述根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区包括:
根据所述需要创建的共享内存区的长度,在所述宿主机中进程中分配进程线性区;
根据所述进程线性区和所述每个共享内存页的物理空间地址,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
4.根据权利要求3所述的进程通信方法,其特征在于,所述虚拟机中共享内存内保存有内存后端文件,所述根据所述进程线性区和所述每个共享内存页的物理空间地址,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区包括:
通过将所述每个共享内存页的物理空间地址转换为所述宿主机中虚拟空间地址,将所述内存后端文件映射到所述进程线性区中,得到所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
5.根据权利要求4所述的进程通信方法,其特征在于,所述通过所述共享内存区与所述虚拟机进行进程通信包括:
通过所述进程线性区中映射的所述内存后端文件,进行所述宿主机中进程与所述虚拟机中进程之间的通信。
6.根据权利要求4所述的进程通信方法,其特征在于,所述根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区之后,所述方法还包括:
记录所述共享内存区的标识信息并发送给所述虚拟机;
按照预设时间间隔检测是否触发预设删除共享内存区条件;
若是,则将所述共享内存区进行删除并向所述虚拟机发送所述共享内存区的删除成功信息,以使得所述虚拟机根据所述删除成功信息,对所述共享内存对应的共享内存页的引用计数进行统计。
7.根据权利要求6所述的进程通信方法,其特征在于,所述将所述共享内存区进行删除包括:
通过解除所述共享内存区与所述内存后端文件之间的映射关系并将预设文件映射到所述共享内存区对应的进程线性区中,将所述共享内存区进行删除。
8.根据权利要求6所述的进程通信方法,其特征在于,所述按照预设时间间隔检测是否触发预设删除共享内存区条件包括:
按照预设时间间隔检测是否接收到虚拟机发送的共享内存区的删除请求,所述删除请求中包含需要删除的共享内存区的标识信息,以便删除与所述标识信息对应的共享内存区;
若是,则确定触发预设删除共享内存区条件。
9.根据权利要求6所述的进程通信方法,其特征在于,所述按照预设时间间隔检测是否触发预设删除共享内存区条件包括:
按照预设时间间隔检测共享内存区对应的所述宿主机中进程是否终止;
若是,则确定触发预设删除共享内存区条件。
10.根据权利要求1所述的进程通信方法,其特征在于,若所述创建请求的数据长度大于或等于预设阈值,所述接收虚拟机发送的共享内存区的创建请求包括:
接收虚拟机通过间接页发送的共享内存区的创建请求,所述间接页中保存有所述虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址。
11.根据权利要求1所述的进程通信方法,其特征在于,所述宿主机接收虚拟机发送的共享内存区的创建请求包括:
通过预设高级虚拟化管理接口AVMI接口函数,宿主机接收虚拟机发送的共享内存区的创建请求。
12.一种进程通信方法,其特征在于,包括:
虚拟机向宿主机发送共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息,以使得所述宿主机根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;
通过所述共享内存区与所述宿主机进行进程通信。
13.根据权利要求12所述的进程通信方法,其特征在于,所述创建配置信息中包含需要创建的共享内存区的长度以及所述虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址。
14.根据权利要求12所述的进程通信方法,其特征在于,所述虚拟机向宿主机发送共享内存区的创建请求之前,所述方法还包括:
为所述虚拟机中进程分配共享内存;
将内存后端文件保存在所述共享内存中。
15.根据权利要求14所述的进程通信方法,其特征在于,所述通过所述共享内存区与所述宿主机进行进程通信包括:
通过所述宿主机分配的进程线性区中映射的所述内存后端文件,进行所述虚拟机中进程与所述宿主机中进程之间的通信。
16.根据权利要求12所述的进程通信方法,其特征在于,所述虚拟机向宿主机发送共享内存区的创建请求之后,所述方法还包括:
对所述共享内存对应的共享内存页的引用计数进行统计;
记录所述宿主机发送的共享内存区的标识信息;
当接收到共享内存区的删除指令时,向所述宿主机发送共享内存区的删除请求,所述删除请求中包含需要删除的共享内存区的标识信息,以使得所述宿主机删除与所述标识信息对应的共享内存区;
当接收到所述宿主机发送的所述共享内存区的删除成功信息时,根据所述删除成功信息,对所述共享内存对应的共享内存页的引用计数进行统计。
17.根据权利要求12所述的进程通信方法,其特征在于,所述虚拟机向宿主机发送共享内存区的创建请求包括:
检测所述创建请求的数据长度是否大于或等于预设阈值;
若是,则通过间接页向所述宿主机发送所述创建请求,所述间接页中保存有为所述虚拟机中进程分配的共享内存对应的每个共享内存页的物理空间地址。
18.根据权利要求12所述的进程通信方法,其特征在于,所述虚拟机向宿主机发送共享内存区的创建请求包括:
通过预设高级虚拟化管理接口AVMI接口函数,向宿主机发送共享内存区的创建请求。
19.一种宿主机,其特征在于,包括:
接收单元,用于接收虚拟机发送的共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息;
创建单元,用于根据所述接收单元接收的创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;
通信单元,用于通过所述创建单元创建的共享内存区与所述虚拟机进行进程通信。
20.根据权利要求19所述的宿主机,其特征在于,所述创建配置信息中包含需要创建的共享内存区的长度以及所述虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址。
21.根据权利要求20所述的宿主机,其特征在于,所述创建单元包括:
分配模块,用于根据所述需要创建的共享内存区的长度,在所述宿主机中进程中分配进程线性区;
创建模块,用于根据所述进程线性区和所述每个共享内存页的物理空间地址,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
22.根据权利要求21所述的宿主机,其特征在于,所述虚拟机中共享内存内保存有内存后端文件,
所述创建模块,具体用于通过将所述每个共享内存页的物理空间地址转换为所述宿主机中虚拟空间地址,将所述内存后端文件映射到所述进程线性区中,得到所述宿主机中进程与所述虚拟机中进程之间的共享内存区。
23.根据权利要求22所述的宿主机,其特征在于,
所述通信单元,具体用于通过所述进程线性区中映射的所述内存后端文件,进行所述宿主机中进程与所述虚拟机中进程之间的通信。
24.根据权利要求22所述的宿主机,其特征在于,所述宿主机还包括:
记录单元,用于记录所述共享内存区的标识信息;
发送单元,用于向所述虚拟机发送所述共享内存区的标识信息;
检测单元,用于按照预设时间间隔检测是否触发预设删除共享内存区条件;
删除单元,用于若所述检测单元检测出触发了预设删除共享内存区条件,则将所述共享内存区进行删除;
所述发送单元,用于向所述虚拟机发送所述共享内存区的删除成功信息,以使得所述虚拟机根据所述删除成功信息,对所述共享内存对应的共享内存页的引用计数进行统计。
25.根据权利要求24所述的宿主机,其特征在于,
所述删除单元,具体用于通过解除所述共享内存区与所述内存后端文件之间的映射关系并将预设文件映射到所述共享内存区对应的进程线性区中,将所述共享内存区进行删除。
26.根据权利要求24所述的宿主机,其特征在于,
所述检测单元,具体用于按照预设时间间隔检测是否接收到虚拟机发送的共享内存区的删除请求,所述删除请求中包含需要删除的共享内存区的标识信息,以便删除与所述标识信息对应的共享内存区;
若接收到虚拟机发送的共享内存区的删除请求,则确定触发预设删除共享内存区条件。
27.根据权利要求24所述的宿主机,其特征在于,
所述检测单元,具体用于按照预设时间间隔检测共享内存区对应的所述宿主机中进程是否终止;
若共享内存区对应的所述宿主机中进程终止,则确定触发预设删除共享内存区条件。
28.根据权利要求19所述的宿主机,其特征在于,
所述接收单元,具体用于若所述创建请求的数据长度大于或等于预设阈值,接收虚拟机通过间接页发送的共享内存区的创建请求,所述间接页中保存有所述虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址。
29.根据权利要求19所述的宿主机,其特征在于,
所述接收单元,具体用于通过预设高级虚拟化管理接口AVMI接口函数,接收虚拟机发送的共享内存区的创建请求。
30.一种虚拟机,其特征在于,包括:
发送单元,用于向宿主机发送共享内存区的创建请求,所述创建请求中包含所述共享内存区对应的创建配置信息,以使得所述宿主机根据所述创建配置信息,创建所述宿主机中进程与所述虚拟机中进程之间的共享内存区;
通信单元,用于通过所述共享内存区与所述宿主机进行进程通信。
31.根据权利要求30所述的虚拟机,其特征在于,所述创建配置信息中包含需要创建的共享内存区的长度以及所述虚拟机中为进程分配的共享内存对应的每个共享内存页的物理空间地址。
32.根据权利要求30所述的虚拟机,其特征在于,所述虚拟机还包括:分配单元和保存单元;
分配单元,用于为所述虚拟机中进程分配共享内存;
保存单元,用于将内存后端文件保存在所述共享内存中。
33.根据权利要求32所述的虚拟机,其特征在于,
所述通信单元,具体用于通过所述进程线性区中映射的所述内存后端文件,进行所述虚拟机中进程与所述宿主机中进程之间的通信。
34.根据权利要求30所述的虚拟机,其特征在于,所述虚拟机还包括:统计单元和记录单元;
所述统计单元,用于对所述共享内存对应的共享内存页的引用计数进行统计;
所述记录单元,用于记录所述宿主机发送的共享内存区的标识信息;
所述发送单元,还用于当接收到共享内存区的删除指令时,向所述宿主机发送共享内存区的删除请求,所述删除请求中包含需要删除的共享内存区的标识信息,以使得所述宿主机删除与所述标识信息对应的共享内存区;
所述统计单元,还用于当接收到所述宿主机发送的所述共享内存区的删除成功信息时,根据所述删除成功信息,对所述共享内存对应的共享内存页的引用计数进行统计。
35.根据权利要求30所述的虚拟机,其特征在于,
所述发送单元,具体用于检测所述创建请求的数据长度是否大于或等于预设阈值;
若所述创建请求的数据长度大于或等于所述预设阈值,则通过间接页向所述宿主机发送所述创建请求,所述间接页中保存有为所述虚拟机中进程分配的共享内存对应的每个共享内存页的物理空间地址。
36.根据权利要求30所述的虚拟机,其特征在于,
所述发送单元,具体用于通过预设高级虚拟化管理接口AVMI接口函数,向宿主机发送共享内存区的创建请求。
37.一种进程通信***,其特征在于,包括:权利要求19-29任一项所述的宿主机和权利要求30-36任一项所述的虚拟机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610891511.6A CN107943596A (zh) | 2016-10-12 | 2016-10-12 | 进程通信方法、装置及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610891511.6A CN107943596A (zh) | 2016-10-12 | 2016-10-12 | 进程通信方法、装置及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107943596A true CN107943596A (zh) | 2018-04-20 |
Family
ID=61928794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610891511.6A Pending CN107943596A (zh) | 2016-10-12 | 2016-10-12 | 进程通信方法、装置及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107943596A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829529A (zh) * | 2018-06-14 | 2018-11-16 | 中国平安人寿保险股份有限公司 | 虚拟机内存共享方法、装置、计算机设备及存储介质 |
CN108897603A (zh) * | 2018-07-03 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种内存资源管理方法和装置 |
CN110083465A (zh) * | 2019-04-26 | 2019-08-02 | 上海连尚网络科技有限公司 | 一种寄宿应用间的数据传递方法 |
CN111679921A (zh) * | 2020-06-09 | 2020-09-18 | Oppo广东移动通信有限公司 | 内存共享方法、内存共享装置及终端设备 |
CN111796902A (zh) * | 2019-04-08 | 2020-10-20 | 维塔科技(北京)有限公司 | 切换共享内存区的方法和装置、存储介质和电子设备 |
CN111813584A (zh) * | 2020-08-05 | 2020-10-23 | Oppo广东移动通信有限公司 | 内存共享方法、装置、电子设备及存储介质 |
CN112822266A (zh) * | 2021-01-05 | 2021-05-18 | 成都安思科技有限公司 | 一种基于内存共享的虚拟机内外通信方法 |
CN113590254A (zh) * | 2020-04-30 | 2021-11-02 | 深信服科技股份有限公司 | 一种虚拟机通信的方法、装置、***和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697134A (zh) * | 2009-10-27 | 2010-04-21 | 北京大学 | 一种支持相似虚拟机快速启动的方法 |
CN101808141A (zh) * | 2010-04-19 | 2010-08-18 | 浙江大学 | 一种基于虚拟化平台的宿主客户机协同换页的方法 |
US8261284B2 (en) * | 2007-09-13 | 2012-09-04 | Microsoft Corporation | Fast context switching using virtual cpus |
CN103176833A (zh) * | 2013-03-11 | 2013-06-26 | 华为技术有限公司 | 一种基于虚拟机的数据发送方法、接收方法及*** |
CN105159742A (zh) * | 2015-07-06 | 2015-12-16 | 北京星网锐捷网络技术有限公司 | 一种虚拟机pci设备透传方法和*** |
-
2016
- 2016-10-12 CN CN201610891511.6A patent/CN107943596A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8261284B2 (en) * | 2007-09-13 | 2012-09-04 | Microsoft Corporation | Fast context switching using virtual cpus |
CN101697134A (zh) * | 2009-10-27 | 2010-04-21 | 北京大学 | 一种支持相似虚拟机快速启动的方法 |
CN101808141A (zh) * | 2010-04-19 | 2010-08-18 | 浙江大学 | 一种基于虚拟化平台的宿主客户机协同换页的方法 |
CN103176833A (zh) * | 2013-03-11 | 2013-06-26 | 华为技术有限公司 | 一种基于虚拟机的数据发送方法、接收方法及*** |
CN105159742A (zh) * | 2015-07-06 | 2015-12-16 | 北京星网锐捷网络技术有限公司 | 一种虚拟机pci设备透传方法和*** |
Non-Patent Citations (1)
Title |
---|
徐健: "基于虚拟化技术的安全桌面***研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829529A (zh) * | 2018-06-14 | 2018-11-16 | 中国平安人寿保险股份有限公司 | 虚拟机内存共享方法、装置、计算机设备及存储介质 |
CN108897603A (zh) * | 2018-07-03 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种内存资源管理方法和装置 |
CN108897603B (zh) * | 2018-07-03 | 2021-10-01 | 郑州云海信息技术有限公司 | 一种内存资源管理方法和装置 |
CN111796902A (zh) * | 2019-04-08 | 2020-10-20 | 维塔科技(北京)有限公司 | 切换共享内存区的方法和装置、存储介质和电子设备 |
CN111796902B (zh) * | 2019-04-08 | 2024-03-19 | 维塔科技(北京)有限公司 | 切换共享内存区的方法和装置、存储介质和电子设备 |
CN110083465A (zh) * | 2019-04-26 | 2019-08-02 | 上海连尚网络科技有限公司 | 一种寄宿应用间的数据传递方法 |
CN113590254A (zh) * | 2020-04-30 | 2021-11-02 | 深信服科技股份有限公司 | 一种虚拟机通信的方法、装置、***和介质 |
CN111679921A (zh) * | 2020-06-09 | 2020-09-18 | Oppo广东移动通信有限公司 | 内存共享方法、内存共享装置及终端设备 |
CN111813584A (zh) * | 2020-08-05 | 2020-10-23 | Oppo广东移动通信有限公司 | 内存共享方法、装置、电子设备及存储介质 |
CN112822266A (zh) * | 2021-01-05 | 2021-05-18 | 成都安思科技有限公司 | 一种基于内存共享的虚拟机内外通信方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107943596A (zh) | 进程通信方法、装置及*** | |
US10199068B2 (en) | High resolution tape directory (HRTD) stored at end of data in an index partition | |
US9111109B2 (en) | Using different secure erase algorithms to erase chunks from a file associated with different security levels | |
US20190334727A1 (en) | Secure Data Deduplication with Smaller Hash Values | |
US9817582B2 (en) | Offload read and write offload provider | |
CN111428208B (zh) | 一种应用软件授权方法、装置及存储介质 | |
WO2017000928A1 (zh) | 基于应用程序的隐私信息存储方法及装置 | |
CN106201659B (zh) | 一种虚拟机热迁移的方法及宿主机 | |
CN107590395B (zh) | 适用于云环境的多层数据加密方法、装置、设备及*** | |
CN109327557A (zh) | 一种虚拟机ip地址的管理方法及装置 | |
CN106557704A (zh) | 内容中心网络中的信息和数据框架 | |
CN110472978B (zh) | 一种数字货币地址防篡改方法及*** | |
GB2606424A (en) | Data access monitoring and control | |
CN110554911A (zh) | 内存访问与分配方法、存储控制器及*** | |
CN114710263B (zh) | 密钥管理方法、密钥管理装置、密钥管理设备及存储介质 | |
CN107329836A (zh) | 多***的内存管理方法、管理装置以及移动终端 | |
WO2016183906A1 (zh) | 一种存储空间分配方法及装置 | |
CN107968793A (zh) | 一种下载白盒密钥的方法、装置及*** | |
US11496284B2 (en) | Detection of unauthorized encryption using key length evaluation | |
CN107357631A (zh) | 一种管理虚拟机密钥的方法和装置及计算机可读存储介质 | |
JP5972455B2 (ja) | 情報を削除する方法 | |
CN109754251B (zh) | 一种数据处理方法及其装置、介质、终端 | |
US10552600B2 (en) | Securing a media storage device using application authority assignment | |
CN108616537A (zh) | 一种低耦合的通用数据加解密方法及*** | |
US20240078539A1 (en) | Constructing a cold wallet using a server-side hardware security module |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180420 |
|
RJ01 | Rejection of invention patent application after publication |