本系列文章对iceoryx源码进行解读。
一、什么是iceoryx
iceoryx是一种基于共享内存实现的进程间通信组件,实现零拷贝传输。
二、源码结构
iceoryx源码包括若干工程,整理如下表所示:
下图展示了主要项目之间的依赖(FROM:iceoryx(冰羚)-Architecture):
三、iceoryx应用程序结构
iceoryx应用程序有三类进程,分别为Publisher、Subscriber和Roudi,如下图(极度简化且直觉):
其中,Publisher和Subscriber分别是发布者进程和订阅者进程,其职责是明确的,即发送和接收消息。Roudi是一个中心化的管理员进程,职责包括:
-
进程管理,ProcessManager。
-
共享内存创建、回收及管理结构的初始化,MemoryManager。
-
服务发现,Service Discovery,即建立Publisher和Subscriber关联。
需要指出的是,共享内存中除了存放传输的消息,还需要存放共享内存管理相关的对象,这些对象也是多进程共享,具体有哪些对象将在后续逐步展开。