跳转至

zircon ipc

进程间通信

因为进程间默认有隔离,所以内核需要提供一种方式使进程能安全地互相通信。 Zircon 包含了以下内核对象类型用于进程间通信(inter-process communication,IPC):

  • 事件: 两个进程之间的信号接口。
  • 套接字: 流式数据传输,类似管道。
  • : 可定位的流式数据传输,类似文件。
  • 通道: 基于消息的传输,可以传递数据和多个句柄。
  • FIFO(先进先出): 共享内存访问的控制平面,为小数据负载优化。

在这些对象之中,通道的独特性在于其适合帮助启动新进程,因为它能够向另一个进程传递句柄(即能力)。

通道有两个端点句柄,每个都属于不同的进程。只有双方所有者可以读取或写入消息,但是端点的所有权可以从一个进程转移到另一个进程。 当句柄被写入通道时,它会从发送进程中移除。当一条带有句柄的消息被读取时,句柄会被添加到接收进程中。

![该图显示进程如何通过内核中的共享对象来通信。这些连接中最常见的是通道。] (/get-started/images/intro/ipc.png){: width="582"}

注意:您可以在内核文档中找到更多关于 Zircon 的深入技术细节。

Zircon 通道是 [Fuchsia 接口定义语言(Fuchsia Interface Definition Language,FIDL)][glossary.FIDL] 描述的服务层 IPC 协议的基础。FIDL 协议是 Fuchsia 程序使用的主要 IPC 方式。 您将在稍后更详细地探索创建和使用 FIDL 协议。

glossary.FIDL


最后更新: 2022 年 12 月 31 日(Saturday) 21:07 CST