您的当前位置:首页正文

iceoryx源码阅读(一)——全局概览

2024-11-02 来源:个人技术集锦

0 导引

本系列文章对iceoryx源码进行解读,索引如下:

  • iceoryx源码阅读(六)——共享内存创建

  • iceoryx源码阅读(七)——服务发现机制

  • iceoryx源码阅读(九)——等待与通知机制

1 什么是iceoryx

iceoryx是一种基于共享内存实现的进程间通信组件,实现零拷贝传输。

2 源码结构

iceoryx源码包括若干工程,整理如下表所示:

下图展示了主要项目之间的依赖(FROM:):

3 iceoryx应用程序结构

下图是来自中的图片,很好地展示了iceoryx应用程序结构:

iceoryx应用程序有三类进程,分别为Publisher、Subscriber和Roudi,如下图(极度简化且直觉):

其中,Publisher和Subscriber分别是发布者进程和订阅者进程,其职责是明确的,即发送和接收消息。Roudi是一个中心化的管理员进程,职责包括:

  • 进程管理,ProcessManager。

  • 共享内存创建、回收及管理结构的初始化,MemoryManager。

  • 服务发现,Service Discovery,即建立Publisher和Subscriber关联。

需要指出的是,共享内存中除了存放传输的消息,还需要存放共享内存管理相关的对象,这些对象也是多进程共享,具体有哪些对象将在后续逐步展开。

4 优势

性能是基于共享内存通信的最大优势,下图来自iceoryx的github页面:

可以看到,由于零拷贝,所以通信耗时几乎和负载长度无关。接下来的系列文章,我们将分析iceoryx如何实现基于共享内存的零拷贝通信。

显示全文