CN108595244A - 虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统 - Google Patents

虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统 Download PDF

Info

Publication number
CN108595244A
CN108595244A CN201711268053.1A CN201711268053A CN108595244A CN 108595244 A CN108595244 A CN 108595244A CN 201711268053 A CN201711268053 A CN 201711268053A CN 108595244 A CN108595244 A CN 108595244A
Authority
CN
China
Prior art keywords
memory
virtual machine
data
communication
physical host
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
Application number
CN201711268053.1A
Other languages
English (en)
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.)
NSFOCUS Information Technology Co Ltd
Beijing NSFocus Information Security Technology Co Ltd
Original Assignee
NSFOCUS Information Technology Co Ltd
Beijing NSFocus Information Security Technology 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 NSFOCUS Information Technology Co Ltd, Beijing NSFocus Information Security Technology Co Ltd filed Critical NSFOCUS Information Technology Co Ltd
Priority to CN201711268053.1A priority Critical patent/CN108595244A/zh
Publication of CN108595244A publication Critical patent/CN108595244A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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

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

虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统
技术领域
本发明涉及虚拟机技术领域,尤其涉及虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统。
背景技术
虚拟化技术是指在物理主机上虚拟化出几个虚拟机,在实际运行中,每个虚拟机之间相互隔离,但是共享物理主机的硬件资源,最终达到所有虚拟机同时并发运行的一种技术。每一个虚拟机可以完成独立的业务需求,而且互不影响,这样可以提高物理主机的资源利用率,当前市场上一些常见的虚拟化产品有VMWARE、VirtualBox、KVM、QEMU、Hyper-V等等,目前虚拟化技术作为云应用类的基础技术得到大力的发展和应用。
在设计上虚拟机和物理主机之间是隔离的,当一个虚拟机运行起来以后,虚拟机不能直接访问物理主机内的资源,但在实际应用中,有需求要在物理主机端监视和控制虚拟机里面的应用程序和数据,这就需要虚拟机和物理主机之间能够进行通信,目前一般采用以下方式实现虚拟机和物理主机之间的通信。
网络通信,即在虚拟机里运行一个Agent(代理)程序与物理主机中的服务程序进行网络通信,Agent程序通过接收物理主机发来的指令完成相应的工作。这种通信方式本质上与虚拟机无关,物理主机之间也可以采用这种方式,但是会受虚拟机系统网络配置的影响,比如在虚拟机的网络地址被修改、网卡被禁用等情形下就无法再与物理主机进行通信。并且在网络通信过程中会占用虚拟机的网卡资源(如带宽资源),当传输较大数据的时候,会严重影响虚拟机中其它应用的正常网络通信。
后门指令,这是商业虚拟机中常见的内外通信机制,就是采用CPU(CentralProcessing Unit,中央处理器)的某个特殊指令来完成虚拟机与物理主机之间的通信。比如VMware虚拟机采用x86的IN指令,IN指令是一条特权指令,当虚拟机执行这条指令时,会陷入到在物理主机的Hypervisor特权指令处理例程,当其它的参数(比如寄存器的值)也满足后门指令的特征时,则执行相应的命令。后门指令的通信方式实时性较好,也支持并发操作,但不足在于后门指令依赖于CPU架构,不同的CPU架构,需要采用不同的后门指令,并且后门指令的隐蔽性也不好。
虚拟硬件,即由虚拟机虚拟一个实际不存在的硬件,专门用于虚拟机内外通信。QEMU的虚拟机Agent采用的是虚拟的串口设备及VirtualBox采用的是虚拟的PCI(Peripheral Component Interconnect,外部设备互联总线)设备来共享虚拟机和物理主机的内存进行内外通信,但是这种通信方式受到硬件个数的限制,无法并发操作,而且具体采用哪个虚拟硬件严重依赖于虚拟机,不同的虚拟机的虚拟硬件是不一样的,因此具体的通信方式也会不同。
根据上述分析可知,目前虚拟机的内外通信方式对CPU架构和操作系统的要求较高,并且会受到虚拟机自身网络配置的影响,以及对特殊的虚拟硬件的依赖性较强,现有技术中的虚拟机内外通信方式的通用性低,适应性不强。
发明内容
本发明实施例提供虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统,用于解决现有技术中的虚拟机内外通信方式的通用性低、适应性不强的技术问题,提供一种通用性更高的虚拟机内外通信方式,增强了虚拟机内外通信的适应性以及提高了虚拟机内外通信的效率。
第一方面,提供一种虚拟机内外通信方法,所述方法包括:
虚拟机从所述虚拟机的内存中确定通信内存;
运行所述虚拟机的物理主机确定所述通信内存;
所述虚拟机和所述物理主机通过所述通信内存进行通信。
可选的,所述虚拟机和所述物理主机通过所述通信内存进行通信,包括:
检测所述通信内存的状态;
根据所述通信内存的不同状态写入数据和/或读取数据以完成所述虚拟机和所述物理主机之间的通信。
可选的,根据所述通信内存的不同状态写入数据和/或读取数据以完成所述虚拟机和所述物理主机之间的通信,包括:
若所述通信内存的状态为第一状态,所述虚拟机将第一数据写入所述通信内存或大数据区域;其中,所述大数据区域位于所述虚拟机的内存中;
所述虚拟机将所述通信内存的状态更新为第二状态;
若所述通信内存的状态为所述第二状态,所述物理主机读取所述第一数据以完成所述虚拟机和所述物理主机之间的通信。
可选的,所述虚拟机将第一数据写入所述通信内存或大数据区域中,包括:
所述虚拟机确定所述第一数据的数据量和数据类型;
若所述第一数据的数据量小于所述通信内存的存储空间,所述虚拟机则将所述第一数据的数据信息和数据类型信息分别写入所述通信内存的相应存储区域;
若所述第一数据的数据量大于等于所述通信内存的存储空间,所述虚拟机则将所述第一数据的数据类型信息和所述大数据区域的内存地址写入所述通信内存,以及将所述第一数据写入所述大数据区域。
可选的,在所述物理主机读取所述第一数据以完成所述虚拟机和所述物理主机之间的通信之后,还包括:
将所述通信内存的状态更新为所述第一状态。
可选的,根据所述通信内存的不同状态写入数据和/或读取数据以完成所述虚拟机和所述物理主机之间的通信,包括:
若所述通信内存的状态为第一状态,所述物理主机将第二数据写入所述通信内存或大数据区域中;其中,所述大数据区域位于所述虚拟机的内存中;
所述物理主机将所述通信内存的状态更新为第二状态;
若所述通信内存的状态为所述第二状态,所述虚拟机读取所述第二数据以完成所述虚拟机和所述物理主机之间的通信。
可选的,所述物理主机将第二数据写入所述通信内存或大数据区域中,包括:
所述物理主机确定所述第二数据的数据量和数据类型;
若所述第二数据的数据量小于所述通信内存的存储空间,所述物理主机则将所述第二数据的数据信息和数据类型信息分别写入所述通信内存的相应存储区域。
可选的,在所述物理主机确定所述第二数据的数据量和数据类型之后,还包括:
若所述第二数据的数据量大于等于所述通信内存的存储空间,所述物理主机将所述通信内存的状态更新为第三状态;
若检测到所述通信内存的状态为所述第三状态,所述虚拟机从所述可读取内存中确定存储空间大于等于所述第二数据的数据量的所述大数据区域;
所述虚拟机将所述大数据区域的内存地址写入所述通信内存中,并将所述通信内存的状态更新为第四状态;
若检测到所述通信内存的状态为所述第四状态,所述物理主机从所述通信内存中获得所述大数据区域的内存地址并将所述第二数据写入所述内存地址对应的存储区域。
可选的,在所述虚拟机读取所述第二数据以完成所述虚拟机和所述物理主机之间的通信之后,还包括:
所述虚拟机将所述通信内存的状态更新为所述第一状态。
可选的,虚拟机从所述虚拟机的内存中确定通信内存,包括:
所述虚拟机从所述虚拟机的内存中确定当前空闲的预定大小内存,并为所述预定大小内存设置预定特征标识以获得所述通信内存;
运行所述虚拟机的物理主机确定所述通信内存,包括:
所述物理主机搜索所述虚拟机的内存以将设置有所述预定特征标识的内存确定为所述通信内存。
可选的,在所述物理主机搜索所述虚拟机的内存以将设置有所述预定特征标识的内存确定为所述通信内存之后,还包括:
从所述通信内存中删除所述预定特征标识。
可选的,运行所述虚拟机的物理主机确定所述通信内存,包括:
所述虚拟机通过串口通信的方式将所述通信内存的地址发送给所述物理主机,以使所述物理主机根据所述通信内存的地址确定所述通信内存;或,
所述虚拟机将所述通信内存的地址存储在虚拟磁盘的预定位置,以使所述物理主机从所述预定位置处读取所述通信内存的地址以确定所述通信内存。
可选的,虚拟机从所述虚拟机的内存中确定通信内存,包括:
所述虚拟机从所述虚拟机的内存中检测位于预定位置的内存是否处于空闲状态;
若处于空闲状态,则将所述预定位置的内存确定为所述通信内存;
若未处于空闲状态,则将所述预定位置的内存释放,并将释放后的所述预定位置的内存确定为所述通信内存。
第二方面,提供一种虚拟机,所述虚拟主机运行在物理主机上,所述虚拟机包括:
确定模块,用于从所述虚拟机的内存中确定通信内存;
数据读写模块,用于将数据写入所述通信内存以使所述物理主机读取和/或从所述通信内存中读取所述物理主机写入的数据。
第三方面,提供一种物理主机,所述物理主机运行有虚拟机,所述物理主机包括:
确定模块,用于确定通信内存;其中,所述通信内存是所述虚拟机从所述虚拟机的内存中确定的;
数据读写模块,用于将数据写入所述通信内存以使所述虚拟机读取和/或从所述通信内存中读取所述虚拟机写入的数据。
第四方面,提供一种虚拟机系统,包括虚拟机和运行所述虚拟机的物理主机,其中:
所述虚拟机,用于从所述虚拟机的内存中确定通信内存;以及将数据写入所述通信内存以使所述物理主机读取和/或从所述通信内存中读取所述物理主机写入的数据;
所述物理主机,用于确定所述通信内存;以及从所述通信内存中读取所述虚拟机写入的数据和/或将数据写入所述通信内存以使所述虚拟机读取。
本发明实施例中,虚拟机可以从其内存中申请部分内存作为用于与运行该虚拟机的物理主机进行通信的通信内存,进而通过所申请的通信内存来实现虚拟机和物理主机之间的通信,由于虚拟机在被创建时就具有对应的物理机直接访问其内存的接口,所以通过所申请的通信内存进行内外通信的方案可以在不额外增加任何硬件和软件配置的前提下实现虚拟机和物理机之间的通信,并且可以完全不对CPU架构和虚拟硬件产生任何依赖,所以本发明实施例的虚拟机内外通信方法的通用性较高,适用于任何CPU架构下的虚拟机内外通信,可以满足大多数的使用需求。并且,由于访问内存的速率远大于访问如网卡、虚拟硬件等I/O(Input/Output,输入输出)设备的速率,所以内存访问的通信方式的通信效率更高,从而可以提高虚拟机内外通信的效率,以确保通信的及时性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例中的虚拟机内外通信方法的流程图;
图2为本发明实施例中的物理主机上运行多个虚拟机的示意图;
图3为本发明实施例中的虚拟机写数据的流程图;
图4为本发明实施例中的通信内存为一个物理页的示意图;
图5为本发明实施例中的物理主机读数据的流程图;
图6为本发明实施例中的物理主机写数据的流程图;
图7为本发明实施例中的虚拟机读数据的流程图;
图8为本发明实施例中的虚拟机的结构框图;
图9为本发明实施例中的物理主机的结构框图;
图10为本发明实施例中的虚拟机系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
请参见图1,本发明实施例提供一种虚拟机内外通信方法,该方法的流程描述如下。
步骤11:虚拟机从虚拟机的内存中确定通信内存。
一个物理主机可以创建多个虚拟机,而每个虚拟机都可以独立运行在该物理主机之上,由于虚拟机在被创建时就具有对应的物理主机能够直接访问其内存的接口,所以物理主机可以直接访问虚拟机的内存、虚拟磁盘等资源,而虚拟机却无法直接访问物理主机里的资源。其中,虚拟机的内存是指虚拟机的物理内存,或者也可以称作运行内存,物理主机通过访问虚拟机的物理地址空间或虚拟地址空间均可以实现对虚拟机内存的访问,并且物理主机访问虚拟机的内存的访问速率较高,所以通过访问内存的方式实现虚拟机和物理主机之间的通信的效率也较高,可以尽量确保两者之间通信的及时性。
如图2所示的物理主机上运行有虚拟机1、虚拟机2和虚拟机3这三个虚拟机,虚拟机1、虚拟机2和虚拟机3可以独立运行,物理主机可以访问虚拟机1、虚拟机2和虚拟机3的内存、虚拟磁盘等资源,而虚拟机1、虚拟机2和虚拟机3之间相互隔离,并且虚拟机1、虚拟机2和虚拟机3也无法直接访问物理主机内的资源。
虚拟机内能够被对应的物理主机读取的内存较多,所以在本发明实施例中,虚拟机首先会从其中确定用于与该物理主机进行通信的通信内存,例如可以将一个物理页的内存资源作为用来与物理主机进行通信的通信内存,这是由于在内存划分中,物理页是最小的划分单位,并且一般来说,虚拟机与物理主机之间所传输的数据也不太大,选择一个物理页作为本发明实施例中的通信内存可以在不占用较多内存资源的前提下又能满足实际的数据传输需求。
步骤12:运行虚拟机的物理主机确定通信内存。
对于本领域技术人员来说,在一般情形下,可以将物理主机称作Host,以及将运行在Host上的虚拟机称作Guest,后文中为了方便统一描述,还是以“物理主机”和“虚拟机”来进行相关描述。
在虚拟机从其内存中确定出了与物理主机之间进行通信用的通信内存之后,为了通过该通信内存进行两者之间的通信,物理主机也需要知晓所确定出的通信内存,即,运行有该虚拟机的物理主机也还需要确定通信内存。
在具体实施过程中,物理主机可以采用以下方式中的任意一种方式来确定通信内存。
第一种方式
虚拟机可以通过设置预定特征标识的方式来标记所确定的通信内存,即虚拟机在从内存中确定出当前空闲的预定大小内存之后,可以为该预定大小内存设置预定特征标识并将设置了预定特征标识的内存作为通信内存,进一步地,物理主机可以在虚拟机的内存中进行搜索以查找出设置有预定特征标识的内存,进而将其确定为虚拟机所选择出的用于与其进行通信的通信内存。
也就是说,可以通过添加标识的方式来对内存进行标记,而所添加的标识是物理主机和虚拟机预先约定好的,由于物理主机能够快速地访问虚拟机的内存,这样在虚拟机确定好通信内存之后则可以便于物理主机尽快知晓,保证两者之间通信的及时性和有效性。
进一步地,在物理主机根据预定特征标识识别出通信内存之后,可以即刻删除通信内存中的预定特征标识,这样可以防止其它应用程序直接根据预定特征标识识别出虚拟机所选择出的通信内存进而定位到数据传输区域,以尽量确保数据传输的隐蔽性和安全性。
第二种方式
虚拟机可以通过串口通信的方式将通信内存的地址发送给物理主机,进而使得物理主机能够根据所接收到的地址信息确定出通信内存,由于通信内存的地址信息的数据量较小,通过串口发送的时间较短,并且只是在确定了通信内存之后使用一次串口即可告知物理主机,对串口的依赖性也不高。
第三种方式
虚拟机可以将通信内存的地址信息存储在虚拟磁盘的预定位置,以使物理主机从预定位置处读取该地址信息进而确定通信内存,例如可以将地址信息写入到虚拟磁盘的固定文件中,物理主机通过访问虚拟磁盘以获得该固定文件,再解析该固定文件即可获得虚拟机所写入的地址信息。
第四种方式
物理主机可以预先与虚拟机约定究竟将哪个位置的内存作为用于这两者之间进行通信的通信内存,那么虚拟机在确定通信内存时,就可以先判断位于该预定位置的内存是否处于空闲状态,若处于空闲状态,则直接将位于该预定位置的内存作为通信内存,若未处于空闲状态,则可以先将位于该预定位置的内存释放,再将释放后的内存作为本发明实施例中的通信内存。
进一步地,物理主机通过预先的约定便可知晓该预定位置,而后直接将位于该预定位置的内存确定为本发明实施例中的通信内存。
以上只是列举了四种可能的物理主机确定通信内存的方式,需要说明的是,本发明实施例包括但不限于以上四种方式,凡是在虚拟机确定了通信内存之后,物理主机再获知虚拟机所确定的通信内存的方式均应包括在本发明实施例所保护的范围之内。
步骤13:虚拟机和物理主机通过通信内存进行通信。
在物理主机也获知了通信内存之后,虚拟机和物理主机便可以通过所确定的通信内存进行通信,而虚拟机和物理主机之间的通信可以通过对通信内存进行数据读写实现,例如,虚拟机将需要传输的数据写入通信内存以便物理主机从通信内存中读取虚拟机所写入的数据而实现两者之间的通信,或者物理主机将需要传输的数据写入通信内存以便虚拟机从通信内存中读取物理主机所写入的数据而实现两者之间的通信。
在本发明实施例中,可以先检测通信内存的状态,再根据通信内存的不同状态写入数据和/或读取数据以完成虚拟机和物理主机之间的通信。由于虚拟机和物理主机均可以快速访问通信内存,所以通过通信内存的状态不同来提示虚拟机和物理主机是写数据还是读数据的方式可以确保虚拟机和物理主机之间通信的即时性,并且不同的状态可以进行对应的提示,这样可以确保物理主机和虚拟机通信的准确性和有效性。
首先,可以对通信内存的状态进行初始化,由于在实际中是通过函数调用的方式来确定通信内存的状态的,那么则可以通过对用于表征通信内存的状态的变量参数Flag进行不同赋值以表明通信内存的不同状态。
请参见表1,表1表示Flag的不同赋值对应的函数状态以及在本发明实施例中用于表明通信内存的具体哪种状态。
表1
Flag赋值 函数状态 实际状态
0 EMPTY 第一状态
2 FINISHED 第二状态
4 ALLOC_WAITING_0 第三状态
8 ALLOC_WAITING_1 第四状态
1 PROCESSING 锁定状态
例如,当Flag为0时,函数状态为EMPTY,对应着本发明实施例中的第一状态,此时可以表明通信内存为空,即没有写入任何数据。
又例如,当Flag为2时,函数状态为FINISHED,对应着本发明实施例中的第二状态,此时可以表明通信内存已经完成了数据的写入。
又例如,当Flag为4时,函数状态为ALLOC_WAITING_0,对应着本发明实施例中的第三状态,此时可以表明通信内存的空间太小不足以写下请求写入的数据。
再例如,当Flag为8时,函数状态为ALLOC_WAITING_1,对应着本发明实施例中的第四状态,此时可以表明由于通信内存太小而申请了其它大数据区域用来存放请求写入的数据并且已经将其它大数据区域的内存地址写入了通信内存中。
还例如,当Flag为1时,函数状态为PROCESSING,对应着本发明实施例中的锁定状态,此时可以表明通信内存当前处于正在使用状态,即通信内存当前正用于处理一个应用请求以写数据或者读数据,如果此时再有其它应用请求写数据或读数据的话,则需要将当前的应用请求处理完毕后才能继续处理其它应用请求,表明需要其它应用请求等待。
其中,在同一时刻,通信内存只能呈现第一状态至第四状态中的任一种状态,但是锁定状态可以与其它四种状态共存,例如在某一时刻,通信内存的状态为第一状态,或者为第一状态+锁定状态,或者为第二状态+锁定状态,等等。当某一种状态与锁定状态共存时,即表明将通信状态锁定在当前状态之下。
在具体实施过程中,虚拟机和物理主机之间的通信可以包括两种方式,即虚拟机写数据物理主机读数据,或者,物理主机写数据虚拟机读数据。为了便于本领域技术人员对本发明实施例的理解,以下对这两种方式分别进行说明。
虚拟机写数据物理主机读数据的方式
请参见图3,图3为虚拟机写数据的流程图。例如,当虚拟机内的某一应用程序需要向物理主机发送数据时,则可以向虚拟机请求数据发送,虚拟机在接收到该请求之后,则可以执行步骤31,即通过读取Flag的值判断通信内存的状态是否为第一状态(EMPTY),若是第一状态则通过步骤32将通信内存的状态更新为锁定状态以表明通信内存已经被预定用来写数据,并且确定需要发送给物理主机的第一数据的数据量和数据类型,若不是第一状态则可以继续检测,例如可以持续检测,或者可以周期性检测。
进一步地,在获知了第一数据的数据量和数据类型之后,虚拟机通过执行步骤33判断第一数据的数据量是否小于通信内存的存储空间,若小于,则直接执行步骤34a,即将第一数据的数据信息和数据类型信息分别写入通信内存的相应存储区域中。以通信内存为一个物理页大小为例,请参见图4,可以将通信内存划分为通信头、数据类型信息、额外信息和数据信息这4个存储区域,在确定第一数据的数据量小于通信内存的存储空间之后,便可以将第一数据的数据类型信息和数据信息分别写入如图4所示的相应的存储区域中,另外,还可以将第一数据的数据长度、第一数据的存储地址等信息写入通信头中,以及还可以将该物理页的一些分配管理信息写入其中的额外信息的存储区域中。
若确定第一数据的数据量不小于通信内存的存储空间,虚拟机可以再如图3中的步骤34b所示的从虚拟机的内存中另外再申请一个大数据区域用来存储第一数据,为了尽量避免资源浪费,此处所申请的大数据区域的存储空间可以与第一数据的数据量相等,并且此处所申请的大数据区域也可以是虚拟机的物理内存。进一步地,如步骤34c所示的再将第一数据的数据信息写入大数据区域中,即将第一数据拷贝到该大数据区域中进行存储,并且,为了通知物理主机第一数据的存储路径,虚拟机还可以执行步骤34d所示的将大数据区域的内存地址写入通信内存中,具体来说,可以将大数据区域的内存地址信息写入通信内存的通信头中的专门用来存放内存地址的存储区域中。
最后,无论采用步骤34a的方式直接将第一数据写入通信内存中,还是采用步骤34b-34d的方式将第一数据写入大数据区域且将大数据区域的内存地址写入通信内存中,在此之后,均需要将通信内存的状态再更新为第二状态(FINISHED)以表明第一数据已经写入完成,进而等待物理主机来读取。
请参见图5所示的物理主机读数据的流程图。首先,物理主机执行如步骤51所示的通过读取Flag的值判断通信内存的状态是否为第二状态(FINISHED),若确定是第二状态,则执行步骤52将通信内存的状态更新为锁定状态以及读取数据类型信息并计算类型偏移,即通过访问通信内存以读取数据类型信息并计算类型偏移,其中,将通信内存的状态更新为锁定状态的目的是为了表明通信内存当前处于锁定状态,只能处理当前的读数据操作,对于其它的数据写入和读取请求都暂时无法处理,之后等待当前的请求完成之后才能再处理其它请求。
进一步地,再通过步骤53判断通信内存的通信头中的页表的基址是否为0,若页表的基址是0则表明虚拟机是通过物理地址的方式写入第一数据的,此时则可以执行步骤54a以直接根据通信内存里的通信头中所存储的第一数据的存储地址和数据长度读取第一数据以完成虚拟机与物理主机之间的通信。
若页表的基址不是0则表明虚拟机是通过虚拟地址的方式写入第一数据的,此时物理主机可以执行步骤54b以通过页表的基址+虚拟地址的方式读取数据长度的第一数据以完成虚拟机与物理主机之间的通信。
最后,无论是采用步骤54a的方式还是步骤54b的方式读取获得第一数据,在此之后,均需要执行步骤55以将通信内存的状态更新为第一状态(EMPTY)以表明通信内存中的数据已经被读取,从而解除对通信内存的锁定,进而方便再通过通信内存处理其它的数据写入请求以在通信内存中再写入其它数据。
也就是说,在使用完通信内存之后,可以通过更新状态的方式将通信内存及时释放,以便于再处理其它的数据写入或读取请求,尽量提高内存的利用率。
物理主机写数据虚拟机读数据的方式
请参见图6所示的物理主机写数据的流程图。例如,当物理主机内的某一应用程序需要向虚拟机发送数据时,则可以向物理主机请求数据发送,物理主机在接收到该请求之后,则可以执行步骤61,即通过读取Flag的值判断通信内存的状态是否为第一状态(EMPTY),若是第一状态则通过步骤62将通信内存的状态更新为锁定状态以表明通信内存已经被预定用来写数据,并且确定需要发送给虚拟机的第二数据的数据量和数据类型,若不是第一状态则可以继续检测,例如可以持续检测,或者可以周期性检测。
进一步地,在获知了第二数据的数据量和数据类型之后,虚拟机通过执行步骤63判断第二数据的数据量是否小于通信内存的存储空间,若小于,则直接执行步骤64a,即将第二数据的数据信息和数据类型信息分别写入通信内存的相应存储区域中。
若确定第一数据的数据量不小于通信内存的存储空间,物理主机可以将通信内存的状态更新为第三状态+锁定状态,即表明此时通信内存的存储空间不够用来存储需要发送给虚拟机的数据,所以需要虚拟机另外申请一个更大的大数据区域来存储第二数据,若虚拟机重新申请了一个足够存储第二数据的大数据区域并将该大数据区域的内存地址写入通信内存之后,虚拟机可以再将通信内存的状态更新为第四状态,即表明虚拟机已经将更大空间的内存的地址信息写入了通信内存中,所以物理主机便通过步骤64c来检测通信内存的状态是否变为第四状态,若检测到已经更新为第四状态,则可以执行步骤64d将通信内存的状态更新为锁定状态,并读取通信内存(例如读取通信内存的通信头)以获得虚拟机所申请的大数据区域的内存地址,进而再通过步骤64e将第二数据写入大数据区域的内存地址所对应的存储区域中。
最后,无论采用步骤64a的方式直接将第二数据写入通信内存中,还是采用步骤64a-64e的方式将第二数据写入大数据区域,在此之后,均需要将通信内存的状态再更新为第二状态(FINISHED)以表明第二数据已经写入完成,进而等虚拟主机来读取。
请参见图7所示的虚拟机读数据的流程图。首先,虚拟机执行如步骤71所示的通过读取Flag的值判断通信内存的状态是否为第二状态(FINISHED),若确定是第二状态,则执行步骤72将通信内存的状态更新为锁定状态以及读取数据类型信息并计算类型偏移,即通过访问通信内存以读取数据类型信息并计算类型偏移。进一步地,再通过步骤73判断通信内存的通信头中的页表的基址是否为0,若页表的基址是0则表明物理主机是通过物理地址的方式写入第二数据的,此时则可以执行步骤74a以直接根据里的通信头中所存储的第二数据的存储地址和数据长度读取第二数据,若页表的基址不是0则表明物理主机是通过虚拟地址的方式写入第而数据的,此时虚拟机可以执行步骤74b以从通信头中确定大数据区域的内存地址,再如步骤74c以通过页表的基址+虚拟地址的方式读取数据长度的第二数据。
另外,在步骤71中若确定通信内存的状态不为第二状态时,虚拟机可以再如步骤76检测通信内存的状态是否为第三状态,若是第三状态则表明需要虚拟机再从内存中重新申请一个大数据区域以存储数据,则虚拟机进一步地执行步骤77以申请大数据区域,并通过步骤78将大数据区域的内存地址写入通信内存,最后再通过步骤79将通信内存的状态更新为第四状态,步骤76-步骤79可以是在如图6所示的步骤64b之后且步骤64c之间进行的。
最后,无论是采用步骤74a的方式还是步骤74b的方式读取获得第二数据,在此之后,均需要再执行步骤75以将通信内存的状态更新为第一状态以表明通信内存中的数据已经被读取,从而解除对通信内存的锁定,进而方便再通过通信内存处理其它的数据写入请求以在通信内存中再写入其它数据。
也就是说,在使用完通信内存之后,可以通过更新状态的方式将通信内存及时释放,以便于再处理其它的数据写入或读取请求,尽量提高内存的利用率。
本发明实施例中,虚拟机可以从其内存中申请部分内存作为用于与运行该虚拟机的物理主机进行通信的通信内存,进而通过所申请的通信内存来实现虚拟机和物理主机之间的通信,由于虚拟机在被创建时就具有对应的物理机直接访问其内存的接口,所以通过所申请的通信内存进行内外通信的方案可以在不额外增加任何硬件和软件配置的前提下实现虚拟机和物理机之间的通信,并且可以完全不对CPU架构和虚拟硬件产生任何依赖,所以本发明实施例的虚拟机内外通信方法的通用性较高,适用于任何CPU架构下的虚拟机内外通信,可以满足大多数的使用需求。并且,由于访问内存的速率远大于访问如网卡、虚拟硬件等I/O设备的速率,所以内存访问的通信方式的通信效率更高,从而可以提高虚拟机内外通信的效率,确保通信的及时性。
基于同一发明构思,请参见图8,本发明实施例提供一种虚拟机,该虚拟机运行在物理主机上,该虚拟机包括确定模块81和数据读写模块82,而且本发明实施例中的确定模块81和数据读写模块82可以通过硬件处理器来实现相关功能单元。其中:
确定模块81,用于从虚拟机的内存中确定通信内存;
数据读写模块82,用于将数据写入通信内存以使物理主机读取和/或从通信内存中读取物理主机写入的数据。
本发明实施例中的虚拟机可以是前述方法实施例中的虚拟机,本发明实施例提供的虚拟机可以执行前述方法实施例中虚拟机所执行的步骤,因此对于本发明实施例中的虚拟机的实施可以参见前述方法部分的描述,此处不再赘述。
基于同一发明构思,请参见图9,本发明实施例提供一种物理主机,该物理主机上运行有虚拟机,该物理主机包括确定模块91和数据读写模块92,而且本发明实施例中的确定模块91和数据读写模块92可以通过硬件处理器来实现相关功能单元。其中:
确定模块91,用于确定通信内存;其中,通信内存是虚拟机从虚拟机的内存中确定的;
数据读写模块92,用于将数据写入通信内存以使虚拟机读取和/或从通信内存中读取虚拟机写入的数据。
本发明实施例中的物理主机可以是前述方法实施例中的物理主机,本发明实施例提供的物理主机可以执行前述方法实施例中物理主机所执行的步骤,因此对于本发明实施例中的物理主机的实施可以参见前述方法部分的描述,此处不再赘述。
基于同一发明构思,请参见图10,本发明实施例提供一种虚拟机系统,该虚拟机系统包括虚拟机和物理主机,其中,用于从虚拟机的内存中确定通信内存以及将数据写入通信内存以使物理主机读取和/或从通信内存中读取物理主机写入的数据;物理主机用于确定通信内存以及从通信内存中读取虚拟机写入的数据和/或将数据写入通信内存以使虚拟机读取。
本发明实施例中,虚拟机可以从其内存中申请部分内存作为用于与运行该虚拟机的物理主机进行通信的通信内存,进而通过所申请的通信内存来实现虚拟机和物理主机之间的通信,由于虚拟机在被创建时就具有对应的物理机直接访问其内存的接口,所以通过所申请的通信内存进行内外通信的方案可以在不额外增加任何硬件和软件配置的前提下实现虚拟机和物理机之间的通信,可以完全不对CPU架构和虚拟硬件产生任何依赖,所以本发明实施例的虚拟机内外通信方法的通用性较高,适用于任何CPU架构下的虚拟机内外通信,可以满足大多数的使用需求。并且,由于访问内存的速率远大于访问如网卡、虚拟硬件等I/O设备的速率,所以内存访问的通信方式的通信效率更高,从而可以提高虚拟机内外通信的效率,确保通信的及时性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (16)

1.一种虚拟机内外通信方法,其特征在于,所述方法包括:
虚拟机从所述虚拟机的内存中确定通信内存;
运行所述虚拟机的物理主机确定所述通信内存;
所述虚拟机和所述物理主机通过所述通信内存进行通信。
2.如权利要求1所述的方法,其特征在于,所述虚拟机和所述物理主机通过所述通信内存进行通信,包括:
检测所述通信内存的状态;
根据所述通信内存的不同状态写入数据和/或读取数据以完成所述虚拟机和所述物理主机之间的通信。
3.如权利要求2所述的方法,其特征在于,根据所述通信内存的不同状态写入数据和/或读取数据以完成所述虚拟机和所述物理主机之间的通信,包括:
若所述通信内存的状态为第一状态,所述虚拟机将第一数据写入所述通信内存或大数据区域;其中,所述大数据区域位于所述虚拟机的内存中;
所述虚拟机将所述通信内存的状态更新为第二状态;
若所述通信内存的状态为所述第二状态,所述物理主机读取所述第一数据以完成所述虚拟机和所述物理主机之间的通信。
4.如权利要求3所述的方法,其特征在于,所述虚拟机将第一数据写入所述通信内存或大数据区域中,包括:
所述虚拟机确定所述第一数据的数据量和数据类型;
若所述第一数据的数据量小于所述通信内存的存储空间,所述虚拟机则将所述第一数据的数据信息和数据类型信息分别写入所述通信内存的相应存储区域;
若所述第一数据的数据量大于等于所述通信内存的存储空间,所述虚拟机则将所述第一数据的数据类型信息和所述大数据区域的内存地址写入所述通信内存,以及将所述第一数据写入所述大数据区域。
5.如权利要求3或4所述的方法,其特征在于,在所述物理主机读取所述第一数据以完成所述虚拟机和所述物理主机之间的通信之后,还包括:
将所述通信内存的状态更新为所述第一状态。
6.如权利要求2所述的方法,其特征在于,根据所述通信内存的不同状态写入数据和/或读取数据以完成所述虚拟机和所述物理主机之间的通信,包括:
若所述通信内存的状态为第一状态,所述物理主机将第二数据写入所述通信内存或大数据区域中;其中,所述大数据区域位于所述虚拟机的内存中;
所述物理主机将所述通信内存的状态更新为第二状态;
若所述通信内存的状态为所述第二状态,所述虚拟机读取所述第二数据以完成所述虚拟机和所述物理主机之间的通信。
7.如权利要求6所述的方法,其特征在于,所述物理主机将第二数据写入所述通信内存或大数据区域中,包括:
所述物理主机确定所述第二数据的数据量和数据类型;
若所述第二数据的数据量小于所述通信内存的存储空间,所述物理主机则将所述第二数据的数据信息和数据类型信息分别写入所述通信内存的相应存储区域。
8.如权利要求7所述的方法,其特征在于,在所述物理主机确定所述第二数据的数据量和数据类型之后,还包括:
若所述第二数据的数据量大于等于所述通信内存的存储空间,所述物理主机将所述通信内存的状态更新为第三状态;
若检测到所述通信内存的状态为所述第三状态,所述虚拟机从所述可读取内存中确定存储空间大于等于所述第二数据的数据量的所述大数据区域;
所述虚拟机将所述大数据区域的内存地址写入所述通信内存中,并将所述通信内存的状态更新为第四状态;
若检测到所述通信内存的状态为所述第四状态,所述物理主机从所述通信内存中获得所述大数据区域的内存地址并将所述第二数据写入所述内存地址对应的存储区域。
9.如权利要求6-8中任一权利要求所述的方法,其特征在于,在所述虚拟机读取所述第二数据以完成所述虚拟机和所述物理主机之间的通信之后,还包括:
所述虚拟机将所述通信内存的状态更新为所述第一状态。
10.如权利要求1所述的方法,其特征在于,虚拟机从所述虚拟机的内存中确定通信内存,包括:
所述虚拟机从所述虚拟机的内存中确定当前空闲的预定大小内存,并为所述预定大小内存设置预定特征标识以获得所述通信内存;
运行所述虚拟机的物理主机确定所述通信内存,包括:
所述物理主机搜索所述虚拟机的内存以将设置有所述预定特征标识的内存确定为所述通信内存。
11.如权利要求10所述的方法,其特征在于,在所述物理主机搜索所述虚拟机的内存以将设置有所述预定特征标识的内存确定为所述通信内存之后,还包括:
从所述通信内存中删除所述预定特征标识。
12.如权利要求1所述的方法,其特征在于,运行所述虚拟机的物理主机确定所述通信内存,包括:
所述虚拟机通过串口通信的方式将所述通信内存的地址发送给所述物理主机,以使所述物理主机根据所述通信内存的地址确定所述通信内存;或,
所述虚拟机将所述通信内存的地址存储在虚拟磁盘的预定位置,以使所述物理主机从所述预定位置处读取所述通信内存的地址以确定所述通信内存。
13.如权利要求1所述的方法,其特征在于,虚拟机从所述虚拟机的内存中确定通信内存,包括:
所述虚拟机从所述虚拟机的内存中检测位于预定位置的内存是否处于空闲状态;
若处于空闲状态,则将所述预定位置的内存确定为所述通信内存;
若未处于空闲状态,则将所述预定位置的内存释放,并将释放后的所述预定位置的内存确定为所述通信内存。
14.一种虚拟机,所述虚拟主机运行在物理主机上,其特征在于,所述虚拟机包括:
确定模块,用于从所述虚拟机的内存中确定通信内存;
数据读写模块,用于将数据写入所述通信内存以使所述物理主机读取和/或从所述通信内存中读取所述物理主机写入的数据。
15.一种物理主机,所述物理主机运行有虚拟机,其特征在于,所述物理主机包括:
确定模块,用于确定通信内存;其中,所述通信内存是所述虚拟机从所述虚拟机的内存中确定的;
数据读写模块,用于将数据写入所述通信内存以使所述虚拟机读取和/或从所述通信内存中读取所述虚拟机写入的数据。
16.一种虚拟机系统,包括虚拟机和运行所述虚拟机的物理主机,其特征在于,
所述虚拟机,用于从所述虚拟机的内存中确定通信内存;以及将数据写入所述通信内存以使所述物理主机读取和/或从所述通信内存中读取所述物理主机写入的数据;
所述物理主机,用于确定所述通信内存;以及从所述通信内存中读取所述虚拟机写入的数据和/或将数据写入所述通信内存以使所述虚拟机读取。
CN201711268053.1A 2017-12-05 2017-12-05 虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统 Pending CN108595244A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711268053.1A CN108595244A (zh) 2017-12-05 2017-12-05 虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711268053.1A CN108595244A (zh) 2017-12-05 2017-12-05 虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统

Publications (1)

Publication Number Publication Date
CN108595244A true CN108595244A (zh) 2018-09-28

Family

ID=63633361

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711268053.1A Pending CN108595244A (zh) 2017-12-05 2017-12-05 虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统

Country Status (1)

Country Link
CN (1) CN108595244A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491598A (zh) * 2018-10-19 2019-03-19 浪潮电子信息产业股份有限公司 一种逻辑卷的删除方法和装置
CN110262875A (zh) * 2019-06-25 2019-09-20 苏州浪潮智能科技有限公司 基于补丁机制的Windows虚拟机与KVM宿主机的通信方法及系统
CN112822266A (zh) * 2021-01-05 2021-05-18 成都安思科技有限公司 一种基于内存共享的虚拟机内外通信方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050204357A1 (en) * 2004-03-15 2005-09-15 Ajay Garg Mechanism to protect extensible firmware interface runtime services utilizing virtualization technology
CN101808141A (zh) * 2010-04-19 2010-08-18 浙江大学 一种基于虚拟化平台的宿主客户机协同换页的方法
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN103064796A (zh) * 2011-10-18 2013-04-24 财团法人工业技术研究院 虚拟机内存的共享方法与计算机系统
US20130339953A1 (en) * 2007-11-16 2013-12-19 Vmware, Inc. Vm inter-process communication
CN103559075A (zh) * 2013-10-30 2014-02-05 华为技术有限公司 一种数据传输方法、装置和系统及内存装置
CN106778275A (zh) * 2016-12-29 2017-05-31 北京瑞星信息技术股份有限公司 基于虚拟化环境下的安全防护方法及系统和物理主机
CN107346260A (zh) * 2017-06-29 2017-11-14 郑州云海信息技术有限公司 一种数据传输方法、装置及系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050204357A1 (en) * 2004-03-15 2005-09-15 Ajay Garg Mechanism to protect extensible firmware interface runtime services utilizing virtualization technology
US20130339953A1 (en) * 2007-11-16 2013-12-19 Vmware, Inc. Vm inter-process communication
CN101819564A (zh) * 2009-02-26 2010-09-01 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
CN101808141A (zh) * 2010-04-19 2010-08-18 浙江大学 一种基于虚拟化平台的宿主客户机协同换页的方法
CN103064796A (zh) * 2011-10-18 2013-04-24 财团法人工业技术研究院 虚拟机内存的共享方法与计算机系统
CN103559075A (zh) * 2013-10-30 2014-02-05 华为技术有限公司 一种数据传输方法、装置和系统及内存装置
CN106778275A (zh) * 2016-12-29 2017-05-31 北京瑞星信息技术股份有限公司 基于虚拟化环境下的安全防护方法及系统和物理主机
CN107346260A (zh) * 2017-06-29 2017-11-14 郑州云海信息技术有限公司 一种数据传输方法、装置及系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491598A (zh) * 2018-10-19 2019-03-19 浪潮电子信息产业股份有限公司 一种逻辑卷的删除方法和装置
CN110262875A (zh) * 2019-06-25 2019-09-20 苏州浪潮智能科技有限公司 基于补丁机制的Windows虚拟机与KVM宿主机的通信方法及系统
CN112822266A (zh) * 2021-01-05 2021-05-18 成都安思科技有限公司 一种基于内存共享的虚拟机内外通信方法

Similar Documents

Publication Publication Date Title
CN110232036B (zh) 主机系统及其方法和加速模块
US8024728B2 (en) Virtual machine dispatching to maintain memory affinity
US10176007B2 (en) Guest code emulation by virtual machine function
CN104980454B (zh) 一种资源数据共享方法、服务器及系统
US7492723B2 (en) Mechanism to virtualize all address spaces in shared I/O fabrics
US7784060B2 (en) Efficient virtual machine communication via virtual machine queues
WO2018119951A1 (zh) Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品
US8572624B2 (en) Providing multiple quiesce state machines in a computing environment
US20010016879A1 (en) Multi OS configuration method and computer system
US9069485B2 (en) Doorbell backpressure avoidance mechanism on a host channel adapter
US20070124365A1 (en) Method, apparatus and program storage device that provides a user mode device interface
US10423467B2 (en) Data processing apparatus and method for performing lock-protected processing operations for multiple threads
US11188365B2 (en) Memory overcommit by speculative fault
CN108595244A (zh) 虚拟机内外通信方法、虚拟机、物理主机及虚拟机系统
CN106445398A (zh) 一种基于新型存储器的嵌入式文件系统及其实现方法
US9542112B2 (en) Secure cross-process memory sharing
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
CN105955801A (zh) 一种基于rdma和htm的分布式乐观并发控制方法
US20080294866A1 (en) Method And Apparatus For Memory Management
CN112330229B (zh) 资源调度方法、装置、电子设备及计算机可读存储介质
US20070033371A1 (en) Method and apparatus for establishing a cache footprint for shared processor logical partitions
US20150186076A1 (en) Dynamically updated user data cache for persistent productivity
JP5673396B2 (ja) 情報処理システム、情報処理プログラム、情報処理方法
US8689230B2 (en) Determination of running status of logical processor
US11194606B2 (en) Managing related devices for virtual machines utilizing shared device data

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20180928