用于多操作系统的内存访问方法、装置和电子设备与流程

文档序号:12512722阅读:228来源:国知局
用于多操作系统的内存访问方法、装置和电子设备与流程

本申请涉及虚拟化技术领域,特别涉及一种用于多操作系统的内存访问方法、装置和电子设备。



背景技术:

Gralloc(Graphic Memory Allocator)是谷歌Google开发的专为安卓Android显示系统使用的一种共享内存的管理模块。该共享内存特指一种物理地址连续、支持DMA(Direct Memory Access,直接内存存取)设备直接访问的内存区域,可以直接被GPU(Graphics Processing Unit,图形处理器)、VPU(Visual Processing Unit,视觉处理单元)、相机Camera等硬件设备访问,并且还支持作为OpenGL(Open Graphics Library,图形程序接口)的纹理texture作渲染使用。

通过Gralloc可以使不同的模块之间的内存共享,并且该共享内存支持DMA设备直接访问,而不需要通过CPU(Central Processing Unit,中央处理器)拷贝和处理,大大降低了CPU的负载率,使CPU利用率和并行处理能力得到更大的提升。

随着虚拟化技术的飞速发展,在虚拟化技术领域如何访问这种共享内存成为亟待解决的问题。



技术实现要素:

本申请实施例提供了一种用于多操作系统的内存访问方法、装置和电子设备,主要用以实现多操作系统对共享内存的访问。

第一方面,本申请实施例提供了一种用于多操作系统的内存访问方法,所述方法包括:

在客户操作系统中,在监测到软件需要共享内存时,向主操作系统申请共享内存;

在主操作系统中,通过共享内存管理模块Gralloc为所述客户操作系统分配一块共享内存子区域,向所述客户操作系统返回共享内存子区域的索引值;

在客户操作系统中,通过模拟处理器QEMU将所述索引值对应的共享内存子区域映射至所述客户操作系统后,将映射子区域的地址返回至所述软件。

第二方面,本申请实施例提供了一种用于多操作系统的内存访问装置,所述装置包括:

申请模块,用于在客户操作系统中,在监测到软件需要共享内存时,向主操作系统申请共享内存;

第一处理模块,用于在主操作系统中,通过共享内存管理模块Gralloc为所述客户操作系统分配一块共享内存子区域,向所述客户操作系统返回共享内存子区域的索引值;

第二处理模块,用于在客户操作系统中,通过模拟处理器QEMU将所述索引值对应的共享内存子区域映射至所述客户操作系统后,将映射子区域的地址返回至所述软件。

第三方面,本申请实施例提供了一种电子设备,所述电子设备包括:

存储器,一个或多个处理器;存储器与处理器通过通信总线相连;处理器被配置为执行存储器中的指令;所述存储介质中存储有用于执行上述第一方面中各个步骤的指令。

第四方面,本申请实施例提供了一种与电子设备结合使用的计算机程序产品,所述计算机程序产品包括内嵌于计算机可读的存储介质中的计算机程序,所述计算机程序包括用于使所述电子设备执行上述第一方面中各个步骤的指令。

有益效果如下:

本申请实施例中在客户操作系统中,在监测到软件需要共享内存时,向主操作系统申请共享内存;在主操作系统中,通过Gralloc为客户操作系统分配一块共享内存子区域,向客户操作系统返回共享内存子区域的索引值;在客户操作系统中,通过QEMU将索引值对应的共享内存子区域映射至客户操作系统后,将映射子区域的地址返回至软件,实现了多操作系统对共享内存的访问。

附图说明

下面将参照附图描述本申请的具体实施例,其中:

图1为本申请实施例中的一种应用用于多操作系统的内存访问方法的系统的结构示意;

图2为本申请实施例中的一种用于多操作系统的内存访问方法的流程示意图;

图3为本申请实施例中的另一种用于多操作系统的内存访问方法的流程示意图;

图4为本申请实施例中的一种用于多操作系统的内存访问装置的结构示意图;

图5为本申请实施例中的一种电子设备的结构示意图。

具体实施方式

为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以互相结合。

申请人在申请过程中注意到:

Gralloc既可以使不同的模块同时访问一块内存,并且该内存的访问还支持DMA设备的直接访问而不需要通过CPU拷贝,大大降低了CPU的负载率,使CPU利用率和并行处理能力得到更大的提升。但是对于虚拟操作系统,目前没有将Gralloc虚拟化的可行方案。

基于此,本申请提供了一种用于多操作系统的内存访问方法,在客户操作系统中,在监测到软件需要共享内存时,向主操作系统申请共享内存;在主操作系统中,通过Gralloc为客户操作系统分配一块共享内存子区域,向客户操作系统返回共享内存子区域的索引值;在客户操作系统中,通过QEMU将索引值对应的共享内存子区域映射至客户操作系统后,将映射子区域的地址返回至软件,实现了多操作系统对共享内存的访问。

本申请提供的一种用于多操作系统的内存访问方法,应用于图1所示的系统,该系统包括多个客户操作系统101和一个主操作系统102。各客户操作系统101均包括一个vGralloc和前端驱动1011,主操作系统102包括后端驱动1021、一个Gralloc1022、以及一个Gralloc服务端1023。

图1所示的系统中任一客户操作系统101在访问由所有客户操作系统101和主操作系统102共享的物理连续的内存时,可按照如下流程实现。参见图2,该流程为:

201,在客户操作系统中,在监测到软件需要共享内存时,向主操作系统申请共享内存。

其中,软件为需要调用中央处理器直接访问内存的软件。例如,Camera Capture或者视频软编码。

具体的,在客户操作系统中,在监测到软件需要共享内存时,向主操作系统发送共享内存申请。

例如,任一客户操作系统101在监测到软件需要共享内存时,通过其包括的前端驱动1011与后端驱动1021之间的通信,向Gralloc服务端1023申请一块共享内存。

202,在主操作系统中,通过Gralloc为客户操作系统分配一块共享内存子区域,向客户操作系统返回共享内存子区域的索引值。

具体的,主操作系统102通过后端驱动1021接收到共享内存申请后,请求Gralloc服务端1023调用Gralloc1022为该任一客户操作系统1021分配一块共享内存子区域。主操作系统102通过前端驱动1011与后端驱动1021之间的通信,向该任一客户操作系统返回共享内存子区域对应的索引值。

通过步骤201和步骤202为任一客户操作系统101分配共享内存子区域后,即实现Gralloc 1022的虚拟化。

203,在客户操作系统中,通过QEMU将索引值对应的共享内存子区域映射至客户操作系统后,将映射子区域的地址返回至软件。

具体的,任一客户操作系统101将索引值发送给QEMU,QEMU将索引值对应的共享内存子区域映射到任一客户操作系统101,任一客户操作系统101将映射子区域的地址返回至软件。

例如,将共享内存子区域通过QEMU映射到任一客户操作系统101系统中,再通过任一客户操作系统101的kernel将QEMU映射的共享内存子区域再映射到任一客户操作系统101的用户空间中,任一客户操作系统101将映射子区域的地址返回至软件,从而通过任一客户操作系统101中的软件访问该地址对应的映射子区域,进而访问主操作系统102的共享内存子区域。

以拍照流程为例,通过本实施例提供的方法进行内存访问的方法如下。参见图3,任一客户操作系统101为Guest,主操作系统102为Host。Guest中的Camera准备拍照时,通过Guest的前端驱动与Host的后端驱动之间的通信,向Host的Gralloc服务端申请一块共享内存。Guest通过前端驱动与Host的后端驱动之间的通信获取该共享内存子区域对应的索引值。当Camera拍照时,先将索引值发送至Camera的主操作系统,由Camera的主操作系统根据索引值找到对应的共享内存子区域,并由Camera设备通过DMA将拍照后的数据填充至本区域,然后在Guest端将该共享内存子区域对应的索引值发送至QEMU,QEMU将索引值对应的共享内存子区域映射到Guest系统中,进而锁定对应的共享内存子区域。Guest将该共享内存子区域映射到用户空间后,Guest将映射子区域的地址返回至软件,Guest中的Camera的软件通过CPU将该共享内存子区域的数据读出并保存为照片文件。

有益效果:

本申请实施例中在客户操作系统中,在监测到软件需要共享内存时,向主操作系统申请共享内存;在主操作系统中,通过Gralloc为客户操作系统分配一块共享内存子区域,向客户操作系统返回共享内存子区域的索引值;在客户操作系统中,通过QEMU将索引值对应的共享内存子区域映射至客户操作系统后,将映射子区域的地址返回至软件,实现了多操作系统对共享内存的访问。

基于同一发明构思,本实施例提供了一种用于多操作系统的内存访问装置,该用于多操作系统的内存访问装置解决问题的原理与图2所示的一种用于多操作系统的内存访问方法相似,因此该用于多操作系统的内存访问装置的实施可以参见图2所示的一种用于多操作系统的内存访问方法的实施,重复之处不再赘述。

参见图4,该用于多操作系统的内存访问装置包括:

申请模块401,用于在客户操作系统中,在监测到软件需要共享内存时,向主操作系统申请共享内存;

第一处理模块402,用于在主操作系统中,通过共享内存管理模块Gralloc为客户操作系统分配一块共享内存子区域,向客户操作系统返回共享内存子区域的索引值;

第二处理模块403,用于在客户操作系统中,通过模拟处理器QEMU将索引值对应的共享内存子区域映射至客户操作系统后,将映射子区域的地址返回至软件。

可选地,申请模块401,用于在客户操作系统中,在监测到软件需要共享内存时,向主操作系统发送共享内存申请。

可选地,软件为需要调用中央处理器直接访问内存的软件。

有益效果:

本申请实施例中在客户操作系统中,在监测到软件需要共享内存时,向主操作系统申请共享内存;在主操作系统中,通过Gralloc为客户操作系统分配一块共享内存子区域,向客户操作系统返回共享内存子区域的索引值;在客户操作系统中,通过QEMU将索引值对应的共享内存子区域映射至客户操作系统后,将映射子区域的地址返回至软件,实现了多操作系统对共享内存的访问。

再一方面,本申请实施例还提供了一种电子设备,参见图5,电子设备包括:

存储器501,一个或多个处理器502;存储器与处理器通过通信总线相连;处理器被配置为执行存储器中的指令;所述存储介质中存储有用于执行上述的任一项所述的用于多操作系统的内存访问方法中各个步骤的指令。

再一方面,本申请实施例还提供了一种与电子设备结合使用的计算机程序产品,所述计算机程序产品包括内嵌于计算机可读的存储介质中的计算机程序,所述计算机程序包括用于使所述电子设备执行上述的任一项所述的用于多操作系统的内存访问方法中各个步骤的指令。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1