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

iceoryx · 浏览次数 : 0

小编点评

**1. 什么是iceoryxiceoryx套件?** iceoryxiceoryx是一种基于共享内存实现的进程间通信组件。它包含多个工程,用于创建、管理和回收共享内存和进程间通信对象。 **2. iceoryx源码结构** **工程** | **描述** ---|---| * **Architecture** | 负责软件架构设计和依赖图的构建。 * **MemoryManager** | 管理共享内存的创建、回收和管理。 * **ServiceDiscovery** | 建立和维护 Publisher 和 Subscriber 之间的关联。 * **ProcessManager** | 负责进程管理,包括创建、启动、停止和监控进程。 * **Publisher** | 发布者进程,发送消息到共享内存中。 * **Subscriber** | 订阅者进程,从共享内存中接收消息。 **3. iceoryx应用程序结构** * **Publisher**:负责创建和发送消息到共享内存中。 * **Subscriber**:负责从共享内存中接收消息。 * **Roudi**:中心化的管理进程,负责进程管理、服务发现和共享内存管理。 **共享内存结构** 共享内存用于存储发送和接收的消息。它包含以下对象: * **消息对象**:用于存储每个消息的类型、数据和其他信息。 * **共享内存管理对象**:用于管理共享内存的分配、释放和清理。 * **其他共享内存对象**:用于维护其他数据结构,例如锁、信号量等。

正文

一、什么是iceoryx

iceoryx是一套基于共享内存实现的进程间通信组件。

二、源码结构

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

image

下图展示了主要项目之间的依赖(FROM:iceoryx(冰羚)-Architecture):

image

三、iceoryx应用程序结构

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

image

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

  • 进程管理,ProcessManager。

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

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

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

与iceoryx源码阅读(一)——全局概览相似的内容: