CN107278292A - 一种虚拟机内存的映射方法、装置及数据传输设备 - Google Patents
一种虚拟机内存的映射方法、装置及数据传输设备 Download PDFInfo
- Publication number
- CN107278292A CN107278292A CN201680004815.4A CN201680004815A CN107278292A CN 107278292 A CN107278292 A CN 107278292A CN 201680004815 A CN201680004815 A CN 201680004815A CN 107278292 A CN107278292 A CN 107278292A
- Authority
- CN
- China
- Prior art keywords
- memory
- virtual machine
- pfn
- memory headroom
- virtual
- 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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
- G06F2009/45583—Memory management, e.g. access or allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种虚拟机内存的映射方法、装置及数据传输设备,其中,该方法包括:获取为第一虚拟机分配的第一内存空间的地址信息(101);获取第二虚拟机的虚拟页面对应的物理内存的地址信息(102),所述第二虚拟机为需要与所述第一虚拟机进行数据传输的虚拟机;根据所述第一内存空间的地址信息与所述物理内存的地址信息,建立所述第一内存空间的线性地址与所述物理内存的内存地址的映射关系(103)。该方法能够提升数据传输速率,并降低设备功耗。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种虚拟机内存的映射方法、装置及数据传输设备。
背景技术
xen是一个基于开源软件组织的虚拟机监控器(virtual machine monitor,简称为“VMM”),其可以允许在单一设备上同时运行多个操作系统实例。xen平台为虚拟机提供了半虚拟化网卡,其由客户操作系统里的虚拟网卡前端(简称“前端”,即frontend)和虚拟网卡后端(简称“后端”,即backend)两部分构成,该虚拟网卡前端和虚拟网卡后端之间能够通过xen提供的hypercall(超级调用)进行内存页的授权拷贝或授权映射,从而完成数据传输。例如,从前端来看,在虚拟网卡接收方向(即前端接收后端发送的数据时),是通过前端将用于接收数据的内存页的信息传给后端,使得后端在接收到数据需要传输到前端时,能够通过xen提供的授权拷贝机制将数据复制到前端提供的内存页中;在虚拟网卡发送方向(即前端向后端发送数据时),是前端将存有待发送数据的内存页的信息传给后端,后端通过xen提供的授权拷贝机制,将数据从前端提供的内存页中拷贝到后端对应的线性地址空间,从而后端可访问要发送的数据。
由此可见,在通过授权拷贝或授权映射进行数据传输时,由于需要通过调用hypercall接收或发送数据,而每次调用hypercall时都会触发终端中央处理器(centralprocessing unit,简称为“CPU”)执行一系列操作,如执行权限切换和上下文切换操作等等,这就导致CPU功耗过大,尤其是在网络流量带宽较高,即需要传输的数据包较多时,则会严重制约数据传输速率。
发明内容
本发明实施例提供一种虚拟机内存的映射方法、装置及数据传输设备,能够提升数据传输速率,降低设备功耗。
第一方面,本发明实施例提供了一种虚拟机内存的映射方法,包括:
获取为第一虚拟机分配的第一内存空间的地址信息;
获取第二虚拟机的虚拟页面对应的物理内存的地址信息;
根据所述第一内存空间的地址信息与所述物理内存的地址信息,建立第一内存空间的线性地址与该物理内存的内存地址的映射关系。
其中,所述第二虚拟机为需要与所述第一虚拟机进行数据传输的虚拟机。可选的,所述第二虚拟机可以是通过所述第一虚拟机发送的虚拟机标识确定的,该虚拟机标识可携带于该第一内存空间的地址信息或其他信息中。
其中,所述第一内存空间为第一虚拟机操作系统中预先分配的一段线性地址区域,用于与第二虚拟机即其他虚拟机建立内存映射关系。该第一内存空间的地址信息可包括该第一内存空间的基地址和/或长度值等等,所述长度值指示的所述第一内存空间的内存大小与所述第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。
在一些实施例中,可在第一虚拟机操作系统中预先为该第一虚拟机分配一段内核线性地址区域,该分配的线性地址区域的大小可大于或等于该第二虚拟机对应的虚拟内存的大小。若大于,则第一内存空间为该线性地址区域的一部分,并可根据基地址和长度值信息从该线性地址区域中确定出与该第二虚拟机虚拟内存大小相同的第一内存空间。从而通过建立该第一内存空间与第二虚拟机的物理内存的映射关系来进行虚拟机之间的数据传输。
在一些实施例中,所述物理内存的地址信息可包括至少一个物理页面的主机页序号MFN;所述获取第二虚拟机的虚拟页面对应的物理内存的地址信息,包括:
根据存储的第二虚拟机的虚拟页面对应的虚机页序列号PFN与MFN的映射关系,确定出所述第二虚拟机中每一个PFN对应的MFN;
所述根据所述第一内存空间的地址信息与所述物理内存的地址信息,建立所述第一内存空间的线性地址与所述物理内存的内存地址的映射关系,包括:
确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系。
从而实现将第二虚拟机的虚拟页面对应的物理内存地址映射到为该第一虚拟机分配的第一内存空间中。
在一些实施例中,所述第一虚拟机和所述第二虚拟机的类型可均为半虚拟化PV类型,所述第一内存空间的地址信息还可包括所述第一内存空间的基地址;所述确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,包括:
根据所述第一内存空间的基地址、所述第二虚拟机的各虚拟页面的PFN、每一个虚拟页面的内存大小(也即“页面大小”),确定出所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址。
其中,第二虚拟机的虚拟页面的PFN与第一虚拟机的第一内存空间中的线性地址的对应关系可以为:
第一虚拟机线性地址=第一虚拟机基地址+第二虚拟机的PFN*页面大小
在一些实施例中,在确定第一虚拟机线性地址与第二虚拟机对应的MFN的映射关系之后,还可生成包括第一虚拟机线性地址与第二虚拟机对应的MFN的映射关系的页表,每一个PFN对应的第一虚拟机线性地址及其映射的MFN可作为该页表中的一个表项,从而能够通过表项查找实现将待发送的数据拷贝至第一虚拟机线性地址所映射的物理内存地址或者从该线性地址所映射的物理内存地址读取传输的数据内容,以实现数据传输。
在一些实施例中,在所述确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系之后,所述方法还包括:
检测所述第二虚拟机的各虚拟页面对应的PFN与MFN的映射关系是否发生变更;
若任一虚拟页面对应的PFN与MFN的映射关系发生变更,则获取映射关系发生变更的PFN及其对应的MFN,确定出该PFN在所述第一内存空间对应的线性地址,并将该PFN对应的MFN更新为与确定出的该第一内存空间对应的线性地址具有映射关系的MFN。
在一些实施例中,当第二虚拟机的虚拟页面PFN映射的主机物理页面MFN发生变化时,可将映射关系的变化同步到第一虚拟机的第一内存空间对应的页表中,即将与第二虚拟机PFN在第一虚拟机中对应的表项内容进行更新。从而实现第二虚拟机物理内存与该第一虚拟机的第一内存空间的线性地址的映射关系的更新。
在一些实施例中,所述第一虚拟机和所述第二虚拟机的类型均为硬件虚拟化HVM类型;所述方法还包括:
获取为第一虚拟机分配的第二内存空间的地址信息,所述第二内存空间的地址信息包括所述第二内存空间的基地址;
所述确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系,包括:
根据所述第二内存空间的基地址、所述第二虚拟机的各虚拟页面的PFN、每一个虚拟页面的页面大小,确定出所述第二虚拟机中每一个PFN对应的虚拟页面在所述第二内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系;
建立所述第二内存空间的线性地址与所述第一内存空间的线性地址的映射关系,以将所述第二虚拟机的各虚拟页面对应的MFN映射到所述第一内存空间。
在一些实施例中,在确定第一虚拟机第二内存空间与第二虚拟机对应的MFN的映射关系之后,可将该映射关系存储于预置的第一页表中。并进一步将该第二内存空间映射到第一内存空间,即建立第二内存空间的线性地址与该第一内存空间的线性地址的映射关系,并可将该第二内存空间的线性地址与该第一内存空间的线性地址的映射关系存储于第二页表中。从而能够通过两级映射的表项查找实现将待发送的数据拷贝至第一虚拟机线性地址所映射的物理内存地址或者从该线性地址所映射的物理内存地址读取传输的数据内容,以实现数据传输。
进一步的,在一些实施例中,所述方法还包括:
当创建所述第一虚拟机时,为所述第一虚拟机分配所述第二内存空间,并将所述第二内存空间的类型设置为保留类型。
其中,所述第二内存空间的地址信息还包括所述第二内存空间的长度值,所述长度值指示的所述第二内存空间的内存大小与所述第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。通过将该分配的PFN区域设置为保留类型,可使得操作系统不对这段内存空间进行动态分配,而只用于与第二虚拟机之间的内存映射。
在一些实施例中,在所述确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系之后,所述方法还包括:
检测所述第二虚拟机的各虚拟页面对应的PFN与MFN的映射关系是否发生变更;
若任一虚拟页面对应的PFN与MFN的映射关系发生变更,则获取映射关系发生变更的PFN及其对应的MFN,确定出该PFN在所述第二内存空间对应的线性地址,并将该PFN对应的MFN更新为与确定出的该第二内存空间对应的线性地址具有映射关系的MFN。
在一些实施例中,当第二虚拟机的虚拟页面PFN映射的主机物理页面MFN发生变化时,可将映射关系的变化同步到第一虚拟机的第二内存空间对应的页表中,即将与第二虚拟机PFN在第一虚拟机中PFN区域对应的表项内容进行更新。从而实现第二虚拟机物理内存与该第一虚拟机的第一内存空间的线性地址的映射关系的更新。
第二方面,本发明实施例还提供了一种虚拟机内存的映射装置,包括获取单元以及映射单元,所述虚拟机内存的映射装置通过上述单元实现第一方面的虚拟机内存的映射方法的部分或全部步骤。
第三方面,本发明实施例还提供了一种计算机存储介质,所述计算机存储介质存储有程序,所述程序执行时包括上述第一方面的虚拟机内存的映射方法的部分或全部的步骤。
第四方面,本发明实施例还提供了一种数据传输设备,包括:通信接口、存储器和处理器,所述处理器分别与所述通信接口及所述存储器连接;其中,
所述存储器用于存储驱动软件;
所述处理器从所述存储器读取所述驱动软件并在所述驱动软件的作用下执行上述第一方面的虚拟机内存的映射方法的部分或全部步骤。
实施本发明实施例,具有如下有益效果:
本发明实施例中,通过获取为第一虚拟机分配的第一内存空间的地址信息,以及获取第二虚拟机的虚拟页面对应的物理内存的地址信息,建立得到该第一内存空间的线性地址与该物理内存的内存地址的映射关系,以基于该映射关系在第一虚拟机和第二虚拟机之间传输数据,使得在进行数据传输时无需每次调用hypercall,从而提升了数据传输速率,并降低了设备功耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种系统架构图;
图2是本发明实施例提供的一种虚拟机内存的映射方法的流程示意图;
图3是本发明实施例提供的一种内存映射示意图;
图4是本发明实施例提供的另一种虚拟机内存的映射方法的流程示意图;
图5是本发明实施例提供的另一种内存映射示意图;
图6是本发明实施例提供的又一种虚拟机内存的映射方法的流程示意图;
图7是本发明实施例提供的又一种内存映射示意图;
图8是本发明实施例提供的一种虚拟机内存的映射装置的结构示意图;
图9是本发明实施例提供的另一种虚拟机内存的映射装置的结构示意图;
图10是本发明实施例提供的又一种虚拟机内存的映射装置的结构示意图;
图11是本发明实施例提供的一种数据传输设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应理解,本发明实施例涉及的“第一”、“第二”和“第三”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本发明实施例所涉及的技术方案可具体应用于各种操作系统(operatingsystem,简称为“OS”),包括但不限于Linux、Windows、UNIX系统。进一步的,该操作系统可运行于各种数据传输设备中,该数据传输设备包括但不限于智能手机(如Android手机、iOS手机等)、平板电脑、移动互联网设备(mobile internet devices,简称“MID”)、个人电脑等等。
应理解,在xen平台虚拟网卡前端(以下简称“前端”)和虚拟网卡后端(以下简称“后端”)之间可进行数据传输,该前端可运行于domU,该后端可运行于dom0,或者后端还可运行于用于进行输入输出管理的driver domain,本发明实施例以前端运行于domU、后端运行于dom0为例进行说明。其中,该dom0和domU可为操作系统中需要进行数据传输的虚拟机。
请参见图1,图1是本发明实施例提供的一种系统架构图,下面结合图1对本发明实施例的系统架构进行介绍。如图1所示,在启动承载有xen平台的数据传输设备时,即可启动dom0,从而dom0能够响应用户管理操作,运行虚拟网卡后端(backend)为与其他虚拟机(VM)提供通信服务等等。以下以dom0和其他虚拟机domU进行通信为例进行说明。其中,该domU运行于上述的虚拟网卡前端(frontend),dom0运行于上述的虚拟网卡后端,该domU和dom0均能调用hypercall进行操作。进一步的,该xen平台运行于数据传输设备的硬件(hardware)环境中,并通过驱动(driver)控制前端和后端之间的数据传输。可选的,虚拟机如dom0及domU的类型可以是半虚拟化(para-virtualized,简称“PV”)类型、硬件虚拟化(hardwarevirtual machine,简称“HVM”)类型等等。
本发明实施例公开了一种虚拟机内存的映射方法、装置及数据传输设备,使得在进行数据传输时无需每次调用hypercall,从而能够提升数据传输速率,降低设备功耗。以下分别详细说明。
请参见图2,是本发明实施例的一种虚拟机内存的映射方法的流程示意图。具体的,如图2所示,本发明实施例的所述虚拟机内存的映射方法可包括以下步骤:
101、获取为第一虚拟机分配的第一内存空间的地址信息。
需要说明的是,本发明实施例可以以虚拟机内存的映射装置(简称“映射装置”)的角度对该方法进行描述,xen虚拟化平台可运行于该映射装置中。进一步的,该映射装置可通过调用其存储的程序指令(驱动软件)来实现本发明实施例涉及的操作。
具体的,该第一虚拟机可与上述的dom0相对应。所述第一内存空间为dom0操作系统中分配的一段线性地址区域,用于与第二虚拟机即其他虚拟机建立内存映射关系。其中,该第一内存空间的地址信息可包括该第一内存空间的基地址以及长度值等等。
102、获取第二虚拟机的虚拟页面对应的物理内存的地址信息。
其中,该第二虚拟机可以与上述的domU相对应,该第二虚拟机是指需要与所述第一虚拟机建立内存映射关系的虚拟机,如需要与第一虚拟机进行数据传输的虚拟机。
可选的,所述第二虚拟机可以是通过所述第一虚拟机发送的虚拟机标识确定的。进一步可选的,该虚拟机标识可携带于该第一内存空间的地址信息中。
进一步的,所述第一内存空间的地址信息可包括该第一内存空间的长度值,所述长度值指示的所述第一内存空间的内存大小与所述第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。也就是说,为dom0分配的用于与domU物理内存建立映射关系的内存空间即第一内存空间与该domU对应的虚拟内存的大小(或者称为“长度”)相同。具体的,可在dom0操作系统中预先为dom0分配一段内核线性地址区域,该分配的线性地址区域的大小可大于或等于该domU对应的虚拟内存的大小,若大于,则第一内存空间为该线性地址区域的一部分,并可根据基地址和长度值信息从该线性地址区域中确定出该第一内存空间。
103、根据所述第一内存空间的地址信息与所述物理内存的地址信息,建立所述第一内存空间的线性地址与所述物理内存的内存地址的映射关系。
进一步的,请结合图3,图3是本发明实施例提供的一种内存映射示意图。如图3所示,映射装置通过获取其他虚拟机如domU对应的虚拟机地址空间(即“虚拟页面”)与物理内存地址的映射关系,建立该物理内存地址与dom0线性地址(即“第一内存空间”)的映射关系。
具体的,所述物理内存的地址信息可包括至少一个物理页面的主机页序号(machine frame number,简称为“MFN”)。则所述获取第二虚拟机的虚拟页面对应的物理内存的地址信息,可以具体为:根据存储的第二虚拟机的虚拟页面对应的虚机页序列号(physical frame number,简称为“PFN”)与MFN的映射关系,确定出所述第二虚拟机中每一个PFN对应的MFN。进一步的,所述根据所述第一内存空间的地址信息与所述物理内存的地址信息,建立所述第一内存空间的线性地址与所述物理内存的内存地址的映射关系,可以具体为:确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系。从而实现将第二虚拟机的虚拟页面对应的物理内存地址映射到为该第一虚拟机分配的第一内存空间中。
在第一虚拟机分配的内存空间即第一内存空间全量映射了第二虚拟机的物理内存,即将第二虚拟机的每一个虚拟页面对应的MFN分别与第一内存空间的线性地址建立映射关系之后,第一虚拟机通过对该第一内存空间的访问即可读取或更改第二虚拟机对应的物理内存中的内容。具体的,在虚拟网卡接收过程中,即第二虚拟机需要接收第一虚拟机发送的数据时,第二虚拟机把接收数据的线性地址直接通知给第一虚拟机,第一虚拟机在发送数据时,将数据直接拷贝至该线性地址映射的物理内存地址即可。在虚拟网卡发送过程中,即第二虚拟机需要向第一虚拟机发送数据时,第二虚拟机把要发送数据的线性地址通知给第一虚拟机,第一虚拟机访问与该线性地址对应的物理内存地址,即可获得需发送的数据内容。可选的,第一虚拟机可将第二虚拟机线性地址与第一虚拟机基地址的和,作为需要进行数据传输的线性地址,以将待发送的数据拷贝至该线性地址所映射的物理内存地址或者从该线性地址所映射的物理内存地址读取传输的数据内容。或者第一虚拟机还根据第二虚拟机中每一个PFN在第一内存空间对应的线性地址而建立的第一内存空间与第二虚拟机对应的MFN的其他映射关系,来确定该需要进行数据传输的线性地址,本发明实施例不做限定。
在本发明实施例中,能够通过获取为第一虚拟机分配的第一内存空间的地址信息,以及获取第二虚拟机的虚拟页面对应的物理内存的地址信息,建立得到该第一内存空间的线性地址与该物理内存的内存地址的映射关系,以基于该映射关系在第一虚拟机和第二虚拟机之间传输数据,使得在进行数据传输时无需每次调用hypercall,从而提升了数据传输速率,并降低了设备功耗。
进一步的,请参见图4,是本发明实施例的另一种虚拟机内存的映射方法的流程示意图。在本发明实施例中,第一虚拟机和第二虚拟机为PV类型。具体的,如图4所示,本发明实施例的所述虚拟机内存的映射方法可包括以下步骤:
201、获取为第一虚拟机分配的第一内存空间的地址信息。
202、根据存储的第二虚拟机的虚拟页面对应的PFN与MFN的映射关系,确定出所述第二虚拟机中每一个PFN对应的MFN。
其中,该第一虚拟机可与上述的dom0相对应,第二虚拟机可与上述的domU相对应。该第一内存空间的地址信息可包括该内存空间的基地址以及长度值等等,且该长度值指示的第一内存空间的内存大小与该第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。
203、根据所述第一内存空间的基地址、所述第二虚拟机的各虚拟页面的PFN、每一个虚拟页面的内存大小,确定出所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址。
204、建立确定出的线性地址与该PFN对应的MFN的映射关系。
进一步的,请一并结合图5,是本发明实施例提供的另一种内存映射示意图。如图5所示,通过获取domU的虚拟页面的PFN与物理内存地址对应的MFN的映射关系,即可建立该物理内存地址与dom0线性地址的映射关系。可选的,该PFN与MFN的映射关系可存储于预置的domU页表中,相应地,该物理内存地址与dom0线性地址的映射关系可存储于预置的dom0页表中。
具体实施例中,dom0可将第一内存空间的地址信息(包括基地址和长度值)发送给xen,xen则可依次查找domU虚机页面(虚拟页面)对应的MFN,并建立查找到的MFN与dom0的第一内存空间的线性地址的映射关系。具体可根据domU虚机页面的PFN,确定dom0的第一内存空间中与该PFN对应的线性地址,并获取得到各PFN对应的MFN,从而将该domU对应的MFN映射到该第一内存空间的线性地址。可选的,该domU可以是通过dom0发送的domU ID确定出的,该domU ID可携带于该第一内存空间的地址信息或其他信息中,也可以单独发送。其中,domU的虚拟页面的PFN(简称“domU PFN”)与dom0的第一内存空间中的线性地址(简称“dom0线性地址”)的对应关系可以为:
dom0线性地址=dom0基地址+domU PFN*页面大小
可选的,在确定dom0线性地址与domU对应的MFN的映射关系之后,还可生成包括dom0线性地址与domU对应的MFN的映射关系的页表,每一个PFN对应的dom0线性地址及其映射的MFN可作为该页表中的一个表项,以通过表项查找实现将待发送的数据拷贝至dom0线性地址所映射的物理内存地址或者从该线性地址所映射的物理内存地址读取传输的数据内容,以实现数据传输。
205、检测所述第二虚拟机的各虚拟页面对应的PFN与MFN的映射关系是否发生变更。
具体的,若检测到domU任一虚拟页面对应的PFN与MFN的映射关系发生变更,则可执行步骤206,进行映射关系更新;否则,可仍保持原来的映射关系,不做任何处理。
206、获取映射关系发生变更的PFN及其对应的MFN,确定出该PFN在所述第一内存空间对应的线性地址,并将该PFN对应的MFN更新为与确定出的该第一内存空间对应的线性地址具有映射关系的MFN。
具体的,当domU的虚拟页面PFN映射的主机物理页面MFN发生变化时,dom0即可调用hypercall通知xen进行修改。xen则可将映射关系的变化同步到dom0相应线性地址区域的页表,即将与domU PFN对应的dom0的页表项内容进行更新,将该domU PFN在dom0页表中对应的线性地址所映射的MFN替换为变化后与该domU PFN映射的MFN。
在本发明实施例中,对于PV类型的dom0,通过建立domU物理页面MFN到dom0线性地址的映射关系,使得dom0地址寻址可通过查询dom0页表中的映射关系寻址找到映射到指定线性地址的物理页面,以实现将待发送的数据拷贝至指定线性地址所映射的物理内存地址或者从该指定线性地址所映射的物理内存地址读取传输的数据内容来实现数据传输。
进一步的,请参见图6,是本发明实施例的又一种虚拟机内存的映射方法的流程示意图。在本发明实施例中,第一虚拟机和第二虚拟机为HVM类型,并使用硬件辅助分页(hardware assisted paging,简称为“HAP”)机制。具体的,如图6所示,本发明实施例的所述虚拟机内存的映射方法可包括以下步骤:
301、获取为第一虚拟机分配的第一内存空间的地址信息。
302、获取为第一虚拟机分配的第二内存空间的地址信息,所述第二内存空间的地址信息包括所述第二内存空间的基地址。
其中,该第一虚拟机可与上述的dom0相对应,第二虚拟机可与上述的domU相对应。该第一内存空间的地址信息及所述第二内存空间的地址信息均可包括相应内存空间的基地址以及长度值等等,且该长度值指示的第一内存空间的内存大小以及该第二内存空间的内存大小均与该第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。
具体实施例中,当创建所述第一虚拟机时,即可为第一虚拟机即dom0分配第二内存空间,并将所述第二内存空间的类型设置为保留类型。具体的,xen在创建dom0的过程中,可在e820表中多分配一个虚机页面PFN区域,即第二内存空间,用于映射其他虚拟机如domU的物理内存,并在dom0操作系统的启动过程中,将该分配的PFN区域设置为保留类型,使得操作系统不对这段内存空间进行动态分配,而只用于domU内存映射。
303、根据存储的第二虚拟机的虚拟页面对应的PFN与MFN的映射关系,确定出所述第二虚拟机中每一个PFN对应的MFN。
304、根据所述第二内存空间的基地址、所述第二虚拟机的各虚拟页面的PFN、每一个虚拟页面的页面大小,确定出所述第二虚拟机中每一个PFN对应的虚拟页面在所述第二内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系。
进一步的,请一并结合图7,是本发明实施例提供的又一种内存映射示意图。如图7所示,通过获取domU的虚拟页面的PFN与物理内存地址对应的MFN的映射关系,即可建立该物理内存地址与dom0PFN的映射关系,并进一步建立dom0PFN与dom0线性地址的映射关系。可选的,该PFN与MFN的映射关系可存储于预置的domU扩展页表中,相应地,该建立的domU物理内存地址与dom0PFN的映射关系可存储于预置的dom0扩展页表中,dom0PFN与dom0线性地址的映射关系可存储于预置的dom0页表中。
具体实施例中,可预先扩展xen的hypercall接口,获取dom0PFN区间的信息,包括基PFN,长度值等,即获取第二内存空间的地址信息,并确定出需要与其进行数据传输的其他虚拟机domU,如根据dom0发送的domU ID确定domU,从而依次对domU的所有PFN进行映射,实现domU对应的MFN到dom0第一内存空间的全量映射。具体的,xen可通过自身为domU维护的PFN到MFN的映射关系获取domU各虚拟页面的PFN分别对应的物理内存页面MFN,从而通过调用扩展的hypercall接口建立dom0第二内存空间与该MFN的映射关系,将domU的内存全量映射到该第二内存空间,并可将该映射关系存储于预置的第一页表(即上述的dom0扩展页表)中。其中,每一个PFN地址及其映射的MFN可作为该页表中的一个表项,其映射方式可参照上述图4-5对应实施例的相关描述,此处不再赘述。举例来说,对于domU中PFN为P的虚拟页面,xen可通过自身为domU维护的PFN到MFN的映射关系找到与P对应的物理内存页面M,从而将M更新到dom0扩展页表(即第一页表)中序号为(基PFN+P)的表项中。
305、建立所述第二内存空间的线性地址与所述第一内存空间的线性地址的映射关系,以将所述第二虚拟机的各虚拟页面对应的MFN映射到所述第一内存空间。
具体的,在建立得到dom0第二内存空间与该MFN的映射关系之后,即可将该第二内存空间映射到第一内存空间,即建立第二内存空间的线性地址与该第一内存空间的线性地址的映射关系。具体可通过控制dom0修改自身维护的页表(第二页表,如上述的dom0页表),将线性地址对应的页表项填充为对应的PFN,从而实现将该第二内存空间与该第一内存空间的映射关系存储于dom0页表中,此处不再赘述。
进一步的,在所述建立所述第二内存空间的线性地址与所述第一内存空间的线性地址的映射关系之后,还可检测所述第二虚拟机的各虚拟页面对应的PFN与MFN的映射关系是否发生变更。具体的,若检测到任一虚拟页面对应的PFN与MFN的映射关系发生变更,则可获取映射关系发生变更的PFN及其对应的MFN,确定出该PFN在所述第二内存空间对应的线性地址,并将该PFN对应的MFN更新为与确定出的该第二内存空间对应的线性地址具有映射关系的MFN。否则,可仍保持原来的映射关系,不做任何处理。
具体的,domU的扩展页表内容发生变化时,比如序号为P的表项对应的物理内存页面更新为M时,xen即可将变化的映射关系同步到dom0扩展页表中与P对应的表项,将该表项内容更新为M。
在本发明实施例中,对于HVM/HAP类型的dom0,通过建立domU物理页面MFN到dom0虚机页面PFN的映射关系,以及建立dom0虚机页面PFN到dom0线性地址的映射关系,使得dom0地址寻址可通过查询dom0页表和扩展页表两级映射,寻址找到映射到指定线性地址的物理页面,以实现将待发送的数据拷贝至指定线性地址所映射的物理内存地址或者从该指定线性地址所映射的物理内存地址读取传输的数据内容来实现数据传输。
请参见图8,图8是本发明实施例的一种虚拟机内存的映射装置的结构示意图。具体的,如图8所示,本发明实施例的所述虚拟机内存的映射装置可包括获取单元11以及映射单元12。其中,
所述获取单元11,用于获取为第一虚拟机分配的第一内存空间的地址信息。
具体的,该第一虚拟机可与上述的dom0相对应。所述第一内存空间为dom0操作系统中分配的一段线性地址区域,用于与第二虚拟机即其他虚拟机建立内存映射关系。其中,该第一内存空间的地址信息可包括该第一内存空间的基地址以及长度值等等。
所述获取单元11,还用于获取第二虚拟机的虚拟页面对应的物理内存的地址信息,所述第二虚拟机为需要与所述第一虚拟机进行数据传输的虚拟机。
其中,该第二虚拟机可以与上述的domU相对应,该第二虚拟机是指需要与所述第一虚拟机建立内存映射关系的虚拟机,如需要与第一虚拟机进行数据传输的虚拟机。
其中,所述第一内存空间的地址信息包括所述第一内存空间的长度值,所述长度值指示的所述第一内存空间的内存大小与所述第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。
可选的,所述第二虚拟机可以是通过所述第一虚拟机发送的虚拟机标识确定的。进一步可选的,该虚拟机标识可携带于该第一内存空间的地址信息中。
映射单元12,用于根据所述获取单元11获取的所述第一内存空间的地址信息与所述物理内存的地址信息,建立所述第一内存空间的线性地址与所述物理内存的内存地址的映射关系。
可选的,所述物理内存的地址信息包括至少一个物理页面的主机页序号MFN;所述获取单元11获取第二虚拟机的虚拟页面对应的物理内存的地址信息的具体方式可以为:
根据存储的第二虚拟机的虚拟页面对应的虚机页序列号PFN与MFN的映射关系,确定出所述第二虚拟机中每一个PFN对应的MFN;
所述映射单元12可具体用于:
确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系。
在第一虚拟机分配的内存空间即第一内存空间全量映射了第二虚拟机的物理内存,即映射单元12分别建立第二虚拟机的每一个虚拟页面对应的MFN与第一内存空间的线性地址的映射关系之后,第一虚拟机通过对该第一内存空间的访问即可读取或更改第二虚拟机对应的物理内存中的内容。
在本发明实施例中,能够通过获取为第一虚拟机分配的第一内存空间的地址信息,以及获取第二虚拟机的虚拟页面对应的物理内存的地址信息,建立得到该第一内存空间的线性地址与该物理内存的内存地址的映射关系,以基于该映射关系在第一虚拟机和第二虚拟机之间传输数据,使得在进行数据传输时无需每次调用hypercall,从而提升了数据传输速率,并降低了设备功耗。
进一步的,请参见图9,图9是本发明实施例的另一种虚拟机内存的映射装置的结构示意图。具体的,如图9所示,本发明实施例的所述装置包括上述图8对应实施例的虚拟机内存的映射装置的获取单元11以及映射单元12。在本发明实施例中,所述第一虚拟机和所述第二虚拟机的类型均为半虚拟化PV类型,所述第一内存空间的地址信息还包括所述第一内存空间的基地址;则所述映射单元12可具体用于:
根据所述第一内存空间的基地址、所述第二虚拟机的各虚拟页面的PFN、每一个虚拟页面的内存大小,确定出所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址;
建立确定出的线性地址与该PFN对应的MFN的映射关系。
其中,该第一虚拟机可与上述的dom0相对应,第二虚拟机可与上述的domU相对应。
具体实施例中,获取单元11可接收dom0发送的第一内存空间的地址信息(包括基地址和长度值),并依次查找domU虚拟页面对应的MFN,通过映射单元12建立查找到的MFN与dom0的第一内存空间的线性地址的映射关系。映射单元12具体可根据domU虚机页面的PFN,确定dom0的第一内存空间中与该PFN对应的线性地址,并获取得到各PFN对应的MFN,从而将该domU对应的MFN映射到该第一内存空间的线性地址。可选的,该domU可以是通过dom0发送的domU ID确定出的,该domU ID可携带于该第一内存空间的地址信息或其他信息中,也可以单独发送。从而通过将待发送的数据拷贝至dom0线性地址所映射的物理内存地址或者从该线性地址所映射的物理内存地址读取传输的数据内容来实现数据传输。
进一步的,在本发明实施例中,所述装置还包括:
第一检测单元13,用于检测所述第二虚拟机的各虚拟页面对应的PFN与MFN的映射关系是否发生变更;
第一更新单元14,用于在所述第一检测单元13检测到任一虚拟页面对应的PFN与MFN的映射关系发生变更时,获取映射关系发生变更的PFN及其对应的MFN,确定出该PFN在所述第一内存空间对应的线性地址,并将该PFN对应的MFN更新为与确定出的该第一内存空间对应的线性地址具有映射关系的MFN。
在本发明实施例中,对于PV类型的dom0,通过建立domU物理页面MFN到dom0线性地址的映射关系,使得dom0地址寻址可通过查询dom0页表中的映射关系寻址找到映射到指定线性地址的物理页面,以实现将待发送的数据拷贝至指定线性地址所映射的物理内存地址或者从该指定线性地址所映射的物理内存地址读取传输的数据内容来实现数据传输。
进一步的,请参见图10,图10是本发明实施例的又一种虚拟机内存的映射装置的结构示意图。具体的,如图10所示,本发明实施例的所述装置包括上述图8对应实施例的虚拟机内存的映射装置的获取单元11以及映射单元12。在本发明实施例中,所述第一虚拟机和所述第二虚拟机的类型均为硬件虚拟化HVM类型;进一步的,
所述获取单元11,还用于获取为第一虚拟机分配的第二内存空间的地址信息,所述第二内存空间的地址信息包括所述第二内存空间的基地址;
所述映射单元12可具体用于:
根据所述第二内存空间的基地址、所述第二虚拟机的各虚拟页面的PFN、每一个虚拟页面的页面大小,确定出所述第二虚拟机中每一个PFN对应的虚拟页面在所述第二内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系;
建立所述第二内存空间的线性地址与所述第一内存空间的线性地址的映射关系,以将所述第二虚拟机的各虚拟页面对应的MFN映射到所述第一内存空间。
进一步的,在本发明实施例中,所述装置还包括:
内存分配单元15,用于当创建所述第一虚拟机时,为所述第一虚拟机分配所述第二内存空间,并将所述第二内存空间的类型设置为保留类型。
其中,该第一虚拟机可与上述的dom0相对应,第二虚拟机可与上述的domU相对应。该第一内存空间的地址信息及所述第二内存空间的地址信息均可包括相应内存空间的基地址以及长度值等等,且该长度值指示的第一内存空间的内存大小以及该第二内存空间的内存大小均与该第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。
具体的,在创建dom0的过程中,内存分配单元15可在e820表中多分配一个虚机页面PFN区域,即第二内存空间,用于映射其他虚拟机如domU的物理内存,并在dom0操作系统的启动过程中,将该分配的PFN区域设置为保留类型,使得操作系统不对这段内存空间进行动态分配,而只用于domU内存映射。
进一步的,获取单元11可获取dom0PFN区间的信息,包括基PFN,长度值等,即获取第二内存空间的地址信息,并确定出需要与其进行数据传输的其他虚拟机domU,如根据dom0发送的domU ID确定domU,从而通过映射单元依次对domU的所有PFN进行映射,实现domU对应的MFN到dom0第一内存空间的全量映射。具体的,获取单元11可通过自身为domU维护的PFN到MFN的映射关系获取domU各虚拟页面的PFN分别对应的物理内存页面MFN,从而映射单元12可通过调用扩展的hypercall接口建立dom0第二内存空间与该MFN的映射关系,将domU的内存全量映射到该第二内存空间,并可将该映射关系存储于预置的第一页表(即上述的dom0扩展页表)中。在建立得到dom0第二内存空间与该MFN的映射关系之后,映射单元12即可将该第二内存空间映射到第一内存空间,即建立第二内存空间的线性地址与该第一内存空间的线性地址的映射关系。具体可通过控制dom0修改自身维护的页表(第二页表,如上述的dom0页表),将线性地址对应的页表项填充为对应的PFN,从而实现将该第二内存空间与该第一内存空间的映射关系存储于dom0页表中,此处不再赘述。
进一步的,所述装置还包括:
第二检测单元16,用于检测所述第二虚拟机的各虚拟页面对应的PFN与MFN的映射关系是否发生变更;
第二更新单元17,用于在所述第二检测单元16检测到任一虚拟页面对应的PFN与MFN的映射关系发生变更时,获取映射关系发生变更的PFN及其对应的MFN,确定出该PFN在所述第二内存空间对应的线性地址,并将该PFN对应的MFN更新为与确定出的该第二内存空间对应的线性地址具有映射关系的MFN。
在本发明实施例中,对于HVM/HAP类型的dom0,通过建立domU物理页面MFN到dom0虚机页面PFN的映射关系,以及建立dom0虚机页面PFN到dom0线性地址的映射关系,使得dom0地址寻址可通过查询dom0页表和扩展页表两级映射,寻址找到映射到指定线性地址的物理页面,以实现将待发送的数据拷贝至指定线性地址所映射的物理内存地址或者从该指定线性地址所映射的物理内存地址读取传输的数据内容来实现数据传输。
请参见图11,图11是本发明实施例提供的一种数据传输设备的结构示意图,用于执行上述的虚拟机内存的映射方法。具体的,如图11所示,本发明实施例的所述数据传输设备(以下简称“设备”)包括:通信接口300、存储器200和处理器100,所述处理器100分别与所述通信接口300及所述存储器200连接。所述存储器200可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。所述通信接口300、存储器200以及处理器100之间可以通过总线进行数据连接,也可以通过其他方式数据连接。本实施例中以总线连接进行说明。图11中示出的设备结构并不构成对本发明实施例的限定,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器100为设备的控制中心,利用各种接口和线路连接整个设备的各个部分,通过运行或执行存储在存储器200内的程序和/或单元,以及调用存储在存储器200内的驱动软件,以执行设备的各种功能和处理数据。处理器100可以由集成电路(integratedcircuit,简称IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器100可以仅包括中央处理器(centralprocessing unit,简称CPU),也可以是CPU、数字信号处理器(digital signal processor,简称DSP)、图形处理器(graphic processing unit,简称GPU)及各种控制芯片的组合。在本发明实施方式中,CPU可以是单运算核心,也可以包括多运算核心。
通信接口300可包括有线接口、无线接口等。
存储器200可用于存储驱动软件(或软件程序)以及单元,处理器100、通信接口300通过调用存储在存储器200中的驱动软件以及单元,从而执行设备的各项功能应用以及实现数据处理。存储器200主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的驱动软件等;数据存储区可存储根据设备的使用所创建的数据等,如上述的包括第二虚拟机物理内存与第一虚拟机第一内存空间的线性地址的映射关系的页表。在本发明实施例中,操作系统可以是Linux、Windows、UNIX、Android、iOS或Windows操作系统等等。
具体的,所述处理器100从所述存储器200读取所述驱动软件并在所述驱动软件的作用下执行:
通过所述通信接口300获取为第一虚拟机分配的第一内存空间的地址信息;
通过所述通信接口300获取第二虚拟机的虚拟页面对应的物理内存的地址信息,所述第二虚拟机为需要与所述第一虚拟机进行数据传输的虚拟机;
根据所述第一内存空间的地址信息与所述物理内存的地址信息,建立所述第一内存空间的线性地址与所述物理内存的内存地址的映射关系。
可选的,所述第一内存空间的地址信息包括所述第一内存空间的长度值,所述长度值指示的所述第一内存空间的内存大小与所述第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。
可选的,所述物理内存的地址信息包括至少一个物理页面的主机页序号MFN;所述处理器100从所述存储器200读取所述驱动软件并在所述驱动软件的作用下执行所述获取第二虚拟机的虚拟页面对应的物理内存的地址信息时,具体执行以下步骤:
根据存储的第二虚拟机的虚拟页面对应的虚机页序列号PFN与MFN的映射关系,确定出所述第二虚拟机中每一个PFN对应的MFN;
所述处理器100从所述存储器200读取所述驱动软件并在所述驱动软件的作用下执行所述根据所述第一内存空间的地址信息与所述物理内存的地址信息,建立所述第一内存空间的线性地址与所述物理内存的内存地址的映射关系,具体执行以下步骤:
确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系。
可选的,所述第一虚拟机和所述第二虚拟机的类型均为半虚拟化PV类型,所述第一内存空间的地址信息还包括所述第一内存空间的基地址;所述处理器100从所述存储器200读取所述驱动软件并在所述驱动软件的作用下执行所述确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,具体执行以下步骤:
根据所述第一内存空间的基地址、所述第二虚拟机的各虚拟页面的PFN、每一个虚拟页面的内存大小,确定出所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址。
可选的,在所述处理器100从所述存储器200读取所述驱动软件并在所述驱动软件的作用下执行所述确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系之后,还执行以下步骤:
检测所述第二虚拟机的各虚拟页面对应的PFN与MFN的映射关系是否发生变更;
若任一虚拟页面对应的PFN与MFN的映射关系发生变更,则获取映射关系发生变更的PFN及其对应的MFN,确定出该PFN在所述第一内存空间对应的线性地址,并将该PFN对应的MFN更新为与确定出的该第一内存空间对应的线性地址具有映射关系的MFN。
可选的,所述第一虚拟机和所述第二虚拟机的类型均为硬件虚拟化HVM类型;所述处理器100从所述存储器200读取所述驱动软件并在所述驱动软件的作用下还执行以下步骤:
通过所述通信接口300获取为第一虚拟机分配的第二内存空间的地址信息,所述第二内存空间的地址信息包括所述第二内存空间的基地址;
所述处理器100从所述存储器200读取所述驱动软件并在所述驱动软件的作用下执行所述确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系,具体执行以下步骤:
根据所述第二内存空间的基地址、所述第二虚拟机的各虚拟页面的PFN、每一个虚拟页面的页面大小,确定出所述第二虚拟机中每一个PFN对应的虚拟页面在所述第二内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系;
建立所述第二内存空间的线性地址与所述第一内存空间的线性地址的映射关系,以将所述第二虚拟机的各虚拟页面对应的MFN映射到所述第一内存空间。
可选的,在所述处理器100从所述存储器200读取所述驱动软件并在所述驱动软件的作用下执行所述确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系之后,还执行以下步骤:
检测所述第二虚拟机的各虚拟页面对应的PFN与MFN的映射关系是否发生变更;
若任一虚拟页面对应的PFN与MFN的映射关系发生变更,则获取映射关系发生变更的PFN及其对应的MFN,确定出该PFN在所述第二内存空间对应的线性地址,并将该PFN对应的MFN更新为与确定出的该第二内存空间对应的线性地址具有映射关系的MFN。
可选的,所述处理器100从所述存储器200读取所述驱动软件并在所述驱动软件的作用下还执行以下步骤:
当创建所述第一虚拟机时,为所述第一虚拟机分配所述第二内存空间,并将所述第二内存空间的类型设置为保留类型。
可选的,所述第二内存空间的地址信息还包括所述第二内存空间的长度值,所述长度值指示的所述第二内存空间的内存大小与所述第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。
可选的,所述第二虚拟机是通过所述第一虚拟机发送的虚拟机标识确定的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (21)
1.一种虚拟机内存的映射方法,其特征在于,包括:
获取为第一虚拟机分配的第一内存空间的地址信息;
获取第二虚拟机的虚拟页面对应的物理内存的地址信息,所述第二虚拟机为需要与所述第一虚拟机进行数据传输的虚拟机;
根据所述第一内存空间的地址信息与所述物理内存的地址信息,建立所述第一内存空间的线性地址与所述物理内存的内存地址的映射关系。
2.根据权利要求1所述的方法,其特征在于,所述第一内存空间的地址信息包括所述第一内存空间的长度值,所述长度值指示的所述第一内存空间的内存大小与所述第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。
3.根据权利要求1或2所述的方法,其特征在于,所述物理内存的地址信息包括至少一个物理页面的主机页序号MFN;所述获取第二虚拟机的虚拟页面对应的物理内存的地址信息,包括:
根据存储的第二虚拟机的虚拟页面对应的虚机页序列号PFN与MFN的映射关系,确定出所述第二虚拟机中每一个PFN对应的MFN;
所述根据所述第一内存空间的地址信息与所述物理内存的地址信息,建立所述第一内存空间的线性地址与所述物理内存的内存地址的映射关系,包括:
确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系。
4.根据权利要求3所述的方法,其特征在于,所述第一虚拟机和所述第二虚拟机的类型均为半虚拟化PV类型,所述第一内存空间的地址信息还包括所述第一内存空间的基地址;所述确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,包括:
根据所述第一内存空间的基地址、所述第二虚拟机的各虚拟页面的PFN、每一个虚拟页面的内存大小,确定出所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址。
5.根据权利要求4所述的方法,其特征在于,在所述确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系之后,所述方法还包括:
检测所述第二虚拟机的各虚拟页面对应的PFN与MFN的映射关系是否发生变更;
若任一虚拟页面对应的PFN与MFN的映射关系发生变更,则获取映射关系发生变更的PFN及其对应的MFN,确定出该PFN在所述第一内存空间对应的线性地址,并将该PFN对应的MFN更新为与确定出的该第一内存空间对应的线性地址具有映射关系的MFN。
6.根据权利要求3所述的方法,其特征在于,所述第一虚拟机和所述第二虚拟机的类型均为硬件虚拟化HVM类型;所述方法还包括:
获取为第一虚拟机分配的第二内存空间的地址信息,所述第二内存空间的地址信息包括所述第二内存空间的基地址;
所述确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系,包括:
根据所述第二内存空间的基地址、所述第二虚拟机的各虚拟页面的PFN、每一个虚拟页面的页面大小,确定出所述第二虚拟机中每一个PFN对应的虚拟页面在所述第二内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系;
建立所述第二内存空间的线性地址与所述第一内存空间的线性地址的映射关系,以将所述第二虚拟机的各虚拟页面对应的MFN映射到所述第一内存空间。
7.根据权利要求6所述的方法,其特征在于,在所述确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系之后,所述方法还包括:
检测所述第二虚拟机的各虚拟页面对应的PFN与MFN的映射关系是否发生变更;
若任一虚拟页面对应的PFN与MFN的映射关系发生变更,则获取映射关系发生变更的PFN及其对应的MFN,确定出该PFN在所述第二内存空间对应的线性地址,并将该PFN对应的MFN更新为与确定出的该第二内存空间对应的线性地址具有映射关系的MFN。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当创建所述第一虚拟机时,为所述第一虚拟机分配所述第二内存空间,并将所述第二内存空间的类型设置为保留类型。
9.根据权利要求6-8任一项所述的方法,其特征在于,所述第二内存空间的地址信息还包括所述第二内存空间的长度值,所述长度值指示的所述第二内存空间的内存大小与所述第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述第二虚拟机是通过所述第一虚拟机发送的虚拟机标识确定的。
11.一种虚拟机内存的映射装置,其特征在于,包括:
获取单元,用于获取为第一虚拟机分配的第一内存空间的地址信息;
所述获取单元,还用于获取第二虚拟机的虚拟页面对应的物理内存的地址信息,所述第二虚拟机为需要与所述第一虚拟机进行数据传输的虚拟机;
映射单元,用于根据所述获取单元获取的所述第一内存空间的地址信息与所述物理内存的地址信息,建立所述第一内存空间的线性地址与所述物理内存的内存地址的映射关系。
12.根据权利要求11所述的装置,其特征在于,所述第一内存空间的地址信息包括所述第一内存空间的长度值,所述长度值指示的所述第一内存空间的内存大小与所述第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。
13.根据权利要求11或12所述的装置,其特征在于,所述物理内存的地址信息包括至少一个物理页面的主机页序号MFN;所述获取单元获取第二虚拟机的虚拟页面对应的物理内存的地址信息的具体方式为:
根据存储的第二虚拟机的虚拟页面对应的虚机页序列号PFN与MFN的映射关系,确定出所述第二虚拟机中每一个PFN对应的MFN;
所述映射单元具体用于:
确定所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系。
14.根据权利要求13所述的装置,其特征在于,所述第一虚拟机和所述第二虚拟机的类型均为半虚拟化PV类型,所述第一内存空间的地址信息还包括所述第一内存空间的基地址;所述映射单元具体用于:
根据所述第一内存空间的基地址、所述第二虚拟机的各虚拟页面的PFN、每一个虚拟页面的内存大小,确定出所述第二虚拟机中每一个PFN对应的虚拟页面在所述第一内存空间对应的线性地址;
建立确定出的线性地址与该PFN对应的MFN的映射关系。
15.根据权利要求14所述的装置,其特征在于,所述装置还包括:
第一检测单元,用于检测所述第二虚拟机的各虚拟页面对应的PFN与MFN的映射关系是否发生变更;
第一更新单元,用于在所述第一检测单元检测到任一虚拟页面对应的PFN与MFN的映射关系发生变更时,获取映射关系发生变更的PFN及其对应的MFN,确定出该PFN在所述第一内存空间对应的线性地址,并将该PFN对应的MFN更新为与确定出的该第一内存空间对应的线性地址具有映射关系的MFN。
16.根据权利要求13所述的装置,其特征在于,所述第一虚拟机和所述第二虚拟机的类型均为硬件虚拟化HVM类型;
所述获取单元,还用于获取为第一虚拟机分配的第二内存空间的地址信息,所述第二内存空间的地址信息包括所述第二内存空间的基地址;
所述映射单元具体用于:
根据所述第二内存空间的基地址、所述第二虚拟机的各虚拟页面的PFN、每一个虚拟页面的页面大小,确定出所述第二虚拟机中每一个PFN对应的虚拟页面在所述第二内存空间对应的线性地址,并建立确定出的线性地址与该PFN对应的MFN的映射关系;
建立所述第二内存空间的线性地址与所述第一内存空间的线性地址的映射关系,以将所述第二虚拟机的各虚拟页面对应的MFN映射到所述第一内存空间。
17.根据权利要求16所述的装置,其特征在于,所述装置还包括:
第二检测单元,用于检测所述第二虚拟机的各虚拟页面对应的PFN与MFN的映射关系是否发生变更;
第二更新单元,用于在所述第二检测单元检测到任一虚拟页面对应的PFN与MFN的映射关系发生变更时,获取映射关系发生变更的PFN及其对应的MFN,确定出该PFN在所述第二内存空间对应的线性地址,并将该PFN对应的MFN更新为与确定出的该第二内存空间对应的线性地址具有映射关系的MFN。
18.根据权利要求16所述的装置,其特征在于,所述装置还包括:
内存分配单元,用于当创建所述第一虚拟机时,为所述第一虚拟机分配所述第二内存空间,并将所述第二内存空间的类型设置为保留类型。
19.根据权利要求16-18任一项所述的装置,其特征在于,所述第二内存空间的地址信息还包括所述第二内存空间的长度值,所述长度值指示的所述第二内存空间的内存大小与所述第二虚拟机的所有虚拟页面对应的虚拟内存的内存大小相同。
20.根据权利要求11-19任一项所述的装置,其特征在于,所述第二虚拟机是通过所述第一虚拟机发送的虚拟机标识确定的。
21.一种数据传输设备,其特征在于,包括:通信接口、存储器和处理器,所述处理器分别与所述通信接口及所述存储器连接;其中,
所述存储器用于存储驱动软件;
所述处理器从所述存储器读取所述驱动软件并在所述驱动软件的作用下执行:
通过所述通信接口获取为第一虚拟机分配的第一内存空间的地址信息;
通过所述通信接口获取第二虚拟机的虚拟页面对应的物理内存的地址信息,所述第二虚拟机为需要与所述第一虚拟机进行数据传输的虚拟机;
根据所述第一内存空间的地址信息与所述物理内存的地址信息,建立所述第一内存空间的线性地址与所述物理内存的内存地址的映射关系。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/086592 WO2017219250A1 (zh) | 2016-06-21 | 2016-06-21 | 一种虚拟机内存的映射方法、装置及数据传输设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107278292A true CN107278292A (zh) | 2017-10-20 |
CN107278292B CN107278292B (zh) | 2020-07-28 |
Family
ID=60052990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680004815.4A Active CN107278292B (zh) | 2016-06-21 | 2016-06-21 | 一种虚拟机内存的映射方法、装置及数据传输设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107278292B (zh) |
WO (1) | WO2017219250A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108197038A (zh) * | 2018-02-01 | 2018-06-22 | 深圳市风云实业有限公司 | 一种Linux数据传输方法、装置和用户终端 |
CN110308974A (zh) * | 2019-07-11 | 2019-10-08 | 联想(北京)有限公司 | 一种数据处理方法、虚拟机装置及虚拟机架构 |
WO2021129332A1 (zh) * | 2019-12-25 | 2021-07-01 | 中兴通讯股份有限公司 | 虚拟机部署及热迁移方法、vmm升级方法、服务器 |
WO2022000799A1 (zh) * | 2020-06-28 | 2022-01-06 | 华为技术有限公司 | 一种内存管理方法及设备 |
CN117492933A (zh) * | 2023-12-28 | 2024-02-02 | 苏州元脑智能科技有限公司 | 数据交换方法、装置、电子设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110737608B (zh) * | 2018-07-03 | 2024-03-15 | 阿里巴巴集团控股有限公司 | 一种数据操作方法、装置及系统 |
CN116185565A (zh) * | 2022-12-29 | 2023-05-30 | 芯动微电子科技(武汉)有限公司 | 一种内存数据隔离和共享的系统和方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158924A (zh) * | 2007-11-27 | 2008-04-09 | 北京大学 | 一种虚拟机管理器的动态内存映射方法 |
CN103257929A (zh) * | 2013-04-18 | 2013-08-21 | 中国科学院计算技术研究所 | 一种虚拟机内存映射方法及系统 |
CN103530167A (zh) * | 2013-09-30 | 2014-01-22 | 华为技术有限公司 | 一种虚拟机内存数据的迁移方法及相关装置和集群系统 |
US20160139942A1 (en) * | 2014-11-13 | 2016-05-19 | Red Hat Israel, Ltd. | Virtual machine input/output thread management |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014100273A1 (en) * | 2012-12-18 | 2014-06-26 | Dynavisor, Inc. | Dynamic device virtualization |
CN103116556B (zh) * | 2013-03-11 | 2015-05-06 | 无锡江南计算技术研究所 | 内存静态划分虚拟化方法 |
CN105373413A (zh) * | 2014-08-22 | 2016-03-02 | 中兴通讯股份有限公司 | Xen虚拟化系统的全映射方法及装置 |
-
2016
- 2016-06-21 CN CN201680004815.4A patent/CN107278292B/zh active Active
- 2016-06-21 WO PCT/CN2016/086592 patent/WO2017219250A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158924A (zh) * | 2007-11-27 | 2008-04-09 | 北京大学 | 一种虚拟机管理器的动态内存映射方法 |
CN103257929A (zh) * | 2013-04-18 | 2013-08-21 | 中国科学院计算技术研究所 | 一种虚拟机内存映射方法及系统 |
CN103530167A (zh) * | 2013-09-30 | 2014-01-22 | 华为技术有限公司 | 一种虚拟机内存数据的迁移方法及相关装置和集群系统 |
US20160139942A1 (en) * | 2014-11-13 | 2016-05-19 | Red Hat Israel, Ltd. | Virtual machine input/output thread management |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108197038A (zh) * | 2018-02-01 | 2018-06-22 | 深圳市风云实业有限公司 | 一种Linux数据传输方法、装置和用户终端 |
CN110308974A (zh) * | 2019-07-11 | 2019-10-08 | 联想(北京)有限公司 | 一种数据处理方法、虚拟机装置及虚拟机架构 |
WO2021129332A1 (zh) * | 2019-12-25 | 2021-07-01 | 中兴通讯股份有限公司 | 虚拟机部署及热迁移方法、vmm升级方法、服务器 |
WO2022000799A1 (zh) * | 2020-06-28 | 2022-01-06 | 华为技术有限公司 | 一种内存管理方法及设备 |
CN117492933A (zh) * | 2023-12-28 | 2024-02-02 | 苏州元脑智能科技有限公司 | 数据交换方法、装置、电子设备及存储介质 |
CN117492933B (zh) * | 2023-12-28 | 2024-03-22 | 苏州元脑智能科技有限公司 | 数据交换方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2017219250A1 (zh) | 2017-12-28 |
CN107278292B (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107278292A (zh) | 一种虚拟机内存的映射方法、装置及数据传输设备 | |
CN103257929B (zh) | 一种虚拟机内存映射方法及系统 | |
AU2009357325B2 (en) | Method and apparatus for handling an I/O operation in a virtualization environment | |
CN111679921B (zh) | 内存共享方法、内存共享装置及终端设备 | |
US20120290765A1 (en) | Reclaiming memory pages in a computing system hosting a set of virtual machines | |
CN103176833B (zh) | 一种基于虚拟机的数据发送方法、接收方法及系统 | |
CN101150488B (zh) | 一种零拷贝网络报文接收方法 | |
CN106155933A (zh) | 一种基于KSM及Pass‑through相结合的虚拟机内存共享方法 | |
CN111090869B (zh) | 一种数据加密方法、处理器及计算机设备 | |
EP1701268A3 (en) | Method and system for a guest physical address virtualization in a virtual machine environment | |
CN106874128A (zh) | 数据传输方法及装置 | |
CN105335309B (zh) | 一种数据传输方法及计算机 | |
CN103984591B (zh) | 计算机虚拟化系统的PCI设备INTx中断投递方法 | |
CN105159742A (zh) | 一种虚拟机pci设备透传方法和系统 | |
CN108228309B (zh) | 基于虚拟机的数据包发送和接收方法及装置 | |
US11675615B2 (en) | Zero copy message reception for applications | |
CN105556473A (zh) | 一种i/o任务处理的方法、设备和系统 | |
CN102799491B (zh) | 虚拟机间安全通信方法 | |
CN105446889B (zh) | 一种内存管理方法、装置以及内存控制器 | |
US10733687B2 (en) | Method and apparatus for data communication in virtualized environment, and processor | |
CN104123173B (zh) | 一种实现虚拟机间通信的方法及装置 | |
CN103577250A (zh) | 一种应用于虚拟机的设备直通方法 | |
Rasmusson et al. | Performance overhead of KVM on Linux 3.9 on ARM Cortex-A15 | |
US11249934B2 (en) | Data access method and apparatus | |
CA2816443A1 (en) | Secure partitioning with shared input/output |
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 |