用于管理共享存储器的方法和系统.pdf

上传人:r7 文档编号:1635954 上传时间:2018-06-30 格式:PDF 页数:22 大小:1.41MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410169724.9

申请日:

2014.04.25

公开号:

CN104679662A

公开日:

2015.06.03

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 12/02申请公布日:20150603|||实质审查的生效IPC(主分类):G06F 12/02申请日:20140425|||公开

IPC分类号:

G06F12/02

主分类号:

G06F12/02

申请人:

国际商业机器公司

发明人:

R·L.·阿恩迪特

地址:

美国纽约

优先权:

13/870,103 2013.04.25 US

专利代理机构:

中国国际贸易促进委员会专利商标事务所11038

代理人:

吴信刚

PDF下载: PDF下载
内容摘要

本发明涉及用于管理共享存储器的方法和系统。一种用于管理共享存储器的技术包括:链接由第一共享应用和第二共享应用使用的地址转换数据结构。第一共享应用由第一操作系统(OS)管理,并且第二共享应用由容纳关联的虚拟对象的第二OS管理。基于该链接,第一共享应用和第二共享应用的虚拟地址被绑定到第二OS分派给关联的虚拟对象的一组可改变的物理地址,从而由共享应用所共享的关联的虚拟对象可由第二OS在没有第一OS的许可的情况下调页。

权利要求书

权利要求书
1.  一种用于管理共享存储器的方法,包括:
链接由第一共享应用和第二共享应用使用的地址转换数据结构, 其中第一共享应用由第一操作系统(OS)管理,并且第二共享应用由容 纳关联的虚拟对象的第二OS管理;以及
基于该链接,把第一共享应用和第二共享应用的虚拟地址绑定到 第二OS分派给关联的虚拟对象的一组可改变的物理地址,从而由共 享应用所共享的关联的虚拟对象可由第二OS在没有第一OS的许可 的情况下调页。

2.  如权利要求1所述的方法,其中第一OS和第二OS在同一数 据处理系统上执行。

3.  如权利要求1所述的方法,其中第一OS和第二OS在不同数 据处理系统上执行。

4.  如权利要求1所述的方法,其中单个管理程序保持用于第一 OS和第二OS两者的地址转换数据结构。

5.  如权利要求1所述的方法,其中不同管理程序保持用于第一 OS和第二OS的地址转换数据结构。

6.  如权利要求1所述的方法,其中所述地址转换数据结构包括提 供客户真实地址的客户树转换数据结构和提供物理地址的管理程序树 转换数据结构。

7.  如权利要求1所述的方法,其中所述链接由交叉分区描述符提 供。

8.  一种数据处理系统,包括:
存储器;和
耦接到该存储器的处理器,其中所述处理器被构造为:
链接由第一共享应用和第二共享应用使用的地址转换数据结 构,其中第一共享应用由第一操作系统(OS)管理,并且第二共享应用 由容纳关联的虚拟对象的第二OS管理;以及
基于该链接,把第一共享应用和第二共享应用的虚拟地址绑 定到第二OS分派给关联的虚拟对象的一组可改变的物理地址,从而 由共享应用所共享的关联的虚拟对象可由第二OS在没有第一OS的 许可的情况下调页。

9.  如权利要求8所述的数据处理系统,其中第一OS和第二OS 在同一数据处理系统上执行。

10.  如权利要求8所述的数据处理系统,其中第一OS和第二OS 在不同数据处理系统上执行。

11.  如权利要求8所述的数据处理系统,其中单个管理程序保持 用于第一OS和第二OS两者的地址转换数据结构。

12.  如权利要求8所述的数据处理系统,其中不同管理程序保持 用于第一OS和第二OS的地址转换数据结构。

13.  如权利要求8所述的数据处理系统,其中所述地址转换数据 结构包括提供客户真实地址的客户树转换数据结构和提供物理地址的 管理程序树转换数据结构。

14.  如权利要求8所述的数据处理系统,其中所述链接由交叉分 区描述符提供。

说明书

说明书用于管理共享存储器的方法和系统
技术领域
本公开一般地涉及数据处理环境,更具体地讲,涉及一种用于数 据处理环境的交叉分区共享存储器挂接(attach)。
背景技术
当一个进程(其具有其自己的地址空间和唯一的用户空间)需要与 另一进程(其具有其自己的地址空间和唯一的用户空间)通信时,该进 程可向内核发送请求以分配用于进程间通信(IPC)的存储器空间。进 程也可与另一进程经由这两个进程都可访问的文件进行通信。然而, 要求进程打开和读/写文件以与另一进程通信,通常需要多个输入/输 出(I/O)操作,所述多个I/O操作可能消耗不希望的量的时间。
在中,也存在允许进程与同一数据处理系统中或同一网 络中的不同数据处理系统中的其它进程通信的各种IPC。例如,“管 道(pipe)”提供一种进程通过交换消息来彼此通信的方式。作为另 一例子,“命名管道”提供一种在不同数据处理系统上运行的进程通过 网络进行通信的方式。作为另一例子,进程能够在共享存储器中交换 值。在这种情况下,一个进程指定其它进程能够访问的一部分存储 器。作为另一例子,进程可使用消息队列与其它进程通信,消息队列 是进程存储或取回数据的存储器段的结构化的有序列表。另外,进程 也可使用信号量与其它进程通信,信号量为访问同一资源的进程提供 同步机制。通常,信号量简单地协调对共享资源的访问。也就是说, 并不利用信号量在进程之间传递数据。
UNIX共享存储器挂接(SHMAT)命令或函数也可被用于把识别 的共享存储器段挂接到主调进程的地址空间,从而一个进程可与另一 进程通信。传统的SHMAT允许在OS下运行的进程同时执行针对相 同存储器位置的字节级别的细粒度的加载(load)和/或存储 (store)访问。也就是说,传统的SHMAT局限于在单个OS的环境 内操作。已知被构造为使对象进入一个处理器的本地存储器空间中的 传统的共享/集群文件系统,其中该处理器能够对该对象进行更新。 当该处理器完成更新该对象时,整个对象随后被移动到共享处理器的 本地存储器。
在第一传统系统中,数据总是被返回到它在非易失性文件系统存 储器(例如,盘)中的原始位置。在第二传统系统中,数据可被直接从 第一用户的本地存储器复制到第二用户的本地存储器。在第二传统系 统中,访问虚拟对象包括:把对象固定(pin)在存储器中,在发送 者和接收者上都启动输入/输出(I/O)操作(通常包括直接存储器存取 (DMA)),并且在共享处理器能够启动对对象的更新之前处理“操作完 成”中断。
第三传统系统实质上是虚拟化对称多处理器(SMP)机器的集群版 本。在第三传统系统中,每个机器能够在物理上对整个系统的存储器 进行寻址。在这种情况下,在系统上运行的OS之间划分整个系统存 储器,并且通常实现防止一个OS访问分派给另一OS的存储器的机 制。尽管能够绕开所述机制,但与虚拟地址相对,在传统上,该绕开 提供操作系统“A”对分派给操作系统“B”的物理地址的访问。通常, 在虚拟存储器OS中执行的应用不使用物理地址。也就是说,应用访 问虚拟对象内的偏移,该偏移是由虚拟地址(VA)代表的。通常,仅 本地OS理解由应用产生的VA和底层的机器物理地址之间的不断改 变的关系。这种关系的至少一个子集的当前快照通常由本地OS在本 地机器的地址转换表中捕捉。
发明内容
一种用于管理共享存储器的技术,包括:链接由第一共享应用和 第二共享应用使用的地址转换数据结构(例如,表)。第一共享应用由 第一操作系统(OS)管理,并且第二共享应用由容纳(host)关联的虚 拟对象的第二OS管理。基于该链接,第一共享应用和第二共享应用 的虚拟地址被绑定到第二OS分派给关联的虚拟对象的物理地址的可 变集合,从而由共享应用所共享的关联的虚拟对象可由第二OS在没 有第一OS的许可的情况下调页。
以上发明内容包含细节的简化、归纳和省略,并且不应视为要求 保护的主题的全面描述,而是旨在提供与之关联的一些功能的简要概 述。通过检查下面的附图和详细的书面描述,对于本领域技术人员而 言,要求保护的主题的其它系统、方法、功能、特征和优点将会是清 楚的或者将会变得清楚。
在下面的详细的书面描述中,本发明的以上以及另外的目的、特 征和优点将会变得清楚。
附图说明
将结合附图阅读说明性实施例的描述,其中:
图1是根据本公开的包括被构造为实现交叉分区共享存储器挂接 (XSHMAT)的数据处理系统的示例性数据处理系统环境的相关部分的 示图;
图2是使用虚拟通信装置在两个操作系统镜像之间执行传统 UNIX通信的传统数据处理系统的相关部分的示图;
图3是根据本公开的实施例被构造为执行XSHMAT的数据处理 系统的相关部分的示图;
图4是根据本公开的另一实施例被构造为执行XSHMAT的数据 处理系统的相关部分的示图,其中最右边的操作系统(OS)镜像保持在 不同OS镜像中执行的应用之间共享的虚拟对象;
图5是根据本公开的另一实施例被构造为执行XSHMAT的数据 处理系统的相关部分的示图,其中最左边的OS镜像保持在不同OS 镜像中执行的应用之间共享的虚拟对象;
图6是根据本公开的另一实施例被构造为执行XSHMAT的数据 处理环境的相关部分的示图,其中最右边的OS镜像保持在不同数据 处理系统上的不同OS镜像中执行的应用之间共享的虚拟对象;
图7是根据本公开的另一实施例被构造为执行XSHMAT的数据 处理环境的相关部分的示图,其中最左边的OS镜像保持在不同数据 处理系统上的不同OS镜像中执行的应用之间共享的虚拟对象;以及
图8是根据本公开的一个实施例的用于共享存储器的示例性处理 的流程图。
具体实施方式
说明性实施例提供一种用于执行交叉分区共享存储器挂接 (XSHMAT)的方法、数据处理系统和计算机程序产品(实施在计算机 可读存储装置上)。
在本发明的示例性实施例的下面的详细描述中,足够详细地描述 可实施本发明的具体示例性实施例以使本领域技术人员能够实施本发 明,并且应该理解,可使用其它实施例,并且在不脱离本发明的精神 或范围的情况下可做出逻辑、架构、编程、机械、电气和其它变化。 下面的详细描述因此不应在限制性意义上理解,并且本发明的范围由 所附权利要求及其等同物定义。
应该理解,特定部件、装置和/或参数名称的使用仅是示例,而 非意图暗示对本发明的任何限制。本发明可因此利用用于非限制性地 在这里描述部件/装置/参数的不同命名法/术语实现。考虑到使用在这 里使用的每个术语的上下文,该术语应该被给予它的最广泛的解释。
根据本公开,公开一种交叉分区共享存储器挂接(XSHMAT)命令 /函数,其扩展传统UNIX SHMAT命令的语义,以在可包括许多互 连的数据处理系统的数据处理环境的所有操作系统(OS)镜像的所有进 程之间起作用。通常,传统的SHMAT命令局限于单个OS镜像的进 程之间共享存储器。在互连的数据处理系统的所有OS镜像的所有进 程之间共享存储器的传统方案要求共享的系统存储器被固定(即,共 享的系统存储器不被调页(page))。共享存储器的传统方案的固定 存储器要求提出了可伸缩性问题,因为共享进程的数量受到共享存储 器所需的固定物理存储器的限制。尽管在单个UNIX OS镜像中执行 的进程之间的共享存储器可利用SHMAT调页,但在不同OS镜像 (分区)中执行的进程之间的共享存储器不可利用SHMAT调页。
根据本公开的一方面,代表共享存储器的OS镜像的虚拟存储器 转换的各部分被链接,从而存储器访问可能出错并且存储器访问错误 能够被引导至创建共享存储器段(并且负责解决转换/页错误)的OS镜 像。传统的SHMAT把共享公共虚拟存储器的两个进程的虚拟地址 (VA)转换捆绑在一起,从而当这两个进程访问公共虚拟存储器时, 使用公共OS的地址转换表的公共部分进行访问。根据本公开,多个 不同OS的地址转换数据结构(例如,表)在虚拟机中被链接。多个不 同OS的地址转换表可按照许多方式在虚拟机中被链接。作为一个例 子,当两个或更多的共享OS在单个对称多处理器系统中执行时,不 同OS的管理程序页表树(HPTT)可经由交叉分区描述符(CPD)被链 接。在一个或多个实施例中,当共享OS在不同系统中运行时,不同 OS的HPTT可使用CPD用请求者代理和接收者代理(例如,二者都 以硬件实现)被链接。
根据本公开,公开了在数据处理系统(例如,系统)中 实现分布式共享存储器的技术,这些技术通常提供用于使不同OS使 用像UNIX SHMAT一样的接口共享存储器的更高效的方式。根据一 个实施例,公开了一种修改的SHMAT接口,其使用交叉分区描述 符(CPD)把虚拟地址(VA)从非主机OS(即,未容纳要共享的虚拟对象 的OS)映射到由容纳要共享的虚拟对象的OS保持的HPTT(和HPTT 内的共享存储器偏移)。CPD的使用允许OS使用共享存储器(即,访 问共享虚拟对象)而不必考虑调页。在这种情况下,主机OS处理VA 和物理地址之间的转换的任何改变。以这种方式,共享存储器的VA 保持不变。公开的技术的优点在于:存储器不必像在传统系统中那样 被固定或在分区之间来回复制(例如,使用直接存储器存取(DMA))。 通常,避免固定存储器以及在分区之间复制存储器提供了性能和可伸 缩性改进。
根据一个或多个方面,由共享应用使用(并且由容纳该共享应用 的OS管理)的地址转换数据结构(例如,表)被链接到容纳共享虚拟对 象的OS的地址转换数据结构(例如,表)。该链接便于应用的VA到 主机OS分派给虚拟对象的一组不断改变的物理地址的后期绑定。这 种后期绑定允许共享虚拟对象被主机OS调页,而无需未容纳该共享 虚拟对象的OS的许可。在这种情况下,OS不需要跟踪正被共享的 物理地址。然而,应该理解,当发生调页时,主机OS需要更新VA 到物理地址的映射。如前所述,传统方案具有性能缺点,因为存储器 必须被固定,需要在分区之间执行(来回地)执DMA,和/或需要在软 件级别的锁定。通常,公开的方案提供一种用于允许软件高效地共享 存储器的相对直接的技术。
在传统SHMAT情况下,本地OS允许两组或更多组的VA引用 同一虚拟对象。本地OS能够允许两组或更多组的VA引用同一虚拟 对象,因为本地OS负责把虚拟对象的至少一个子集放置在物理存储 器中并且创建地址转换表条目,所述地址转换表条目把由共享应用使 用的各种VA映射到当前存储虚拟对象的存储器中的物理地址。这种 存储器共享技术在共享应用在单个OS镜像下运行时工作得令人满 意,但在共享应用在不同OS镜像下运行时工作得不令人满意。如果 共享应用在不同OS镜像下运行,则传统的方案实现把虚拟对象复制 到共享应用的OS之一的存储器的共享/集群文件系统。该共享应用 随后处理虚拟对象,之后把虚拟对象复制到另一共享应用的存储器。
替代地,容纳多个应用的多个OS可在传统上设置它们的地址转 换表以把共享应用的每个VA映射到同一虚拟对象。用于允许多个 OS镜像中的多个应用共享单个虚拟对象的传统方案在所有OS镜像 之间使用公共物理地址空间。在这种情况下,每个OS随后必须合作 以创建把各VA映射到包括所述单个共享虚拟对象的物理地址的各地 址转换表条目。
在通常情况下,管理由应用产生的VA和底层的机器物理地址之 间的不断改变的关系所需的合作等级以及在虚拟对象被调页进入物理 存储器和从物理存储器调页离开时的虚拟对象的变化的子集(代表虚 拟对象的工作集合)已成为棘手的问题。传统的解决方案使整个共享 虚拟对象进入物理存储器中并且把虚拟对象“固定(pin)”在存储器 中,从而由应用产生的VA和底层的机器物理地址之间的关系不变。 尽管把虚拟对象固定在存储器中使得容易处理所需的合作,但固定虚 拟对象在共享虚拟对象变大并且变多时引入了伸缩问题,如此,该解 决方案仅能够在有限的情况下应用。
与传统的SHMAT相比,根据本公开构造的数据处理系统允许 在不同OS下运行的进程同时执行针对相同存储器位置的字节级别的 细粒度加载和/或存储访问,并且还扩展传统的SHMAT功能以跨多 个OS操作。根据本公开的一个或多个实施例,替代于把包括虚拟对 象的数据的物理地址放置在共享虚拟对象的地址转换表条目中,本地 OS把偏移量放置在共享虚拟对象中并且把指针放置到交叉页表描述 符。交叉页表描述符包括指向由容纳虚拟对象的OS镜像管理的页表 的指针和容纳共享应用的OS的虚拟地址空间中的共享虚拟对象的起 点的VA。在这种情况下,整个共享虚拟对象能够被映射在主机OS 的虚拟地址空间中的恒定VA处,主机OS管理把当前工作集合调页 到物理存储器中并且仅需要更新它自己的地址转换表,因为任何共享 应用通过由主机OS管理的转换表访问共享虚拟对象。在这种情况 下,解决了当共享虚拟对象变大并且变多时的伸缩问题,并且该解决 方案能够被应用于实际上无限数量的情况。
根据本公开的一个方面,由共享应用使用并且由容纳共享应用的 OS管理的地址转换表被链接到容纳虚拟对象的OS的地址转换表。 该链接便于应用的VA到主机OS分派给虚拟对象数据的一组不断改 变的物理地址的后期绑定。这种绑定允许共享虚拟对象由主机OS调 页而无需容纳共享应用的OS的许可。如上所述,交叉分区共享存储 器挂接(XSHMAT)借用传统的SHMAT语义。XSHMAT把分区“A” 进程“a”的有效(或虚拟)地址空间的一部分映射到分区“B”进程“b”的 有效(或虚拟)地址空间中。XSHMAT依赖于存储器管理单元(MMU) 转换机制的扩展以有益地从执行路径中去除管理程序。如上所述,在 分区(或进程)虚拟(或有效)地址空间下映射和/或连接和/或DMA了物 理存储器的传统解决方案产生了可伸缩性和/或虚拟化问题,所述可 伸缩性和/或虚拟化问题要求另外的数据复制和/或信道交换软件以管 理复杂的系统结构。
XSHMAT的语法可类似于SHMAT。例如,可使用下面的示例 性函数实现根据本公开的交叉分区共享存储器挂接功能:
void XSHMAT(int xshmid,const void*shmaddr,int xshmflg);
在以上情况下,XSHMAT设置交叉分区共享存储器挂接,其中 “xshmid”是识别登记的共享虚拟存储器对象的令牌,“*shmaddr”是 共享虚拟存储器对象要被映射到的共享进程的虚拟地址空间中的地 址,并且“xshmflg”是一组选项,诸如“read only(只读)”等。作为 另一例子,对交叉分区共享存储器地址空间进行解映射的XSHMDT 可被实现为:
int XSHMDT(const void*shmaddr);
作为另一例子,创建或获取交叉分区共享存储器地址空间的标识符 (ID)的XSHMGET可被实现为:
int XSHMGET(xkey_t xkey,int size,int xshmflg);
在以上情况下,“xkey_t xkey”是指定创建或与已有虚拟存储器对象 的连接的参数,并且“size”是虚拟存储器对象的大小。作为最后的例 子,控制交叉分区共享存储器地址空间的XSHMCTL可被实现为:
int XSHMCTL(int xshmid,int cmd,struct xshmid_ds*buf);
在以上情况下,“cmd”是指示对指定的共享虚拟存储器对象执行哪个 控制操作的令牌(诸如“改变访问保护设置”),并且“xshmid_ds*buf” 是指向与共享虚拟存储器对象关联的描述符结构的指针。
一旦交叉分区共享存储器地址空间被挂接到用户进程,可经加 载、存储或缓存注入复制(cache inject copy)操作传送数据。当分 区位于不同数据处理系统中时,从虚拟局域网(VLAN)交换机提供代 表分区之间的授权信道的cookie的任何技术应该便于实现公开的技 术。
例如,管理程序调用(例如,hcall())函数可被用于登记和撤销交 叉分区共享存储器。作为一个例子,可使用具有关联的信息(例如, 授权信道cookie、页对准开始虚拟地址、长度)并且返回“xshmid”的 示例性函数“H_REGISTER_XSHMEM”发起登记。作为另一例子, 可使用指定“xshmid”的示例性函数“H_RESCIND_XSHMEM”发起撤 销。进程可使用指定“xshmid”并且接收开始客户真实页地址和长度 的示例性函数“H_ATTACH_XSHMEM”挂接到创建的交叉分区。进 程可随后使用指定“xshmid”的示例性函数“H_DETACH_XSHMEM” 使它自己从交叉分区脱离。硬件可通过许多不同方式确定它正在处理 交叉分区描述符(CPD)。例如,树形结构页表可如下实现两种有效条 目:L=1,包括保护位/模式位并且指向转换的页;和L=0,指向另一 级别的转换。其它低次位可以是向硬件指示转换的级别的格式的 “decoration(装饰)”(例如,decoration:0b0000000000页表;6位PG 偏移0x1CPD;具有保留位)。根据本公开构造的CPD可包括:模式 位,例如有效位、本地/远程位和解析位(指示VA已被解析为物理地 址);创建客户虚拟页编号;共享者许可/密钥;创建客户页表根的逻 辑真实地址;用于创建客户代理地址的主机页表根的物理地址;和软 件字段,该软件字段包括引用计数(用于确定何时所有进程不再使用 虚拟对象)、锁定位和兄弟(sibling)指针。
共享转换路径(页表树)中的错误可包括:共享客户页表错误,例 如针对共享客户OS的标准数据存储中断(DSI);共享主机页表错 误,例如针对主机的标准管理程序DSI(HDSI);交叉分区描述符错 误,例如具有新DSI状态寄存器(DSISR)位的针对共享客户OS的 DSI;当挂接的OS执行H_DETACH_XSHMEM时的撤销存储器错 误;当OS执行管理程序调用以分配代理信道等时的远程未解析错误; 创建客户/主机页表错误,例如针对共享的DSI;在针对创建客户的分区 间消息之后具有新DSISR位的客户OS;以及当发送回共享客户的分区 间消息指示错误被校正并且要求重新启动时修改页以校正错误的OS。
通常,实现XSHMAT功能提供无限数量的分区间通信管道并且 对于“super sockets(超级套接字)”而言是理想的。实现XSHMAT 功能还从通信执行路径去除了管理程序。XSHMAT功能建立在对存 储器管理单元(MMU)和错误处理支持的逻辑扩展上。此外, XSHMAT功能随着核的数量而伸缩并且节省与独立加速器通信可能 需要的带宽。
参照图1,示出包括数据处理系统110的示例性数据处理环境 100,数据处理系统110根据本公开的一个或多个实施例被构造为执 行交叉分区共享存储器挂接(XSHMAT)。数据处理系统110可采用各 种形式,诸如工作站、膝上型计算机系统、笔记本计算机系统、桌上 型计算机系统或服务器和/或其集群。数据处理系统110包括一个或 多个处理器102(其可包括用于执行程序代码的一个或多个处理器 核),所述一个或多个处理器102耦接到数据存储子系统104、可选 的显示器106、一个或多个输入装置108和网络适配器109。数据存 储子系统104可包括例如适合于应用的量的各种存储器(例如,动态 随机存取存储器(DRAM)、静态RAM(SRAM)和只读存储器(ROM)) 和/或一个或多个大容量存储装置(诸如,磁盘驱动器或光盘驱动器)。
数据存储子系统104包括用于数据处理系统110的一个或多个操 作系统(OS)114。数据存储子系统104还包括应用程序,诸如浏览器 112(其可以可选地包括定制的插件以支持各种客户机应用)、用于管 理由不同OS镜像实例化的一个或多个虚拟机(VM)的管理程序(或虚 拟机监视器(VMM))116和其它应用(例如,文字处理应用、演讲应用 和电子邮件应用)118。
显示器106可以是例如阴极射线管(CRT)或液晶显示器(LCD)。 数据处理系统110的输入装置108可包括例如鼠标、键盘、触觉装置 和/或触摸屏。网络适配器109支持数据处理系统110使用一个或多 个通信协议(诸如,802.x、HTTP、简单邮件传输协议(SMTP)等)与一 个或多个有线和/或无线网络的通信。数据处理系统110被示出为经 由一个或多个有线或无线网络(诸如,互联网122)耦接到向数据处理 系统110的用户提供感兴趣的信息的各种文件服务器124和各种网页 服务器126。数据处理环境100还包括以与数据处理系统110相似的 方式构造的一个或多个数据处理系统150。通常,数据处理系统150 代表相对于数据处理系统110位于远处并且可执行经由根据本公开构 造的XSHMAT链接到在数据处理系统110上执行的一个或多个OS 镜像的OS镜像的数据处理系统。
本领域普通技术人员将会理解,在图1中描述的硬件部件和基本 结构可以改变。数据处理系统110内的说明性部件不是要穷举,而是 代表性地突出可用于实现本发明的部件。例如,除描述的硬件之外或 者替代于描述的硬件,可使用其它装置/部件。描述的例子并不意图 暗示针对当前描述的实施例的架构或其它限制。
参照图2,示出实现管理程序216的传统数据处理系统200的相 关部分,管理程序216便于与OS镜像250和260关联的各应用之间 的数据共享。如图中所示,OS镜像250包括内核201、用户应用 202(其包括消息队列204)、虚拟存储器缓冲器206和装置驱动程序 208(其包括固定存储器缓冲器210)。类似地,OS镜像260包括内核 231、用户应用232(其包括消息队列234)、虚拟存储器缓冲器236和 装置驱动程序238(其包括固定存储器缓冲器240)。具体地讲,当用 户应用202具有要与用户应用232共享的数据时,用户应用202把该 数据存储在与用户应用202关联的消息队列204中并且向内核201发 送请求以发起向用户应用232的数据传送。内核201把该数据从消息 队列204复制到虚拟存储器缓冲器206并且启动装置驱动程序208把 该数据从虚拟存储器缓冲器206复制到固定存储器缓冲器210。
为了把数据传送到OS镜像250,装置驱动程序208向管理程序 216发送请求。响应于来自装置驱动程序208的请求,管理程序216 开始把数据复制到装置驱动程序238的固定存储器缓冲器240。为了 使用户应用232可访问该数据,装置驱动程序238把数据复制到用户 应用232的消息队列234。应该理解,参照图2描述的数据共享过程 要求:把要传送的数据固定在存储器中;多次复制操作(在这种情况 下,四次复制操作);管理程序介入以在与不同OS镜像关联的用户 应用之间共享数据。
参照图3,示出使用XSHMAT功能以方便与OS镜像350和 360关联的各应用(或应用的进程)之间的数据共享的数据处理系统 300的相关部分。应该理解,尽管管理程序116被用于最初设置被用 于在OS镜像350和360之间共享数据的数据结构(例如,管理程序 页表树(HPTT)、客户页表树(GPTT)和交叉分区描述符(CPD),参见 例如图4),但管理程序116未参与在OS镜像350和360之间的数据 的实际共享。如图中所示,OS镜像350包括内核301和用户应用 302(其包括消息队列304)。类似地,OS镜像360包括内核331和用 户应用332(其包括消息队列334)。
具体地讲,当用户应用302具有要与用户应用332共享的数据 时,用户应用302把该数据存储在与用户应用302关联的消息队列 304中并且向内核301发送请求以发起与用户应用332共享数据 (即,发送创建交叉分区连接的请求)。内核301随后创建交叉分区连 接并且把数据从消息队列304复制到虚拟存储器缓冲器340,根据本 公开,用户应用332可访问虚拟存储器缓冲器340。用户应用332能 够随后通过挂接到该交叉分区连接而连接到虚拟存储器缓冲器340以 访问所述数据。具体地讲,用户应用332可向内核331发送请求以把 虚拟存储器缓冲器340中的数据复制到用户应用332可访问的消息队 列334。应该理解,参照图4描述的数据共享过程不需要把要共享的 数据固定在存储器中,减少了共享数据所需的复制操作的次数,并且 不需要管理程序介入以在与不同OS镜像关联的用户应用之间传送数 据。
参照图4,示出使用根据本公开的交叉分区共享存储器挂接以方 便与OS镜像402和432关联的各应用(或应用的进程)之间的数据共 享的数据处理系统400的相关部分。如图中所示,OS镜像432保持 要与同OS镜像402关联的应用共享的虚拟对象(VO)401。应该理 解,尽管管理程序116被用于最初设置被用于在OS镜像402和432 之间共享数据的数据结构(例如,HPTT406和436、GPTT404和 434以及CPD420),但管理程序116未参与在OS镜像402和432之 间的数据的实际传送。
如图中所示,OS镜像402包括GPTT404并且OS镜像432包 括GPTT434。尽管GPTT404和434被示出为分别被包括在OS镜 像402和432内,但应该理解,GPTT404和434仅需要被存储在 OS镜像402和432可访问的位置。类似地,尽管HPTT406和436 以及CPD420被示出为被包括在管理程序116内,但应该理解, HPTT406和436以及CPD420仅需要被存储在管理程序116可访问 并且受到保护而防止被OS镜像402和432修改的位置。在图4中, GPTT404被示出为(从图4中未示出的关联的应用)接收VA,VA需 要转换为物理地址(即,VO401的物理地址)并且与操作(例如,读访 问、写访问等)关联。
基于接收的VA,遍历GPTT404以提供指向HPTT406中的指 针。然后基于由GPTT404提供的指针,遍历HPTT406以提供指向 CPD420中的指针。CPD420提供指向GPTT434中的指针,GPTT 434提供指向HPTT436中的指针。假设未发生错误,HPTT436中 的条目(由GPTT434提供的指针所指向的条目)提供指向VO401的 指针。以这种方式,在OS镜像402中执行的应用能够访问由OS镜 像432保持的VO401,而不需要把共享数据固定在存储器中或者管 理程序的介入。
参照图5,示出实现根据本公开的XSHMAT功能以方便与OS 镜像402和432关联的各应用(或应用的进程)之间的数据共享的数据 处理系统500的相关部分。在图5中,OS镜像402保持要与同OS 镜像432关联的应用共享的VO501。GPTT434被示出为(从图5中 未示出的关联的应用)接收VA,VA需要转换为物理地址(即,VO 501的物理地址)。基于接收的VA,遍历GPTT434以提供指向 HPTT436中的指针。然后基于由GPTT434提供的指针,遍历 HPTT436以提供指向CPD420中的指针。CPD420提供指向GPTT 404中的指针,GPTT404提供指向HPTT406中的指针。
假设未发生错误,HPTT406中的条目(由GPTT404提供的指针 所指向的条目)提供指向VO501的指针。以这种方式,在OS镜像 432中执行的应用能够访问由OS镜像402保持的VO501,而不需要 把共享数据固定在存储器中或者管理程序的介入。应该理解,当OS 镜像的应用尝试访问由该OS镜像保持的VO时,在图4和5中描述 的过程不需要访问VO。也就是说,应用能够直接访问由关联的OS 镜像保持的VO。还应该理解,在图4和5中,OS镜像402和432 在单个数据处理系统(例如,图1的数据处理系统110)上执行。
参照图6,示出实现XSHMAT功能以方便与OS镜像602和 632关联的各应用(或应用的进程)之间的数据共享的数据处理环境 600的相关部分,OS镜像602和632可在不同硬件平台上执行。如 图中所示,OS镜像632保持要与同OS镜像602关联的应用共享的 虚拟对象(VO)601。应该理解,最初设置被用于在OS镜像602和 632之间共享数据的数据结构(例如,HPTT606和636、GPTT604 和634以及CPD620)的管理程序116未参与在OS镜像602和632 之间的共享数据的实际传送。在图6中,请求者代理630和响应者代 理640被以硬件实现以方便不同数据处理系统之间的通信。
如图中所示,OS镜像602包括GPTT604并且OS镜像632包 括GPTT634。尽管GPTT604和634被示出为分别包括在OS镜像 602和632内,但应该理解,GPTT604和634仅需要被存储在各OS 镜像602和632可访问的位置。类似地,尽管HPTT606和636以及 CPD620被示出为包括在各管理程序116中,但应该理解,HPTT 606和636以及CPD620仅需要被存储在各管理程序116可访问并且 受到保护以免被OS镜像602和632修改的位置。在图6中,GPTT 604被示出为(从图6中未示出的关联的应用)接收VA,VA需要转换 为物理地址(即,VO601的物理地址)。基于接收的VA,遍历GPTT 604以提供指向HPTT606中的指针。然后基于由GPTT604提供的 指针,遍历HPTT606以提供指向CPD620中的指针。CPD620提 供指向GPTT634中的指针(经由请求者代理630和响应者代理640 传送该指针),GPTT634提供指向HPTT636中的指针。假设未发生 错误,HPTT636中的条目(由GPTT634提供的指针所指向的条目) 提供指向VO601的指针。以这种方式,在OS镜像602中执行的应 用能够访问由在另一数据处理系统上执行的OS镜像632保持的VO 601,而不需要把共享数据固定在存储器中或者管理程序的介入。
参照图7,示出实现XSHMAT功能以方便与OS镜像602和 632关联的各应用(或应用的进程)之间的数据共享的数据处理环境 700的相关部分,OS镜像602和632可在不同硬件平台上执行。在 图7中,OS镜像602保持要与同OS镜像632关联的应用共享的 VO701。GPTT634被示出为(从图7中未示出的关联的应用)接收 VA,VA需要转换为物理地址(即,VO701的物理地址)。基于接收 的VA,遍历GPTT634以提供指向HPTT636中的指针。然后基于 由GPTT634提供的指针,遍历HPTT636以提供指向CPD622中 的指针。CPD622提供指向GPTT604中的指针(经由请求者代理632 和响应者代理642传送该指针),GPTT604提供指向HPTT606中的 指针。
假设未发生错误,HPTT606中的条目(由GPTT604提供的指针 所指向的条目)提供指向VO701的指针。以这种方式,在OS镜像 632中执行的应用能够访问由在另一数据处理系统中执行的OS镜像 602保持的VO701,而不需要把共享数据固定在存储器中或者管理 程序的介入。应该理解,当OS镜像的应用尝试访问由该OS镜像保 持的VO时,在图6和7中描述的过程不需要访问VO。也就是说, 应用能够直接访问由关联的OS镜像保持的VO。还应该理解,在图 6和7中,OS镜像602和632在不同数据处理系统上执行(例如,参 照图1,OS镜像602可在数据处理系统110上执行并且OS镜像632 可在数据处理系统150上执行)。
参照图8,示出用于在数据处理环境(例如,图1的数据处理环 境100)中实现XSHMAT功能的示例性处理800的流程图。为了帮助 理解,结合图1和4讨论处理800。例如,处理800的至少一部分可 由数据处理系统110的处理器102执行。在块802,处理800开始 (例如,当在OS镜像402中执行的第一应用想要访问可与在OS镜像 432中执行的第二应用共享的期望数据(例如,VO401)时),此时,处 理器102(利用VA)访问关联的第一客户数据结构(例如,GPTT404) 以检索用于关联的第一主机数据结构(例如,HPTT406)的指针。接 下来,在块804中,处理器102确定是否发生错误(例如,GPTT404 是否不包括VA的有效条目)。响应于在块804中发生错误,控制转 移到块810,在块810处理器102把中断提供给与OS镜像402关联 的内核。在块810之后,控制转移到块816,在块816处理800终 止。
响应于在块804中未发生错误,控制转移到块806,在块806, 处理器102访问第一主机数据结构以检索关于期望数据的位置的信息 (其可以是期望数据的物理地址或指向CPD的指针)。接下来,在块 808中,处理器102确定是否发生错误(例如,对于由GPTT404提供 的指针,HPTT406是否不包括有效条目)。响应于在块808中发生错 误,控制转移到块810,然后转移到块816。响应于在块808中未发 生错误,控制转移到块812,在块812,处理器102确定由第一主机 数据结构提供的指针是否是CPD指针。响应于在块812中该指针不 是CPD指针,控制转移到块814,在块814,处理器102把OS镜像 402的本地分区数据返回到关联的第一应用,然后控制转移到块 816。
响应于在块812中该指针是CPD指针,控制转移到块818,在 块818,处理器102使用由第一主机数据结构提供的CPD指针访问 关联的CPD(例如,CPD420)。接下来,在块820中,处理器102确 定是否发生错误(例如,由HPTT406提供的CPD指针是否不指向 CPD420中的有效条目)。响应于在块820中发生错误,控制转移到 块814,在块814,处理器102把中断返回到OS镜像402的内核, 然后转移到块816。响应于在块820中未发生错误,控制转移到块 822,在块822,处理器102访问第二OS镜像(例如,OS镜像432)的 第二客户数据结构(例如,GPTT434)。接下来,在块824中,处理 器102确定是否发生错误(例如,由CPD指向的条目是否不指向第二 客户数据结构中的有效条目)。
响应于在块824中发生错误,控制转移到块814,在块814,处 理器102把中断返回到在OS镜像434中执行的内核,然后转移到块 816。响应于在块824中未发生错误,控制转移到块826,在块826, 处理器102使用由第二客户数据结构提供的指针访问第二主机数据结 构(例如,HPTT436)以定位指向期望数据(例如,VO401)的指针。接 下来,在块828中,处理器102确定是否发生错误(例如,由来自第 二主机数据结构的指针指向的条目是否不指向虚拟存储器缓冲器440 中的有效条目)。响应于在块828中发生错误,控制转移到块814, 在块814,处理器102返回中断,然后转移到块816。响应于在块 828中未发生错误,控制转移到块830,在块830,处理器102把共 享分区数据返回到与OS镜像402关联的第一应用。在块830之后, 控制转移到块816。
因此,已在这里描述了有益地解决了在共享虚拟对象变得相对较 大并且较多时的伸缩问题的交叉分区共享存储器挂接功能。
在以上流程图中,在图8中描述的方法可被实现于包含计算机可 读代码的计算机可读介质中,从而当在计算装置上执行计算机可读代 码时,执行一系列步骤。在一些实现方式中,在不脱离本发明的精神 和范围的情况下,方法的某些步骤可被组合,同时或按照不同次序执 行,或者也许省略。因此,尽管按照特定顺序描述并例示了方法步 骤,但步骤的特定顺序的使用并不意图暗示对本发明的任何限制。在 不脱离本发明的精神或范围的情况下,关于步骤的顺序可做出改变。 因此,不应在限制性意义上解释特定顺序的使用,并且本发明的范围 仅由所附权利要求定义。
本领域技术人员将会理解,本发明的各方面可以实现为系统、方 法或计算机程序产品。因此,本发明的各方面可以采用通常全部可在 这里称为“电路”、“模块”或“系统”的完全硬件实施例或组合软件和硬 件方面的实施例的形式。另外,本发明的各方面可以采用实现于具有 计算机可读程序代码的一个或多个计算机可读介质的计算机程序产品 的形式。
可以使用一个或多个计算机可读介质的任何组合。计算机可读介 质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存 储介质可以是例如但不限于电子、磁、光学、电磁、红外或半导体系 统、设备或装置或者前述各项的任何合适的组合,但不包括计算机可 读信号介质。计算机可读存储介质的更具体的例子(非穷举列表)将会 包括下述各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只 读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、便携 式压缩盘只读存储器(CD-ROM)、光学存储装置、磁存储装置或前述 各项的任何合适的组合。在这个文件的上下文中,计算机可读存储介 质可以是能够包含或存储由指令执行系统、设备或装置使用或结合指 令执行系统、设备或装置使用的程序的任何有形存储介质。
计算机可读信号介质可包括例如基带中或作为载波的一部分的嵌 入了计算机可读程序代码的传播数据信号。这种传播信号可采用多种 形式中的任何形式,包括但不限于电磁信号、光学信号或者它们的任 何合适的组合。计算机可读信号介质可以是并非计算机可读存储介质 并且能够传送、传播或传输由指令执行系统、设备或装置使用或结合 指令执行系统、设备或装置使用的程序的任何计算机可读介质。可以 使用合适的介质(包括但不限于无线、有线、光缆、RF等或前述各项 的任何合适的组合)传输计算机可读信号介质上包含的程序代码。
可以按照一种或多种编程语言的任何组合编写用于执行本发明的 各方面的操作的计算机程序代码,所述编程语言包括:面向对象的编 程语言,诸如Java、Smalltalk、C++等;和常规程序化编程语言, 诸如“C”编程语言或类似编程语言。程序代码可以完全在用户计算机 上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在 用户的计算机上并且部分在远程计算机上执行或者完全在远程计算机 或服务器上执行。在后面的方案中,远程计算机可以通过任何类型的 网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者 可以(例如,使用互联网服务提供商通过互联网)连接到外部计算机。
这里参考根据本发明实施例的方法、设备(系统)和计算机程序产 品的流程图和/或方框图描述本发明的各方面。应该理解,流程图和/ 或方框图的每个方框以及流程图和/或方框图中的方框的组合能够由 计算机程序指令实现。这些计算机程序指令可被提供给通用计算 机、专用计算机或者其它可编程数据处理设备的处理器,以产生一 台机器,从而指令(所述指令经计算机或者其它可编程数据处理设备 的处理器执行)产生用于实现流程图和/或方框图的一个或多个方框中 规定的功能/动作的装置。
这些计算机程序指令也可存储在计算机可读存储介质中,该计 算机可读存储介质能够指示计算机、其它可编程数据处理设备或其 它装置按照特定的方式发挥作用,从而存储在计算机可读介质中的 指令产生一种制造产品,所述制造产品包括实现流程图和/或方框图 的一个或多个方框中规定的功能/动作的指令。计算机程序指令也可 被加载到计算机、其它可编程数据处理设备或其它装置上,以使得 在所述计算机、其它可编程设备或其它装置上执行一系列的操作步 骤以产生计算机实现的过程,从而在该计算机或其它可编程设备上 执行的指令提供用于实现流程图和/或方框图的一个或多个方框中规 定的功能/动作的过程。
将会进一步理解,本发明的实施例中的过程可使用软件、固件 或硬件的任何组合实现。作为按照软件实施本发明的准备步骤,编 程代码(不管是软件还是固件)将会典型地存储在一种或多种机器可读 存储介质中,诸如固定(硬盘)驱动器、盘、光盘、磁带、半导体存储 器(诸如,ROM、PROM等),由此制造根据本发明的一件制品。通 过直接从存储装置执行代码,通过把代码从该存储装置复制到另一 存储装置(诸如,硬盘、RAM等)中,或者通过使用传输类型介质(诸 如,数字和模拟通信链路)传输代码以进行远程执行,使用包含编程 代码的所述一件制品。通过组合包含根据本发明的代码的一种或多 种机器可读存储装置与用于执行其中包含的代码的合适的处理硬 件,可实施本发明的方法。用于实施本发明的设备能够是包含根据 本发明编码的程序或具有对该程序的网络访问权的一种或多种处理 装置和存储子系统。
因此,很重要地,尽管在具有安装(或执行)的软件的全功能计算 机(服务器)系统的情况下描述了本发明的说明性实施例,但本领域技 术人员将会理解,本发明的说明性实施例的软件方面能够以各种形 式作为程序产品分发,并且本发明的说明性实施例同样适用而不管 用于实际执行分发的介质的特定类型如何。
尽管已参照示例性实施例描述了本发明,但本领域技术人员将 会理解,在不脱离本发明的范围的情况下,可做出各种改变并且可 用等同物替换其元件。另外,在不脱离本发明的基本范围的情况 下,可做出许多修改以使特定系统、装置或其部件适应于本发明的 教导。因此,本发明不应局限于为了执行本发明而公开的特定实施 例,而是本发明将会包括落在所附权利要求的范围内的所有实施 例。此外,术语第一、第二等的使用并不表示任何次序或重要性, 相反地,术语第一、第二等用于使元件彼此区分。
本文使用的术语仅用于描述特定实施例的目的而非意在限制本发 明。如本文所使用,单数形式“a”“an”和“the”也意图包括复数形式,除 非上下文清楚地指示了相反的情况。另外,将会理解,当在本说明书中 使用时,术语“包括”和/或“包含”指定存在已说明的特征、整数、步 骤、操作、元件和/或部件,但并不排除存在或增加一个或多个其它特 征、整数、步骤、操作、元件、部件和/或其组合。
以下权利要求中的所有装置或步骤以及功能元件的相应结构、材 料、动作和等同物(如果存在的话)意在包括用于结合具体要求保护的其 它要求保护的要素来执行功能的任何结构、材料或动作。给出本发明 的描述是为了说明和描述的目的,而非是要穷举或者将本发明限制为 所公开的形式。在不脱离本发明的范围和精神的情况下,许多修改和 变型对于本领域普通技术人员而言是清楚的。选择并描述所述实施例 以便最好地解释本发明的原理和实际应用,并且使其他本领域普通技 术人员能够针对具有适合设想的特定用途的各种修改的各种实施例来 理解本发明。

用于管理共享存储器的方法和系统.pdf_第1页
第1页 / 共22页
用于管理共享存储器的方法和系统.pdf_第2页
第2页 / 共22页
用于管理共享存储器的方法和系统.pdf_第3页
第3页 / 共22页
点击查看更多>>
资源描述

《用于管理共享存储器的方法和系统.pdf》由会员分享,可在线阅读,更多相关《用于管理共享存储器的方法和系统.pdf(22页珍藏版)》请在专利查询网上搜索。

本发明涉及用于管理共享存储器的方法和系统。一种用于管理共享存储器的技术包括:链接由第一共享应用和第二共享应用使用的地址转换数据结构。第一共享应用由第一操作系统(OS)管理,并且第二共享应用由容纳关联的虚拟对象的第二OS管理。基于该链接,第一共享应用和第二共享应用的虚拟地址被绑定到第二OS分派给关联的虚拟对象的一组可改变的物理地址,从而由共享应用所共享的关联的虚拟对象可由第二OS在没有第一OS的许可。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1