编程接口指南

共享内存模型概述

在共享内存模型中,应用程序进程会在其本地地址空间中创建一个 RSM 导出段。一个或多个远程应用程序进程创建 RSM 导入段,在导出段与导入段之间建立互连的虚拟连接。所有进程将使用其特定地址空间的本地地址,来实现对共享段的内存引用。

应用程序进程通过为 RSM 导出段分配可在本地寻址的内存来创建此导出段。使用标准 Solaris 接口(如 System V 共享内存、mmap(2)valloc(3C))即可实现此分配。然后,进程会调用 RSMAPI 来创建段,用于为已分配的内存提供引用句柄。RSM 段通过一个或多个互连控制器进行发布。可以远程访问已发布的段。另外,还将发布允许导入该段的节点的访问权限列表。

将为导出的段分配一个段 ID。通过该段 ID 及其创建进程的群集节点 ID,导入进程可唯一地指定一个导出段。如果成功创建了导出段,则会向进程返回一个段句柄,以便在后续段操作中使用。

应用程序进程通过使用 RSMAPI 来创建导入段,便可以对已发布的段进行访问。创建导入段之后,应用程序进程便建立了互连的虚拟连接。如果成功创建此导入段,则会向应用程序进程返回一个 RSM 导入段句柄,以便在后续段导入操作中使用。建立虚拟连接之后,如果互连支持内存映射,则应用程序可能会请求 RSMAPI 提供内存映射以进行本地访问。如果不支持内存映射,则应用程序可以使用 RSMAPI 提供的内存访问元语。

RSMAPI 提供了一种机制,该机制可以支持远程访问错误检测并能解决写入顺序内存模型问题。此机制称为屏障 (barrier)。

RSMAPI 提供一种通知机制,可以同步本地访问和远程访问。当导入进程启动数据写入操作完成后,导出进程便可以调用函数使自身阻塞。当导入进程完成写入后,此进程会通过调用信号函数来使导出进程解除阻塞。解除阻塞之后,导出进程便可以处理数据。