CN111813584A - 内存共享方法、装置、电子设备及存储介质 - Google Patents
内存共享方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111813584A CN111813584A CN202010780090.6A CN202010780090A CN111813584A CN 111813584 A CN111813584 A CN 111813584A CN 202010780090 A CN202010780090 A CN 202010780090A CN 111813584 A CN111813584 A CN 111813584A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- memory
- host
- shared memory
- physical
- 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.)
- Withdrawn
Links
- 230000015654 memory Effects 0.000 title claims abstract description 490
- 238000000034 method Methods 0.000 title claims abstract description 371
- 230000008569 process Effects 0.000 claims abstract description 317
- 238000013507 mapping Methods 0.000 claims abstract description 58
- 230000005856 abnormality Effects 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 238000013519 translation Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 101000771640 Homo sapiens WD repeat and coiled-coil-containing protein Proteins 0.000 description 3
- 102100029476 WD repeat and coiled-coil-containing protein Human genes 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012367 process mapping Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了一种内存共享方法、装置、电子设备及存储介质,涉及计算机技术领域,应用于数据共享系统,包括主机以及运行于主机的虚拟机,主机运行有至少一个主机进程,虚拟机运行有至少一个虚拟机进程,该方法包括:基于虚拟机进程接收来自主机进程的共享内存建立请求,并基于共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址;将第一虚拟机物理地址对应的内存映射到主机进程的进程地址空间;从第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页;将物理内存页对应的内存映射到虚拟机进程的进程地址空间,将物理内存页对应的内存作为虚拟机进程与主机进程之间的共享内存。本申请实现虚拟机和主机进程间的安全内存共享。
Description
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种内存共享方法、装置、电子设备及存储介质。
背景技术
随着信息技术的不断发展,虚拟机(Virtual Machine)技术得到越来越广泛的应用。虚拟机是通过软件模拟的、具有完整硬件功能的,运行在一个完全隔离环境中的完整计算机系统。通过虚拟机软件,可以在一台物理计算机上模拟出一台或多台虚拟的计算机。虚拟机可以像真正的计算机那样进行工作,例如,可以安装操作系统、安装应用程序、访问网络资源等等。通常虚拟机所在的物理计算机称为宿主机(Host),也可称为主机,虚拟机自身称为客户机(Guest)。
虚拟机和主机之间、虚拟机之间可进行内存共享,但是目前虚拟机与主机之间进行内存共享时,任意应用进程都可能访问到虚拟机与主机之间的共享内存,因而存在安全性风险。
发明内容
本申请实施例提出了一种内存共享方法、装置、电子设备及存储介质,能够实现跨域进程间的内存共享,降低安全风险。
第一方面,本申请实施例提供了一种内存共享方法,应用于数据共享系统,所述数据共享系统包括主机以及运行于所述主机的虚拟机,所述主机运行有至少一个主机进程,所述虚拟机运行有至少一个虚拟机进程,该方法包括:基于所述虚拟机进程接收来自主机进程的共享内存建立请求,并基于所述共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址;将所述第一虚拟机物理地址对应的内存映射到所述主机进程的进程地址空间;从所述第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页;将所述物理内存页对应的内存映射到所述虚拟机进程的进程地址空间,将所述物理内存页对应的内存作为所述虚拟机进程与所述主机进程之间的共享内存。
第二方面,本申请实施例提供了一种内存共享装置,应用于数据共享系统,所述数据共享系统包括主机以及运行于所述主机的虚拟机,所述主机运行有至少一个主机进程,所述虚拟机运行有至少一个虚拟机进程,该装置包括:共享内存请求模块,用于基于所述虚拟机进程接收来自主机进程的共享内存建立请求,并基于所述共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址;第一内存映射模块,用于将所述第一虚拟机物理地址对应的内存映射到所述主机进程的进程地址空间;内存页分配模块,用于从所述第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页;第二内存映射模块,用于将所述物理内存页对应的内存映射到所述虚拟机进程的进程地址空间,以使将所述物理内存页对应的内存作为所述虚拟机进程与所述主机进程之间的共享内存。
第三方面,本申请实施例提供了一种电子设备,包括:存储器;一个或多个处理器,与所述存储器耦接;一个或多个应用程序,其中,一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个应用程序配置用于执行上述第一方面提供的内存共享方法。
第四方面,本申请实施例提供了一种计算机可读取存储介质,计算机可读取存储介质中存储有程序代码,程序代码可被处理器调用执行上述第一方面提供的内存共享方法。
本申请实施例提供的一种内存共享方法、装置、电子设备及存储介质,通过基于虚拟机进程接收来自主机进程的共享内存建立请求,并基于共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址,并将第一虚拟机物理地址对应的内存映射到主机进程的进程地址空间,然后从第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页,并将物理内存页对应的内存映射到虚拟机进程的进程地址空间,把物理内存页对应的内存作为虚拟机进程与主机进程之间的共享内存,使得虚拟机进行与主机进程可基于共享内存实现内存共享,实现跨虚拟机域和主机域的进程间内存共享,减小共享粒度,使得其他虚拟机进程或主机进程难以随意访问该共享内存,降低了安全性风险。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一个实施例提供的内存共享方法的流程示意图。
图2示出了本申请另一个实施例提供的内存共享方法的流程示意图。
图3示出了本申请一个示例性实施例提供的图2中步骤S210的流程示意图。
图4示出了本申请一个示例性实施例提供的主机进程与虚拟机进程之间的内存共享环境示意图。
图5示出了本申请又一个实施例提供的内存共享方法的流程示意图。
图6示出了本申请一个示例性实施例提供的多个虚拟机进程与多个主机进程之间的内存共享环境示意图。
图7示出了本申请一个示例性实施例提供的图5中步骤S340的流程示意图。
图8示出了本申请一个示例性实施例提供的虚拟机进程与主机进程之间基于共享内存共享数据的示意图。
图9示出了本申请实施例提供的内存共享装置的模块框图。
图10示出了本申请实施例提供的电子设备的结构框图。
图11示出了本申请实施例提供的用于保存或者携带实现根据本申请实施例的内存共享方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
目前跨虚拟机域和主机域的内存共享一般是系统级内存共享,比如,是将主机的内存直接共享到虚拟机的内核态,这种系统级的共享,使得主机侧的任意进程、虚拟机侧的任意进程都可能访问到主机共享的那部分内存,因此目前跨域共享内存的方法共享粒度过大,存在安全性风险。
基于上述问题,本申请实施例提供了一种内存共享方法、装置、电子设备及计算机可读取存储介质,下面将通过具体实施例对本申请实施例提供的信息处理方法、装置、电子设备及存储介质进行详细说明。
请参阅图1,图1示出了本申请实施例提供的一种内存共享方法的流程示意图,可应用于数据共享系统,数据共享系统包括主机以及运行于主机的虚拟机,主机运行有至少一个主机进程,所述虚拟机运行有至少一个虚拟机进程。其中,主机可以是手机、平板电脑、MP3播放器(Moving Picture Experts GroupAudio LayerⅢ,动态影像压缩标准音频层面3)、MP4(Moving Picture ExpertsGroup Audio LayerⅣ,动态影像压缩标准音频层面4)播放器、个人计算机或可穿戴电子设备等终端,本申请实施例对具体的终端的设备类型不作限定。并且,本申请实施例的执行主体可以是主机上运行的一段代码,可以植入主机的操作系统内核,或者是植入到主机的操作系统中的单独的服务,还可以是主机上运行的一个客户端等,本申请实施例对此不作限定。下面将针对图1所示的流程示意图进行详细的阐述。该内存共享方法可以包括以下步骤:
步骤S110:基于虚拟机进程接收来自主机进程的共享内存建立请求,并基于共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址。
本实施例中,虚拟机进程为虚拟机内部运行的应用进程,可记为GUEST_APP,主机进程为主机侧运行的应用进程,可记为HOST_APP。
其中,共享内存请求用于与虚拟机进程建立共享内存,虚拟机进程可接收来自主机进程的共享内存建立请求,并基于共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址。
其中,虚拟机物理地址是虚拟机操作系统(也称客户机操作系统(GuestOperationSystem,Guest OS))的物理地址,其对于物理计算机如主机来说不是真正的物理地址,只是虚拟机操作系统视其为物理地址,其跟实际的物理地址之间的翻译是通过硬件辅助虚拟化的硬件提供。其中,虚拟机物理地址也称客户机物理地址(Guest Physical Address,GPA)。相对应的,主机物理地址(Host Physical Address,HPA)为主机的物理地址,是真正的物理地址。
在一些实施方式中,主机进程可与虚拟机进程通过网络套接字连接,在主机进程需与虚拟机进程共享内存时,可向虚拟机进程发送共享内存建立请求,基于虚拟机进程接收来自主机进程的共享内存建立请求,可开始建立该虚拟机进程与该主机进程之间的共享内存。具体地,可基于共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址。在一些示例中,虚拟机进程接收到共享内存建立请求后,可为待建立的共享内存分配一段连续的物理内存,即第一虚拟机物理地址可以是多个连续的物理地址。
在一些实施方式中,用户可基于主机输入共享内存建立指令,以使得主机进程发出共享内存建立请求,即用户可自行操作,请求建立共享内存。
步骤S120:将第一虚拟机物理地址对应的内存映射到主机进程的进程地址空间。
将第一虚拟机物理地址对应的内存映射到主机进程的进程地址空间,具体地,可基于第一虚拟机物理地址与主机物理地址的映射关系,确定第一虚拟机物理地址对应的主机物理地址,并执行映射操作,将第一虚拟机物理地址对应的内存,按第一虚拟机物理地址对应的主机物理地址映射到主机进程对应的进程地址空间。
在一些实施方式中,映射操作可以是MMAP操作,MMAP是一种内存映射文件的方法,即将一个文件或者其他对象映射到进程的地址空间,因而通过执行映射操作,可将物理地址对于的内存映射到自己的进程地址空间,从而,基于主机进程执行映射操作,可将第一虚拟机对应的内存的映射到与主机物理地址对应的进程地址空间
步骤S130:从第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页。
在主机进程映射完成后,可以从第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页。
在一些实施方式中,主机进程映射完成后可向虚拟机进程发出共享内存分配已经准备好的状态信息。在一些示例中,状态信息可以是字符串如“Ready”,则在虚拟机进程接收到主机进程发送的状态信息时,可从第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页。
在一些实施方式中,可基于虚拟机操作系统从第一虚拟机物理地址对应的内存中为待建立的共享内存按顺序分配物理内存页。
步骤140:将物理内存页对应的内存映射到虚拟机进程的进程地址空间,将物理内存页对应的内存作为虚拟机进程与主机进程之间的共享内存。
为待建立的共享内存分配物理内存页后,可基于虚拟机进程执行映射操作,将物理内存页对应的内存映射到虚拟机进程的进程地址空间,并将物理内存页对应的内存作为虚拟机进程与主机进程之间的共享内存。从而该虚拟机进程与该主机进程之间共享这部分共享内存,实现跨虚拟机域与主机域的进程间内存共享,减小共享粒度,使得其他虚拟机进程或主机进程难以随意访问该共享内存,降低了安全性风险。
在一些实施方式中,映射操作也可以是MMAP操作,其具体描述可见上述内容,在此不再赘述。
本申请实施例提供的内存共享方法,通过基于虚拟机进程接收来自主机进程的共享内存建立请求,并基于共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址,并将第一虚拟机物理地址对应的内存映射到主机进程的进程地址空间,然后从第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页,并将物理内存页对应的内存映射到虚拟机进程的进程地址空间,把物理内存页对应的内存作为虚拟机进程与主机进程之间的共享内存,使得虚拟机进行与主机进程可基于共享内存实现内存共享,实现跨虚拟机域和主机域的进程间内存共享,减小共享粒度,使得其他虚拟机进程或主机进程难以随意访问该共享内存,降低了安全性风险。
请参阅图2,图2示出了本申请另一个实施例提供的内存共享方法的流程示意图,具体地,该方法可以包括:
步骤S210:基于虚拟机进程接收来自主机进程的共享内存建立请求,并基于共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址。
在一些实施例中,步骤S210中基于虚拟机进程接收来自主机进程的共享内存建立请求,可具体包括步骤S211至步骤S214,具体地,请参阅图3,图3示出了本申请一个示例性实施例提供的图2中步骤S210的流程示意图,具体地,步骤S210可以包括:
步骤S211:基于主机进程获取用于建立共享内存的共享内存建立指令。
在一些实施方式中,若虚拟机上运行的虚拟机操作系统为Linux操作系统,则在虚拟机内部具有Linux操作系统原有的匿名共享内存(ASHMEM)模块,在系统中呈现为/dev/ashmem驱动,第一共享内存驱动可以是该驱动。其中,ASHMEM模块本身提供了在Linux操作系统内部进程间(即虚拟机内部进程间)内存共享的机制。
在一个示例性实施例中,可在主机与虚拟机之间搭建好共享内存分配和建立的环境,基于该环境实现本实施例提供的内存共享方法。具体地,请参阅图4,图4示出了本申请一个示例性实施例提供的主机进程与虚拟机进程之间的内存共享环境示意图,下面基于图4对主机与虚拟机之间的一种内存共享环境进行说明。
如图4所示,在一些实施方式中,可在主机侧预先创建共享内存驱动即第二共享内存驱动,第二共享内存驱动可记为SHMEM驱动,在主机操作系统中呈现为/dev/shmem,主要用于为上层应用进程即主机进程HOST_APP提供一个公共的接口,使得用户基于主机进程可触发共享内存建立指令,从而基于主机进程可获取用于建立共享内存的共享内存建立指令。在一些其他实施例中,shmem也可记为shm,在此不做限定。
在一些实施方式中,主机侧还可设置有共享内存管理服务,可记为shmem_mgr,该共享内存管理服务shmem_mgr实质上是一段可在主机侧运行的代码,可用于管理从虚拟机内部的内存(内存A)映射到主机侧的共享内存(内存A’)。同时,在虚拟机内部也可设置有代理服务,可记为shmem_mgr_agent,shmem_mgr_agent是shmem_mgr在虚拟机内部的代理进程,用于根据主机侧的共享内存管理服务shmem_mgr发起的共享内存命令在虚拟机内部分配内存用于共享。在一些示例中,代理服务shmem_mgr_agent和共享内存管理服务shmem_mgr之间的通信可基于Vi rt io协议建立连接。其中,Vi rtio协议是一种虚拟化下前后端驱动通信的标准协议,前端驱动在虚拟机内部,后端驱动在主机侧。
步骤S212:基于共享内存建立指令调用第二共享内存驱动。
步骤S213:通过第二共享内存驱动,向虚拟机进程发送共享内存建立请求。
主机进程可基于共享内存建立指令调用第二共享内存驱动,通过第二共享内存驱动,向虚拟机进程发送共享内存建立请求。在一种实施方式中,基于共享内存建立指令,主机进程可对第二共享内存驱动对应的虚拟设备执行OPEN操作,发起第一共享内存请求。
在一个示例中,可通过OPEN操作获得第二共享内存驱动对应的虚拟设备/dev/shmem的文件描述符(File Description,FD),然后对该文件描述符发起设备输入输出操作的系统调用,该系统调用是一个专用于设备输入输出操作的系统调用,即ioctl(input/output control)系统调用,命令字为ioctl_request。
第一共享内存驱动,即虚拟设备/dev/shmem的设备驱动根据收到的ioct系统调用的参数,该参数包括命令字ioctl_request,可以向主机侧的共享内存管理服务shmem_mgr发起第二共享内存请求,并基于主机侧的共享内存管理服务shmem_mgr向虚拟机内部的代理服务shmem_mgr_agent发送共享内存建立请求。其中,第二内存请求用于指示主机侧的共享内存管理服务发起共享内存建立请求。
步骤S214:基于虚拟机进程接收来自主机进程的共享内存建立请求。
基于虚拟机进程内部的代理服务shmem_mgr_agent接收共享内存建立请求。
步骤S220:根据第一虚拟机物理地址,确定对应的第一主机物理地址。
基于虚拟机进程内部的代理服务shmem_mgr_agent接收共享内存建立请求后,可分配一段连续的物理内存(即第一虚拟机物理地址连续),并将这段连续的物理内存对应的第一虚拟机物理地址发送到主机侧的共享内存管理服务shmem_mgr。作为一种实施方式,可基于第一虚拟机物理地址生成GPA数组(gpa_list)进行发送。
基于第二共享内存驱动从主机侧的共享内存管理服务shmem_mgr中获取到第一虚拟机物理地址,根据第一虚拟机物理地址,确定对应的第一主机物理地址。
步骤S230:将第一主机物理地址对应的内存映射到主机进程的进程地址空间。
在一些实施方式中,虚拟机启动时,主机会从一个起始地址给虚拟机分配一段物理内存,供虚拟机使用,虚拟机在将这段物理内存映射到自己的地址空间,则该段物理内存对应有虚拟机物理地址。则将第一主机物理地址对应的内存映射到主机进程的进程地址空间,可从主机为虚拟机分配的总内存的起始地址开始映射。在一些示例中,该起始地址也可记为基地址BASE_HOST。当然在其他实施方式中,也可不从基地址开始映射,而从基地址之后的其他地址开始映射,在此不作限定。
作为一种实施方式,可基于主机进程使用第二共享内存驱动对应的虚拟设备/dev/shmem的文件描述符执行映射操作,该映射操作可调用/dev/shmem对应的第二共享内存驱动的mmap函数中来实现。
进一步地,在虚拟化环境下,真正拥有物理内存的是运行虚拟机的主机,物理内存只有一份,虚拟机需要在主机上为每个虚拟机操作系统模拟出可以当作物理内存一样使用的虚拟内存,虚拟机模拟了一层新的地址空间,对应虚拟机物理地址,虽然虚拟机将它认为是物理地址,但实际上并不是主机最终的物理地址。因此,虚拟机和主机之间进行数据传输时,往往需要经过主机物理地址和虚拟机物理地址之间的地址转换,导致共享效率较低。基于此,本实施例通过预先将虚拟机物理地址与主机物理地址映射一致,即HPA=GPA,可在主机进程与虚拟机进程之间进行内存共享时快速的进行GPA到HPA的地址转换,减少地址计算的复杂度。
具体地,在一些实施例中,在步骤S220之前,还可以在虚拟机启动时,获取主机预留的物理内存;根据预留的物理内存对应的主机物理地址,将预留的物理内存映射到与主机物理地址一致的虚拟机物理地址。从而使得虚拟机地址空间的虚拟机物理地址=主机物理地址,即GPA=HPA。由此在将第一虚拟机物理地址对应的内存映射到主机进程的进程地址空间时,可加速地址转换,直接按第一虚拟机物理地址对应的内存映射到主机进程的进程地址空间,从而在进行内存共享时可以快速的进行GPA到HPA的地址转换,减少地址计算的复杂度。
在一种实施方式中,可通过在主机侧操作系统启动时预留一段连续的物理内存,在虚拟机启动时将这块物理内存分配给虚拟机使用,同时在将这块物理内存映射到虚拟机地址空间时,指定映射到与主机物理地址一致的虚拟机物理地址,使得GPA=HPA。
步骤S240:从第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页。
基于主机进程将第一主机物理地址对应的内存映射到主机进程的进程地址空间后,主机进程可通过网络连接发送状态信息至虚拟进程,其中,状态信息用于指示共享内存分配已经准备完成,在一个示例中,该状态信息可以是表示Ready,在其他示例中,也可以不是,在此不作限定。
在一些实施方式中,虚拟进程接收到该状态信息,可调用第一共享内存驱动,基于第一共享内存驱动检测虚拟机是否存在缺页异常。作为一种实施方式,基于虚拟进程对第一共享内存驱动的设备文件/dev/ashmem执行OPEN操作,通过OPEN操作获得/dev/ashmem的文件描述符,再通过该文件描述符发起ioctl系统调用,命令字为ioctl_request。基于第一共享内存驱动的缺页处理函数,可在检测到缺页异常时,从第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页。
步骤S250:将物理内存页对应的内存映射到虚拟机进程的进程地址空间,将物理内存页对应的内存作为虚拟机进程与主机进程之间的共享内存。
在一些实施方式中,虚拟机进程通过第一共享内存驱动的文件描述符执行映射操作,将分配的物理内存页对应的内存映射到虚拟机进程的进程地址空间,其映射的基地址是BASE_GUEST,即从虚拟机的基地址BASE_GUEST开始映射。作为一种实施方式,虚拟进程使用第一共享内存驱动对应的/dev/ashmem设备文件的文件描述符执行映射操作会调用到第一共享内存驱动的mmap函数中来实现,映射完成后,将物理内存页对应的内存作为虚拟机进程与主机进程之间的共享内存,虚拟机进程与主机进程的共享内存也就建立完成。
需要说明的是,本实施例中未详细描述的部分可以参考前述实施例,在此不再赘述。
本实施例提供的内存共享方法,通过在主机侧在主机侧实现了一个第二共享内存驱动(系统中呈现为/dev/shmem),向上层应用进程提供一个公共的接口,使得用户可通过主机进程实现发起共享内存建立请求。并且通过在主机侧设置共享内存管理服务shmem_mgr,负责管理从虚拟机内部映射到主机侧的共享内存,并在虚拟机内部设置该共享内存管理服务对应的代理服务shmem_mgr_agent,负责根据共享内存管理服务shmem_mgr发起的共享内存分配的命令在虚拟机内部分配内存用于共享,从而使得主机进程与虚拟机进程可基于第二、第一共享内存驱动与对应的服务实现跨域进程间的内存共享,降低了共享粒度,提高了安全性。并且,还通过在主机侧操作系统启动时预留一段连续的物理内存,在虚拟机启动时将这块物理内存分配给虚拟机使用,同时在将这块物理内存映射到虚拟机地址空间时指定映射到GPA=HPA的地址,使得虚拟机的虚拟机物理地址与主机物理地址一致,加速了地址的转换计算,解决了跨域内存共享时内存地址换算的计算复杂度较大的问题。
请参阅图5,图5示出了本申请又一个实施例提供的内存共享方法的流程示意图,具体地,该方法可以包括:
步骤S310:基于虚拟机进程接收来自主机进程的共享内存建立请求,并基于共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址。
其中,共享内存建立请求携带第一校验信息,第一校验信息用于校验主机进程的身份。其中,第一校验信息可以是基于随机数生成的字符串,也可以是通过其他算法生成的字符串,比如通过加密算法生成的密码,在此不作限定。
作为一种实施方式,主机进程通过第二共享内存驱动发起第一共享内存请求,第一共享内存请求包含请求命令字和第一校验信息。在一个示例中,主机进程对虚拟设备请求命令字可以为i oct l_request。第二共享内存驱动根据第一共享内存请求中的请求命令字和第一校验信息,向主机侧的共享内存管理服务发起第二共享内存请求,以指示共享内存管理服务向虚拟机发起共享内存建立请求。其中,共享内存建立请求包含第一校验信息。
基于主机侧的共享内存管理服务shmem_mgr向虚拟机内部的代理服务shmem_mgr_agent发起共享内存建立请求,虚拟机内部的代理服务shmem_mgr_agent基于共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址。具体实施方式可见上述内容,并于本实施例中,虚拟机内部的代理服务shmem_mgr_agent还会存储第一校验信息。
步骤S320:将第一虚拟机物理地址对应的内存映射到主机进程的进程地址空间。
于本实施例中,步骤S320的具体实施方式可参见前述实施例中步骤S220-步骤S230。
步骤S30:接收目标进程发送的第二校验信息。
其中,目标进程运行于主机或虚拟机,即目标进程可以是主机进程,也可以是虚拟机进程。其中,目标进程可以是上述基于第一校验信息建立共享内存的主机进程或虚拟机进程,也可以是上述建立共享内存的主机进程和虚拟机以外的其他主机进程或虚拟机进程。
步骤S340:判断第二校验信息与第一校验信息是否匹配。
由于上述基于第一校验信息建立共享内存的主机进程与虚拟机进程均有存储第一校验信息,则若目标进程为该主机进程或该虚拟机进程,则目标进程发送的第二校验信息即与第一校验信息匹配。基于此,在一些实施例中,通过判断目标进程发送的第二校验信息与建立共享内存的第一校验信息是否匹配,可以使得其他不匹配的进程无法访问基于第一校验信息建立的共享内存,使得基于第一校验信息建立共享内存的主机进程与虚拟机进程之间的共享内存可不被其他进程随意访问,从而增加安全性,降低安全风险。同时也可避免恶意进程的随意访问,更进一步降低安全风险,提供内存共享的安全性。
在另一些实施例中,主机可运行有多个进程,即多个主机进程,虚拟机也可运行有多个进程,即多个虚拟机进程,则通过校验主机进程发出的第一校验信息与虚拟机进程发出的第二校验信息是否匹配,可使得主机侧多个主机进程与虚拟机多个虚拟机进程之间通信不错乱,各自基于各自约定的共享内存进行内存共享和通信。
在一些实施方式中,请参阅图6,图6示出了本申请一个示例性实施例提供的多个虚拟机进程与多个主机进程之间的内存共享环境示意图。如图6所示,主机侧有多个主机进程,包括主机进程C、D,并设置有共享内存管理服务,用于管理从虚拟机内部的内存(内存’)映射到主机侧的共享内存(内存”)。虚拟机进程A与虚拟机进程B基于第一共享内存驱动,并虚拟机内部设置有代理服务,用于根据主机侧的共享内存管理服务shmem_mgr发起的共享内存命令在虚拟机内部分配内存用于共享。
在一些实施方式中,步骤S340可包括步骤S341至步骤S343,具体地,请参阅图7,图7示出了本申请一个示例性实施例提供的图5中步骤S340的流程示意图,具体地,步骤S340可以包括:
步骤S341:调用第一共享内存驱动。
虚拟机进程收到目标进程通过网络连接发送的状态信息和第二校验信息,虚拟机进程可调用第一共享内存驱动。作为一种实施方式,虚拟机进程可对第一共享内存驱动对应的设备文件/dev/ashmem执行OPEN操作,通过OPEN操作获得/dev/ashmem的文件描述符,再通过文件描述符发起ioctl系统调用,命令字为ioctl_request,参数中附带第二校验信息。
步骤S342:基于第一共享内存驱动检测虚拟机是否存在缺页异常。
其中,第一共享内存驱动是Linux内核的ASHMEM驱动,对ASHMEM驱动的缺页处理函数进行修改,以使得修改后的ASHMEM驱动可执行步骤S342及后续步骤。基于第一共享内存驱动的缺页处理函数,检测虚拟机是否存在缺页异常。
步骤S343:若检测到缺页异常,判断第二校验信息与第一校验信息是否匹配。
若检测到缺页异常,判断目标进程发送的第二校验信息与第一校验信息是否匹配,从而可判断目标进程是否为基于发起共享内存建立请求的主机进程或接收到该共享内存建立请求的虚拟机进程了,若匹配,则目标进程是该主机进程或虚拟机进程,若不匹配,则目标进程可能不是该主机进程或虚拟进程。
于本实施例中,若检测到缺页异常,判断第二校验信息与第一校验信息是否匹配之后,可包括:
若第二校验信息与第一校验信息匹配,可执行步骤S350;
若第二校验信息与第一校验信息不匹配,可执行步骤S360。
在一些其他实施例中,也可仅包括步骤S350,而不包括步骤S360。例如,若第二校验信息与第一校验信息匹配,可执行步骤S350,若第二校验信息与第一校验信息不匹配,可不执行步骤S360,等待下一个共享内存建立请求,执行步骤S310。从而可在第二校验信息与第一校验信息不匹配时不分配物理内存页,不进行共享。
步骤S350:从第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页。
若第二校验信息与第一校验信息匹配,可从第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页。由于是每次访问共享内存时,引发缺页异常来分配物理内存页,由于在分配物理内存页前,共享内存实质上是未占用内存的,所以共享内存是动态建立,不会一直占用内存,需共享时才分配物理内存页,无需虚拟机操作系统预留内存。
步骤S360:从第二虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页。
其中,第二虚拟机物理地址与第一虚拟机物理地址分别为虚拟机对应的总虚拟机物理地址中不同的虚拟机物理地址。因此,若第二校验信息与第一校验信息匹配,可从第二虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页,也就是说,从虚拟机下除了预先分配好的第一虚拟机物理地址以外的其他的虚拟机物理地址对应的内存中,分配物理内存页给待建立的共享内存。
作为一种实施方式,可以是按随机从第二虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页,如此,其他虚拟机进程就无法使用第一虚拟机物理地址对应的内存。从而可通过第二校验信息与第一校验信息的匹配,避免其他虚拟机进程使用第一虚拟机物理地址对应的内存。由此,本实施例可在第一校验信息与第二校验信息匹配时,利用虚拟机与主机约定的共享内存的地址进行分配物理内存页,如果不匹配,就仍由虚拟机内部自己随机分配。从而可以实现主机与虚拟机进程之间、虚拟机内部进程之间通信的兼容处理,在匹配时实现前者,不匹配时实现后者的通信。
步骤S370:将物理内存页对应的内存映射到虚拟机进程的进程地址空间,将物理内存页对应的内存作为虚拟机进程与主机进程之间的共享内存。
在一些实施例中,步骤S370之后,虚拟机进程与主机进程之间还可基于共享内存进行数据共享。
以虚拟机进程向主机进程共享数据为例进行说明,在虚拟机进程向主机进程共享数据时,基于共享内存写入待共享数据,并将待共享数据在共享内存中的存储信息发送至主机进程,以使主机进程基于存储信息从共享内存获取待共享数据。
作为一种实施方式,请参阅图8,图8示出了本申请一个示例性实施例提供的虚拟机进程与主机进程之间基于共享内存共享数据的示意图,存储信息可包括所写入的待共享数据的偏移信息offset以及待共享数据的尺寸信息size。主机进程基于存储信息,可从主机分配给虚拟机的内存的基地址BASE_HOST以及待共享数据的偏移信息offset确定获取待共享数据的起始位置BASE_HOST+offset,再由尺寸信息size确定获取待共享数据的结束位置BASE_HOST+offset+size,则主机进程通过访问[BASE_HOST+offset,BASE_HOST+offset+size),对应图中阴影部分,可获取到虚拟机进程基于共享内存传输的待共享数据。主机进程向虚拟机进程共享数据与前述虚拟机进程向主机进程共享数据的方法类似,在此不再赘述。
需要说明的是,本实施例中未详细描述的部分可以参考前述实施例,在此不再赘述。
本实施例提供的内存共享方法,通过在主机进程发起共享内存建立请求时,就携带第一校验信息发出,并且接收到该共享内存建立请求的虚拟进程会存储第一校验信息,则在该虚拟进程或该主机进程或其他目标进程要访问共享内存时,可对目标进程发送的第二校验信息进程校验,判断第二校验信息与第一校验信息是否匹配,并在匹配时,从虚拟机与主机约定好的共享内存的第一虚拟机物理地址进行分页,从而不仅可实现粒度到进程的跨域(虚拟机域和主机域)内存共享,使得共享内存只有在虚拟机内部的指定进程可以共享(即与主机侧进程通过网络通信的虚拟机内部进程),而不是一种系统级的全局内存共享。而且通过第一校验信息与访问共享内存的目标进程发出的第二校验信息进行匹配,可防止其他恶意进程或其他进程的访问,降低安全风险。另外,若预先使GPA=HPA,则还同时跨域的地址转换更高效。这样就实现了一个更高效、更安全的跨域的进程间内存共享。
请参阅图9,其示出了本申请实施例提供的一种内存共享装置900的结构框图,可应用于数据共享系统,数据共享系统包括主机以及运行于主机的虚拟机,主机运行有至少一个主机进程,所述虚拟机运行有至少一个虚拟机进程。其中,主机可以是手机、平板电脑、MP3播放器(Moving Picture Experts GroupAudio LayerⅢ,动态影像压缩标准音频层面3)、MP4(Moving Picture ExpertsGroup Audio LayerⅣ,动态影像压缩标准音频层面4)播放器、个人计算机或可穿戴电子设备等终端,本申请实施例对具体的终端的设备类型不作限定。该内存共享装置900可以是主机上运行的一段代码,可以植入主机的操作系统内核,或者是植入到主机的操作系统中的单独的服务,还可以是主机上运行的一个客户端等,本申请实施例对此不作限定。具体地,该内存共享装置900可以包括:共享内存请求模块910、第一内存映射模块920、内存页分配模块930以及第二内存映射模块940,具体地:
共享内存请求模块,用于基于所述虚拟机进程接收来自主机进程的共享内存建立请求,并基于所述共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址;
第一内存映射模块,用于将所述第一虚拟机物理地址对应的内存映射到所述主机进程的进程地址空间;
内存页分配模块,用于从所述第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页;
第二内存映射模块,用于将所述物理内存页对应的内存映射到所述虚拟机进程的进程地址空间,以使将所述物理内存页对应的内存作为所述虚拟机进程与所述主机进程之间的共享内存。
本申请实施例提供的内存共享装置用于实现前述方法实施例中相应的内存共享方法,并具有相应的方法实施例的有益效果,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参考图10,其示出了本申请实施例提供的一种电子设备的结构框图。该电子设备1000可以是智能手机、平板电脑、电子书、笔记本电脑、个人计算机等能够运行应用程序的电子设备。本申请中的电子设备1000可以包括一个或多个如下部件:处理器1010、存储器1020以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器1020中并被配置为由一个或多个处理器1010执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器1010可以包括一个或者多个处理核。处理器1010利用各种接口和线路连接整个电子设备1000内的各个部分,通过运行或执行存储在存储器1020内的指令、程序、代码集或指令集,以及调用存储在存储器1020内的数据,执行电子设备1000的各种功能和处理数据。可选地,处理器1010可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器1010可集成中央处理器(Central Prccessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1010中,单独通过一块通信芯片进行实现。
存储器1020可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器1020可用于存储指令、程序、代码、代码集或指令集。存储器1020可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备1000在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图11,其示出了本申请实施例提供的一种计算机可读取存储介质的结构框图。该计算机可读取存储介质1100中存储有程序代码,所述程序代码可被处理器调用执行上述实施例中所描述的方法。
计算机可读取存储介质1100可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读取存储介质1100包括非易失性计算机可读取存储介质(non-transitorycomputer-readable storage medium)。计算机可读取存储介质1100具有执行上述方法中的任何方法步骤的程序代码1110的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码1110可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种内存共享方法,其特征在于,应用于数据共享系统,所述数据共享系统包括主机以及运行于所述主机的虚拟机,所述主机运行有至少一个主机进程,所述虚拟机运行有至少一个虚拟机进程,所述方法包括:
基于所述虚拟机进程接收来自主机进程的共享内存建立请求,并基于所述共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址;
将所述第一虚拟机物理地址对应的内存映射到所述主机进程的进程地址空间;
从所述第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页;
将所述物理内存页对应的内存映射到所述虚拟机进程的进程地址空间,将所述物理内存页对应的内存作为所述虚拟机进程与所述主机进程之间的共享内存。
2.根据权利要求1所述的方法,其特征在于,所述共享内存建立请求携带第一校验信息,所述从所述第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页,包括:
接收目标进程发送的第二校验信息,所述目标进程运行于所述主机或所述虚拟机;
判断所述第二校验信息与所述第一校验信息是否匹配;
若所述第二校验信息与所述第一校验信息匹配,则从所述第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述第二校验信息与所述第一校验信息不匹配,从第二虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页,所述第二虚拟机物理地址与所述第一虚拟机物理地址分别为所述虚拟机对应的总虚拟机物理地址中不同的虚拟机物理地址。
4.根据权利要求2或3所述的方法,其特征在于,所述虚拟机包括第一共享内存驱动,所述判断所述第二校验信息与所述第一校验信息是否匹配,包括:
调用所述第一共享内存驱动;
基于所述第一共享内存驱动检测所述虚拟机是否存在缺页异常;
若检测到缺页异常,判断所述第二校验信息与所述第一校验信息是否匹配。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述将所述第一虚拟机物理地址对应的内存映射到所述主机进程的进程地址空间,包括:
根据所述第一虚拟机物理地址,确定对应的第一主机物理地址;
将所述第一主机物理地址对应的内存映射到所述主机进程的进程地址空间。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一虚拟机物理地址,确定对应的第一主机物理地址之前,所述方法还包括:
在所述虚拟机启动时,获取所述主机预留的物理内存;
根据所述预留的物理内存对应的主机物理地址,将所述预留的物理内存映射到与所述主机物理地址一致的虚拟机物理地址。
7.根据权利要求1所述的方法,其特征在于,所述主机包括第二共享内存驱动,所述基于所述虚拟机进程接收来自主机进程的共享内存建立请求,包括:
基于所述主机进程获取用于建立共享内存的共享内存建立指令;
基于所述共享内存建立指令调用所述第二共享内存驱动;
通过所述第二共享内存驱动,向所述虚拟机进程发送所述共享内存建立请求;
基于所述虚拟机进程接收来自主机进程的共享内存建立请求。
8.根据权利要求1所述的方法,其特征在于,所述将所述物理内存页对应的内存映射到所述虚拟机进程的进程地址空间之后,所述方法还包括:
当所述虚拟机进程向所述主机进程共享数据时,基于所述共享内存写入待共享数据,并将所述待共享数据在所述共享内存中的存储信息发送至所述主机进程,以使所述主机进程基于所述存储信息从所述共享内存获取所述待共享数据。
9.一种内存共享装置,其特征在于,应用于数据共享系统,所述数据共享系统包括主机以及运行于所述主机的虚拟机,所述主机运行有至少一个主机进程,所述虚拟机运行有至少一个虚拟机进程,所述装置包括:
共享内存请求模块,用于基于所述虚拟机进程接收来自主机进程的共享内存建立请求,并基于所述共享内存建立请求,为待建立的共享内存分配第一虚拟机物理地址;
第一内存映射模块,用于将所述第一虚拟机物理地址对应的内存映射到所述主机进程的进程地址空间;
内存页分配模块,用于从所述第一虚拟机物理地址对应的内存中为待建立的共享内存分配物理内存页;
第二内存映射模块,用于将所述物理内存页对应的内存映射到所述虚拟机进程的进程地址空间,以使将所述物理内存页对应的内存作为所述虚拟机进程与所述主机进程之间的共享内存。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1-8任一项所述的方法。
11.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行所述权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010780090.6A CN111813584A (zh) | 2020-08-05 | 2020-08-05 | 内存共享方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010780090.6A CN111813584A (zh) | 2020-08-05 | 2020-08-05 | 内存共享方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111813584A true CN111813584A (zh) | 2020-10-23 |
Family
ID=72863677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010780090.6A Withdrawn CN111813584A (zh) | 2020-08-05 | 2020-08-05 | 内存共享方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111813584A (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112650603A (zh) * | 2020-12-28 | 2021-04-13 | 北京天融信网络安全技术有限公司 | 内存管理方法、装置、电子设备及存储介质 |
CN112668000A (zh) * | 2021-01-04 | 2021-04-16 | 新华三信息安全技术有限公司 | 一种配置数据处理方法及装置 |
CN112769640A (zh) * | 2020-12-23 | 2021-05-07 | 中移(杭州)信息技术有限公司 | 进程通信方法、系统、服务器及存储介质 |
CN112822266A (zh) * | 2021-01-05 | 2021-05-18 | 成都安思科技有限公司 | 一种基于内存共享的虚拟机内外通信方法 |
CN112948149A (zh) * | 2021-03-29 | 2021-06-11 | 江苏为是科技有限公司 | 一种远端内存共享方法、装置、电子设备及存储介质 |
CN113032162A (zh) * | 2021-03-23 | 2021-06-25 | 重庆智行者信息科技有限公司 | 一种基于共享内存备份机制的多进程通讯方法 |
CN113110916A (zh) * | 2021-04-22 | 2021-07-13 | 深信服科技股份有限公司 | 一种虚拟机数据读写方法、装置、设备及介质 |
CN113220604A (zh) * | 2021-05-31 | 2021-08-06 | 深圳华云信息系统有限公司 | 内存申请方法、装置、电子设备和计算机可读存储介质 |
CN113779545A (zh) * | 2021-08-27 | 2021-12-10 | 深圳市优必选科技股份有限公司 | 数据跨进程共享的方法、终端设备及计算机可读存储介质 |
CN114077480A (zh) * | 2022-01-19 | 2022-02-22 | 维塔科技(北京)有限公司 | 一种主机与虚拟机共享内存方法、装置、设备及介质 |
CN114661497A (zh) * | 2022-03-31 | 2022-06-24 | 慧之安信息技术股份有限公司 | 操作系统分区共享内存方法和系统 |
CN114785807A (zh) * | 2022-03-16 | 2022-07-22 | 深信服科技股份有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN114936064A (zh) * | 2022-04-08 | 2022-08-23 | 科东(广州)软件科技有限公司 | 一种共享内存的访问方法、装置、设备和存储介质 |
CN114996176A (zh) * | 2022-07-29 | 2022-09-02 | 飞腾信息技术有限公司 | 访存方法、计算设备以及存储介质 |
CN115460172A (zh) * | 2022-08-22 | 2022-12-09 | 曙光信息产业股份有限公司 | 设备地址分配方法、装置、计算机设备、介质及程序产品 |
CN116450286A (zh) * | 2023-03-13 | 2023-07-18 | 中诚华隆计算机技术有限公司 | 一种安全芯片配置方法及设备 |
CN117492933A (zh) * | 2023-12-28 | 2024-02-02 | 苏州元脑智能科技有限公司 | 数据交换方法、装置、电子设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819564A (zh) * | 2009-02-26 | 2010-09-01 | 国际商业机器公司 | 协助在虚拟机之间进行通信的方法和装置 |
CN102073821A (zh) * | 2011-01-27 | 2011-05-25 | 北京工业大学 | 基于xen平台的虚拟安全通信隧道的建立方法 |
CN102662777A (zh) * | 2012-04-28 | 2012-09-12 | 浪潮电子信息产业股份有限公司 | 一种基于kvm虚拟机的客户机之间高速通信的方法 |
CN106844008A (zh) * | 2017-01-03 | 2017-06-13 | 华为技术有限公司 | 一种数据操作的方法、设备及系统 |
CN106874128A (zh) * | 2017-01-22 | 2017-06-20 | 广州华多网络科技有限公司 | 数据传输方法及装置 |
CN107678835A (zh) * | 2017-09-30 | 2018-02-09 | 东软集团股份有限公司 | 一种数据传输方法及系统 |
CN107943596A (zh) * | 2016-10-12 | 2018-04-20 | 阿里巴巴集团控股有限公司 | 进程通信方法、装置及系统 |
CN108932170A (zh) * | 2018-06-06 | 2018-12-04 | 华东师范大学 | 一种同驻虚拟机间高效共享内存文件系统的机制 |
US20180349162A1 (en) * | 2015-06-26 | 2018-12-06 | Intel Corporation | Apparatus and method for efficient communication between virtual machines |
CN110928646A (zh) * | 2019-11-22 | 2020-03-27 | 海光信息技术有限公司 | 一种访问共享内存的方法、装置、处理器和计算机系统 |
-
2020
- 2020-08-05 CN CN202010780090.6A patent/CN111813584A/zh not_active Withdrawn
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819564A (zh) * | 2009-02-26 | 2010-09-01 | 国际商业机器公司 | 协助在虚拟机之间进行通信的方法和装置 |
CN102073821A (zh) * | 2011-01-27 | 2011-05-25 | 北京工业大学 | 基于xen平台的虚拟安全通信隧道的建立方法 |
CN102662777A (zh) * | 2012-04-28 | 2012-09-12 | 浪潮电子信息产业股份有限公司 | 一种基于kvm虚拟机的客户机之间高速通信的方法 |
US20180349162A1 (en) * | 2015-06-26 | 2018-12-06 | Intel Corporation | Apparatus and method for efficient communication between virtual machines |
CN107943596A (zh) * | 2016-10-12 | 2018-04-20 | 阿里巴巴集团控股有限公司 | 进程通信方法、装置及系统 |
CN106844008A (zh) * | 2017-01-03 | 2017-06-13 | 华为技术有限公司 | 一种数据操作的方法、设备及系统 |
CN106874128A (zh) * | 2017-01-22 | 2017-06-20 | 广州华多网络科技有限公司 | 数据传输方法及装置 |
CN107678835A (zh) * | 2017-09-30 | 2018-02-09 | 东软集团股份有限公司 | 一种数据传输方法及系统 |
CN108932170A (zh) * | 2018-06-06 | 2018-12-04 | 华东师范大学 | 一种同驻虚拟机间高效共享内存文件系统的机制 |
CN110928646A (zh) * | 2019-11-22 | 2020-03-27 | 海光信息技术有限公司 | 一种访问共享内存的方法、装置、处理器和计算机系统 |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112769640B (zh) * | 2020-12-23 | 2022-09-16 | 中移(杭州)信息技术有限公司 | 进程通信方法、系统、服务器及存储介质 |
CN112769640A (zh) * | 2020-12-23 | 2021-05-07 | 中移(杭州)信息技术有限公司 | 进程通信方法、系统、服务器及存储介质 |
CN112650603A (zh) * | 2020-12-28 | 2021-04-13 | 北京天融信网络安全技术有限公司 | 内存管理方法、装置、电子设备及存储介质 |
CN112650603B (zh) * | 2020-12-28 | 2024-02-06 | 北京天融信网络安全技术有限公司 | 内存管理方法、装置、电子设备及存储介质 |
CN112668000A (zh) * | 2021-01-04 | 2021-04-16 | 新华三信息安全技术有限公司 | 一种配置数据处理方法及装置 |
CN112668000B (zh) * | 2021-01-04 | 2023-06-13 | 新华三信息安全技术有限公司 | 一种配置数据处理方法及装置 |
CN112822266A (zh) * | 2021-01-05 | 2021-05-18 | 成都安思科技有限公司 | 一种基于内存共享的虚拟机内外通信方法 |
CN113032162A (zh) * | 2021-03-23 | 2021-06-25 | 重庆智行者信息科技有限公司 | 一种基于共享内存备份机制的多进程通讯方法 |
CN113032162B (zh) * | 2021-03-23 | 2023-10-24 | 重庆兰德适普信息科技有限公司 | 一种基于共享内存备份机制的多进程通讯方法 |
CN112948149A (zh) * | 2021-03-29 | 2021-06-11 | 江苏为是科技有限公司 | 一种远端内存共享方法、装置、电子设备及存储介质 |
CN113110916A (zh) * | 2021-04-22 | 2021-07-13 | 深信服科技股份有限公司 | 一种虚拟机数据读写方法、装置、设备及介质 |
CN113110916B (zh) * | 2021-04-22 | 2023-11-07 | 深信服科技股份有限公司 | 一种虚拟机数据读写方法、装置、设备及介质 |
CN113220604B (zh) * | 2021-05-31 | 2021-12-07 | 深圳华云信息系统有限公司 | 内存申请方法、装置、电子设备和计算机可读存储介质 |
CN113220604A (zh) * | 2021-05-31 | 2021-08-06 | 深圳华云信息系统有限公司 | 内存申请方法、装置、电子设备和计算机可读存储介质 |
CN113779545A (zh) * | 2021-08-27 | 2021-12-10 | 深圳市优必选科技股份有限公司 | 数据跨进程共享的方法、终端设备及计算机可读存储介质 |
CN114077480A (zh) * | 2022-01-19 | 2022-02-22 | 维塔科技(北京)有限公司 | 一种主机与虚拟机共享内存方法、装置、设备及介质 |
CN114785807A (zh) * | 2022-03-16 | 2022-07-22 | 深信服科技股份有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN114661497A (zh) * | 2022-03-31 | 2022-06-24 | 慧之安信息技术股份有限公司 | 操作系统分区共享内存方法和系统 |
CN114936064A (zh) * | 2022-04-08 | 2022-08-23 | 科东(广州)软件科技有限公司 | 一种共享内存的访问方法、装置、设备和存储介质 |
CN114936064B (zh) * | 2022-04-08 | 2023-03-31 | 科东(广州)软件科技有限公司 | 一种共享内存的访问方法、装置、设备和存储介质 |
CN114996176A (zh) * | 2022-07-29 | 2022-09-02 | 飞腾信息技术有限公司 | 访存方法、计算设备以及存储介质 |
CN115460172B (zh) * | 2022-08-22 | 2023-12-05 | 曙光信息产业股份有限公司 | 设备地址分配方法、装置、计算机设备、介质及程序产品 |
CN115460172A (zh) * | 2022-08-22 | 2022-12-09 | 曙光信息产业股份有限公司 | 设备地址分配方法、装置、计算机设备、介质及程序产品 |
CN116450286B (zh) * | 2023-03-13 | 2023-08-15 | 中诚华隆计算机技术有限公司 | 一种安全芯片配置方法及设备 |
CN116450286A (zh) * | 2023-03-13 | 2023-07-18 | 中诚华隆计算机技术有限公司 | 一种安全芯片配置方法及设备 |
CN117492933A (zh) * | 2023-12-28 | 2024-02-02 | 苏州元脑智能科技有限公司 | 数据交换方法、装置、电子设备及存储介质 |
CN117492933B (zh) * | 2023-12-28 | 2024-03-22 | 苏州元脑智能科技有限公司 | 数据交换方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111813584A (zh) | 内存共享方法、装置、电子设备及存储介质 | |
US9451026B2 (en) | Electronic devices | |
CN110032413B (zh) | 一种桌面虚拟化方法、相关设备及计算机存储介质 | |
US9882825B2 (en) | Method and system for securely transmitting volumes into cloud | |
WO2017054454A1 (zh) | 对usb设备的访问方法、装置、终端、服务器及系统 | |
JP4738534B2 (ja) | 複数のブート可能装置間のブートネゴシエーション | |
US10503922B2 (en) | Systems and methods for hardware-based security for inter-container communication | |
US10296369B2 (en) | Systems and methods for protocol termination in a host system driver in a virtualized software defined storage architecture | |
CN109491759B (zh) | 基于虚拟文件系统的进程调试方法、装置和计算机设备 | |
CN111090521A (zh) | 内存分配方法、装置、存储介质及电子设备 | |
US10235195B2 (en) | Systems and methods for discovering private devices coupled to a hardware accelerator | |
CN112905304A (zh) | 一种虚拟机间通信方法、装置、物理主机及介质 | |
CN114691300A (zh) | 一种虚拟机实例的热迁移方法 | |
CN113791873B (zh) | 一种虚拟机创建方法、计算设备及存储介质 | |
US20150326684A1 (en) | System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access | |
CN111400778A (zh) | 一种虚拟磁盘文件的加密方法、系统、设备及介质 | |
WO2022222977A1 (zh) | 用于运行云业务实例的物理服务器的内存管理方法和装置 | |
CN111444117A (zh) | 存储空间碎片化实现方法、装置、存储介质及电子设备 | |
EP4390852A1 (en) | Scene rendering method and apparatus, device and system | |
CN117670645A (zh) | 限制容器显存的方法、装置、电子设备以及存储介质 | |
CN115774742A (zh) | 私有云的数据存储新增方法、装置、设备、介质及产品 | |
CN114371908A (zh) | 一种云应用程序运行方法和装置 | |
CN116743587B (zh) | 一种基于异构计算加速卡的虚拟网络接口实现方法及装置 | |
WO2024174761A1 (zh) | 内存分配的方法、电子设备及存储介质 | |
CN115756849A (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201023 |