内存共享访问方法及电子设备与流程

文档序号:11250812阅读:1165来源:国知局
内存共享访问方法及电子设备与流程

本公开涉及一种内存共享访问方法及电子设备。



背景技术:

容器的安全隔离性是容器技术的一个关键技术指标,在容器内存安全隔离的基础上,需要在容器之间实现安全的内存共享,以便支持容器的一系列上层应用,如基于共享内存的高速通信等。



技术实现要素:

本公开的一个方面提供了一种内存共享访问方法,应用于电子设备,所述电子设备包括存储器件,所述电子设备上能够运行至少一个虚拟空间,所述虚拟空间对应物理存储区域,所述物理存储区域为存储器件的一部分,所述物理存储区域之间相互独立,所述方法包括:获取第一虚拟空间的访问请求,基于所述访问请求获取所述第二虚拟空间的共享状态,所述共享状态用于标识所述第二虚拟空间对应的物理存储区域是否允许共享,获取所述内存的访问权限,所述访问权限用于标识第一虚拟空间能否访问所述内存,以及基于所述共享状态及访问权限,生成访问操作。

可选地,所述虚拟空间还对应数据结构,所述数据结构包括第一识别信息,用于关联所述虚拟空间,所述共享状态记录于所述数据结构中,所述获取所述第二虚拟空间的共享状态包括:获取第二识别信息,所述第二识别信息与所述第一识别信息相关联,用于标识所述内存属于第二虚拟空间对应的物理存储区域,基于第二识别信息,获取带有第一识别信息的数据结构,以及从带有第一识别信息的数据结构中获取所述第二虚拟空间的共享状态。

可选地,所述获取第一虚拟空间的访问请求包括获取第一虚拟空间通过映射表发起的访问请求,所述映射表包括映射表项,所述映射表项对应所述内存,所述获取第二识别信息包括从所述映射表项中获取第二识别信息,所述获取所述内存的访问权限包括从所述映射表项中获取所述内存的访问权限。

可选地,在所述获取第一虚拟空间的访问请求之前,所述方法还包括:获取第二虚拟空间的共享请求,将所述内存映射到所述映射表中,获得所述内存对应的映射表项,基于第二虚拟空间对应的数据结构中的第一识别信息,在所述内存对应的映射表项中设置第二识别信息,在所述内存对应的映射表项中设置访问权限,以及在第二虚拟空间对应的数据结构中设置共享状态。

可选地,在获取第二虚拟空间的共享请求之后,所述方法还包括:判断所述内存是否已存在映射,若已存在映射,则获取映射表项中的第二识别信息,基于第二识别信息,判断所述内存是否属于第二虚拟空间对应的物理存储区域,以及若所述内存不属于第二虚拟空间对应的物理存储区域,则禁止第二虚拟空间共享所述内存。

本公开的另一个方面提供了一种电子设备,包括存储器件,所述电子设备上能够运行至少一个虚拟空间,所述虚拟空间对应物理存储区域,所述物理存储区域为存储器件的一部分,所述物理存储区域之间相互独立,所述电子设备还包括:第一获取模块,用于获取第一虚拟空间的访问请求,基于所述访问请求获取所述第二虚拟空间的共享状态,所述共享状态用于标识所述第二虚拟实体对应的物理存储区域是否允许共享,第二获取模块,用于获取所述内存的访问权限,所述访问权限用于标识第一虚拟空间能否访问所述内存,以及访问模块,用于基于所述共享状态及访问权限,生成访问操作。

可选地,所述虚拟空间还对应数据结构,所述数据结构包括第一识别信息,用于关联所述虚拟空间,所述共享状态记录于所述数据结构中,所述第一获取模块包括:第三获取模块,用于获取第二识别信息,所述第二识别信息与所述第一识别信息相关联,用于标识所述内存属于第二虚拟空间对应的物理存储区域,第四获取模块,用于基于第二识别信息,获取带有第一识别信息的数据结构,以及第五获取模块,用于从带有第一识别信息的数据结构中获取所述第二虚拟空间的共享状态。

可选地,所述获取第一虚拟空间的访问请求包括获取第一虚拟空间通过映射表发起的访问请求,所述映射表包括映射表项,所述映射表项对应所述内存,所述获取第二识别信息包括从所述映射表项中获取第二识别信息,所述获取所述内存的访问权限包括从所述映射表项中获取所述内存的访问权限。

可选地,所述电子设备还包括:第六获取模块,用于在所述获取第一虚拟空间的访问请求之前,获取所述第二虚拟实体空间的共享请求,映射模块,用于将所述内存映射到所述映射表中,获得所述内存对应的映射表项,第一设置模块,用于基于第二虚拟空间对应的数据结构中的第一识别信息,在所述内存对应的映射表项中设置第二识别信息,第二设置模块,用于在所述内存对应的映射表项中设置访问权限,以及第三设置模块,用于在第二虚拟空间对应的数据结构中设置共享状态。

可选地,所述电子设备还包括:第一判断模块,用于在获取所述第二虚拟实体空间的共享请求之后,判断所述内存是否已存在映射,第七获取模块,用于在已存在映射的情况下,获取映射表项中的第二识别信息,第二判断模块,用于基于第二识别信息,判断所述内存是否属于第二虚拟空间对应的物理存储区域,以及禁止模块,用于在所述内存不属于第二虚拟空间对应的物理存储区域的情况下,禁止第二虚拟空间共享所述内存。

附图说明

为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:

图1示意性示出了根据本公开的实施例的内存共享访问的应用场景;

图2示意性示出了根据本公开的实施例的内存共享访问方法的流程图;

图3示意性示出了根据本公开的实施例的获取所述第二虚拟空间的共享状态的方法流程图;

图4示意性示出了根据本公开实施例的内存共享访问的示意图;

图5示意性示出了根据本公开实施例的内存共享访问方法的流程图;

图6示意性示出了根据本公开的实施例的内存共享的方法流程图;

图7示意性示出了根据本公开的实施例的内存共享的方法流程图;

图8示意性示出了根据本公开的实施例的虚拟空间创建的方法流程图;

图9示意性示出了根据本公开的实施例的电子设备的结构框图;

图10示意性示出了根据本公开的实施例的第一获取模块的结构框图;

图11示意性示出了根据本公开的实施例的电子设备的结构框图;以及

图12示意性示出了根据本公开的实施例的电子设备的结构框图。

具体实施方式

以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。

在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。这里使用的词语“一”、“一个(种)”和“该”等也应包括“多个”、“多种”的意思,除非上下文另外明确指出。此外,在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。

在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。

附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。

因此,本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。在本公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(hdd);光存储装置,如光盘(cd-rom);存储器,如随机存取存储器(ram)或闪存;和/或有线/无线通信链路。

图1示意性示出了根据本公开的实施例的内存共享访问的应用场景。

如图1所示,在一电子设备上,包括有存储器件100。该电子设备运行了三个虚拟空间,即第一虚拟空间10、第二虚拟空间20和第三虚拟空间30。第一虚拟空间10对应物理存储区域111,第二虚拟空间20对应物理存储区域121和122,第三虚拟空间30对应物理存储区域131。物理存储区域111、121、122或131为存储器件100的一部分,并且物理存储区域111、121、122、131之间相互独立。

根据本公开的实施例,在未开启共享的情况下,虚拟空间仅能访问与之相对应的物理存储区域,例如,第一虚拟空间10允许访问物理存储区域111,而不能访问物理存储区域111以外的其他区域。然而,在一些情况下,某个虚拟空间希望共享与之对应的物理存储区域的一部分给某些特定的其他虚拟空间。例如,如图1所示,第二虚拟空间20希望将物理存储区域122共享给第一虚拟空间10,同时,又不希望第三虚拟空间30访问物理存储区域121或122。

基于上述内容,本发明提供了一种内存共享访问方法及电子设备。该内存共享访问方法应用于电子设备,所述电子设备包括存储器件,所述电子设备上能够运行至少一个虚拟空间,所述虚拟空间对应物理存储区域,所述物理存储区域为存储器件的一部分,所述物理存储区域之间相互独立。

图2示意性示出了根据本公开的实施例的内存共享访问方法的流程图。

如图2所示,该方法包括,在操作s201,获取第一虚拟空间的访问请求,基于所述访问请求获取所述第二虚拟空间的共享状态。

在操作s202,获取所述内存的访问权限,所述访问权限用于标识第一虚拟空间能否访问所述内存。

然后,在操作s203,基于所述共享状态及访问权限,生成访问操作。

该方法允许特定虚拟空间访问自己的物理存储区域。

在操作s201,获取第一虚拟空间的访问请求,基于所述访问请求获取所述第二虚拟空间的共享状态,所述共享状态用于标识所述第二虚拟空间对应的物理存储区域是否允许共享。

根据本公开实施例,所述虚拟空间还对应数据结构,所述数据结构包括第一识别信息,用于关联所述虚拟空间,所述共享状态记录于所述数据结构中。

下面结合图3和图4对获取所述第二虚拟空间的共享状态进行描述。

图3示意性示出了根据本公开的实施例的获取所述第二虚拟空间的共享状态的方法流程图。

图4示意性示出了根据本公开实施例的内存共享访问的示意图。

如图3所示,该方法包括,在操作s301,获取第二识别信息。

然后,在操作s302,基于第二识别信息,获取带有第一识别信息的数据结构。

在操作s303,从带有第一识别信息的数据结构中获取所述第二虚拟空间的共享状态。

该方法通过与虚拟空间对应的数据结构,以及在数据结构中设置的共享状态,在访问内存时,可方便地找到对应的数据结构,并获得共享状态。

具体地,在操作s301,获取第二识别信息,所述第二识别信息与所述第一识别信息相关联,用于标识所述内存属于第二虚拟空间对应的物理存储区域。

参考图4,第二虚拟空间20对应数据结构420,数据结构420包括第一识别信息421,用于关联所述虚拟空间,以及共享状态422。

根据本公开实施例,获取第一虚拟空间的访问请求包括获取第一虚拟空间通过映射表发起的访问请求,所述映射表包括映射表项,所述映射表项对应所述内存,所述获取第二识别信息包括从所述映射表项中获取第二识别信息。

参考图4,第一虚拟空间10通过映射表400访问内存,内存对应于映射表项401,映射表项401包括第二识别信息401b。

在映射表项中设置第二识别信息,可以将所述内存准确地与第二虚拟空间及其数据结构对应,共享访问管理更加精确。

然后,在操作s302,基于第二识别信息,获取带有第一识别信息的数据结构。

根据本公开实施例,第二识别信息与数据结构中的第一识别信息相关联,因此,基于第二识别信息,可以获取带有第一识别信息的数据结构。参考图4,基于第二识别信息401b,可以获取带有第一识别信息421的数据结构420,该数据结构对应的虚拟空间,与内存所属物理存储区域对应的虚拟空间一致,即第二虚拟空间20。

在操作s303,从带有第一识别信息的数据结构中获取所述第二虚拟空间的共享状态。参考图4,在数据结构420中获取共享状态422。

返回参考图2,在操作s202,获取所述内存的访问权限,所述访问权限用于标识第一虚拟空间能否访问所述内存。

根据本公开实施例,映射表项中还记载了访问权限,因此,可以从映射表项中获取所述内存的访问权限。参考图4,可以从映射表项401中获取访问权限401a。

访问权限用于标识第一虚拟空间能否访问所述内存。由于映射表项空间有限,本公开实施例还提供了一种访问权限标识方法。可在访问权限标识区域的各二进制位,按照虚拟空间的序列,一个二进制位对应一个虚拟空间的访问权限。例如访问权限标识区域记录了“10010”,假设1表示允许访问,0表示禁止访问,那么“10010”表示允许编号为1,和4的虚拟空间访问该内存,同时,禁止编号为2、3和5的虚拟空间访问。该方法节省了存储空间。

然后,在操作s203,基于所述共享状态及访问权限,生成访问操作。

根据本公开实施例,在共享状态表示所述第二虚拟空间对应的物理存储区域允许共享,并且,访问权限表示第一虚拟空间能够访问所述内存的情况下,允许第一虚拟空间访问该内存,否则禁止访问。

特别地,根据本公开实施例,在获取共享状态时,根据获取的第二识别信息,判断所述内存属于第二虚拟空间对应的物理存储区域,若第二虚拟空间与第一虚拟空间为同一虚拟空间,即,将要访问的内存属于第一虚拟空间对应的物理存储区域,则无需继续获取共享状态以及访问权限,允许该次访问。

基于上述过程,图5给出了完整的内存访问流程图。

图5示意性示出了根据本公开实施例的内存共享访问方法的流程图。

如图5所示,该方法包括,在操作s501,获取第一虚拟空间的访问请求。

在操作s502,通过映射表,查询待访问内存对应的映射表项。

在操作s503,从该映射表项中读取第二识别信息,与第一虚拟空间对应的数据结构中的第一识别信息比较。

在操作s504,判断第二识别信息与第一识别信息是否符合对应关系,即,将要访问的内存属于第一虚拟空间对应的物理存储区域。若符合,执行操作s505,允许该次访问,流程结束。

若不符合,即第二虚拟空间与第一虚拟空间为不同的虚拟空间,执行操作s506,基于第二识别信息,查询对应的数据结构。

在操作s507,从该数据结构中获取共享状态,判断第二虚拟空间是否允许共享。若不允许,则执行操作s508,禁止访问,流程结束。

若允许,则执行操作s509,从映射表中读取访问权限。

在操作s510,根据访问权限,判断该内存是否允许第一虚拟空间访问,若不允许,执行操作s508,禁止访问。若允许,执行操作s505,允许访问。流程结束。

根据本公开实施例,在第一虚拟空间访问内存前,还包括第二虚拟空间共享内存的过程。

图6示意性示出了根据本公开的实施例的内存共享的方法流程图。

如图6所示,该方法包括,在操作s601,获取第二虚拟空间的共享请求。

在操作s602,将所述内存映射到所述映射表中,获得所述内存对应的映射表项。

在操作s603,基于第二虚拟空间对应的数据结构中的第一识别信息,在所述内存对应的映射表项中设置第二识别信息。

在操作s604,在所述内存对应的映射表项中设置访问权限。

在操作s605,在第二虚拟空间对应的数据结构中设置共享状态。

根据本公开实施例,特别地,在请求被共享的内存已经被映射过的情况下,需要判断该内存是否属于请求共享的虚拟空间对应的物理存储区域,以确定该虚拟空间是否有权对该内存的共享情况进行设置。

图7示意性示出了根据本公开的实施例的内存共享的方法流程图。

如图7所示,该方法包括,在操作s601之后,执行操作s701,判断所述内存是否已存在映射。若不存在映射,则执行如图6所述的方法。

若已存在映射,则执行s702,获取映射表项中的第二识别信息。

在操作s703,基于第二识别信息,判断所述内存是否属于第二虚拟空间对应的物理存储区域。若属于第二虚拟空间对应的物理存储区域,则跳转至操作s604,并继续执行如图6所述的操作。

若所述内存不属于第二虚拟空间对应的物理存储区域,则执行操作s704,禁止第二虚拟空间共享所述内存。

该方法仅允许虚拟空间共享与其对应的物理存储区域上的内存,避免虚拟空间修改其他虚拟空间对应的物理存储区域上的内存。

基于上文图2~图7所描述的内容,本公开实施例还提供了一种虚拟空间创建方法。

图8示意性示出了根据本公开的实施例的虚拟空间创建的方法流程图。

如图8所示,该方法包括,在操作s801,获取创建虚拟空间请求。

然后,在操作s802,生成第一识别信息。

在操作s803,分配数据结构,设置数据结构中的第一识别信息。

在操作s804,为虚拟空间分配物理存储区域。

在操作s805,在虚拟空间对应的数据结构中设置共享状态。

本公开实施例还提供了一种电子设备。

图9示意性示出了根据本公开的实施例的电子设备的结构框图。

如图9所示,电子设备900包括存储器件,所述电子设备上能够运行至少一个虚拟空间,所述虚拟空间对应物理存储区域,所述物理存储区域为存储器件的一部分,所述物理存储区域之间相互独立,电子设备900还包括第一获取模块910、第二获取模块920和访问模块930。

具体地,第一获取模块910,例如执行上文参考图2描述的操作s201,用于获取第一虚拟空间的访问请求,基于所述访问请求获取所述第二虚拟空间的共享状态,所述共享状态用于标识所述第二虚拟实体对应的物理存储区域是否允许共享。

第二获取模块920,例如执行上文参考图2描述的操作s202,用于获取所述内存的访问权限,所述访问权限用于标识第一虚拟空间能否访问所述内存。

访问模块930,例如执行上文参考图2描述的操作s203,用于基于所述共享状态及访问权限,生成访问操作。

根据本公开实施例,所述虚拟空间还对应数据结构,所述数据结构包括第一识别信息,用于关联所述虚拟空间,所述共享状态记录于所述数据结构中。

图10示意性示出了根据本公开的实施例的第一获取模块的结构框图。

如图10所示,第一获取模块910包括第三获取模块911、第四获取模块912和第五获取模块913。

第三获取模块911,例如执行上文参考图3描述的操作s301,用于获取第二识别信息,所述第二识别信息与所述第一识别信息相关联,用于标识所述内存属于第二虚拟空间对应的物理存储区域。

第四获取模块912,例如执行上文参考图3描述的操作s302,用于基于第二识别信息,获取带有第一识别信息的数据结构。

第五获取模块913,例如执行上文参考图3描述的操作s303,用于从带有第一识别信息的数据结构中获取所述第二虚拟空间的共享状态。

根据本公开实施例,所述获取第一虚拟空间的访问请求包括获取第一虚拟空间通过映射表发起的访问请求,所述映射表包括映射表项,所述映射表项对应所述内存,所述获取第二识别信息包括从所述映射表项中获取第二识别信息,所述获取所述内存的访问权限包括从所述映射表项中获取所述内存的访问权限。

图11示意性示出了根据本公开的实施例的电子设备的结构框图。

如图11所示,电子设备900还包括第六获取模块1110、映射模块1120、第一设置模块1130、第二设置模块1140和第三设置模块1150。

具体地,第六获取模块1110,例如执行上文参考图6描述的操作s601,用于在所述获取第一虚拟空间的访问请求之前,获取所述第二虚拟实体空间的共享请求。

映射模块1120,例如执行上文参考图6描述的操作s602,用于将所述内存映射到所述映射表中,获得所述内存对应的映射表项。

第一设置模块1130,例如执行上文参考图6描述的操作s603,用于基于第二虚拟空间对应的数据结构中的第一识别信息,在所述内存对应的映射表项中设置第二识别信息。

第二设置模块1140,例如执行上文参考图6描述的操作s604,用于在所述内存对应的映射表项中设置访问权限。

第三设置模块1150,例如执行上文参考图6描述的操作s605,用于在第二虚拟空间对应的数据结构中设置共享状态。

图12示意性示出了根据本公开的实施例的电子设备的结构框图。

如图12所示,电子设备900还包括第一判断模块1210、第七获取模块1220、第二判断模块1230和禁止模块1240。

具体地,第一判断模块1210,例如执行上文参考图7描述的操作s701,用于在获取所述第二虚拟实体空间的共享请求之后,判断所述内存是否已存在映射。

第七获取模块1220,例如执行上文参考图7描述的操作s702,用于在已存在映射的情况下,获取映射表项中的第二识别信息。

第二判断模块1230,例如执行上文参考图7描述的操作s703,用于基于第二识别信息,判断所述内存是否属于第二虚拟空间对应的物理存储区域。

禁止模块1240,例如执行上文参考图7描述的操作s704,用于在所述内存不属于第二虚拟空间对应的物理存储区域的情况下,禁止第二虚拟空间共享所述内存。

可以理解的是,第一获取模块910、第二获取模块920、访问模块930、第三获取模块911、第四获取模块912、第五获取模块913、第六获取模块1110、映射模块1120、第一设置模块1130、第二设置模块1140、第三设置模块1150、第一判断模块1210、第七获取模块1220、第二判断模块1230以及禁止模块1240可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本发明的实施例,第一获取模块910、第二获取模块920、访问模块930、第三获取模块911、第四获取模块912、第五获取模块913、第六获取模块1110、映射模块1120、第一设置模块1130、第二设置模块1140、第三设置模块1150、第一判断模块1210、第七获取模块1220、第二判断模块1230以及禁止模块1240中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以以对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式的适当组合来实现。或者,第一获取模块910、第二获取模块920、访问模块930、第三获取模块911、第四获取模块912、第五获取模块913、第六获取模块1110、映射模块1120、第一设置模块1130、第二设置模块1140、第三设置模块1150、第一判断模块1210、第七获取模块1220、第二判断模块1230以及禁止模块1240中的至少一个可以至少被部分地实现为计算机程序模块,当该程序被计算机运行时,可以执行相应模块的功能。

尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

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