共享内存原理
当POSIX系统中的进程启动时,它会被赋予自己的虚拟地址空间。
虚拟地址空间跨越的范围对于不同的进程可能是相同的,但是在特定地址可访问的数据对于每个进程可能是不同的。
在进程的虚拟地址空间内,有许多“内存区域”用于加载或映射数据。这些内存区域通常是进程虚拟地址空间中不相交的范围,比如:
1、正在运行程序的执行指令(即程序的代码段)
2、静态变量声明(即程序数据段)
3、运行程序使用的共享库的执行指令(libraries.text段)
4、进程堆栈
5、进程的堆
6、共享内存段
共享内存段是位于进程之外某个地方的物理内存(如RAM的某个部分或文件系统上),可以通过映射到其虚拟地址空间中的内存区域来访问。一块共享内存可以映射到多个进程,但是它映射到的地址在进程之间可能(也可能)不同。POSIX 提供了共享内存段的使用接口。
iceoryx系统设计
iceoryx系统利用一个“管理”段进行管理共享内存,并利用任意数量的“用户”段进行服务之间的事件通信。这些段在逻辑上被划分为“内存池”,内存池包含许多大小相等的“内存块”。内存块是iceoryx系统中用于共享内存访问的基本单位。
iceor