JasonWang's Blog

Android Binder入门

背景

如今的操作系统都支持多进程并发执行, 系统一般都存在多种不同的服务运行在多个进程当中。那么,进程与进程之间如何通信,即跨进程通信(IPC, Inter-Process Communication)是如何进行的呢? Linux已有好几种IPC机制:

  • Signals: 最早的IPC方式,一个进程通过发送信号给另一个有相同UID/GID的进程或者在同一进程组的进程
  • Pipes(包括 named pipes): Pipes是一个单向的用于连接一个进程的标准输出与另一个进程的标准输入的字节流通道
  • Sockets: 双向的通道,两个进程通过打开同一个socket进行通信
  • Message queues: 一个进程将消息写入消息队列,另一个进程从改队列中读取消息
  • Semaphores: 信号量是一个可以被多个进程读写的共有变量
  • Shared Memeory: 一个系统的内存区域,通过将其映射到两个不同进程的虚拟地址空间,因此每个进程都可以访问该地址空间
  • D-Bus(Desktop Bus): 用于桌面组件与服务通讯的协议