Android Framework IPC方式

501 阅读1分钟

Android Framework用到了哪些IPC方式

  1. 管道
  2. Socket
  3. 共享内存
  4. 信号

管道

优点:

  1. 无名管道简单方便。
  2. 有名管道可以提供给任意关系的进程使用。

缺点:

  1. 无名管道局限于单向通信的工作方式.并且只能在创建它的进程及其子孙进程之间实现管道的共享。
  2. 有名管道由于其长期存在于系统之中,使用不当容易出错。
  3. 管道设计两次拷贝,不适合传递大量数据。

Framework使用:

  1. Android 5.0之前 pipe。6.0及以后用eventfd。前者是读取/写入,后者是等待/响应,。

Socket

优点

  1. 全双工的,即可以读也可以写。
  2. 两个进程之间无需存在亲缘关系。

缺点

  1. 涉及两次拷贝,不适合传递大量数据。

Framework使用

  1. Zygote进程间通信。

共享内存

优点:

  1. 很快,不需要多次拷贝
  2. 进程之间无需存在亲缘关系。

缺点:

  1. 需要使用额外的同步机制(由于多个进程共享一段内存,因此需要依靠某种同步机制(如信号量)来达到进程间的同步及互斥。)。

Framework使用:

  1. Ashmem机制。

信号

优点:

  1. 知道进程pid就能发信号了,也可以一次给一群进程发信号。

缺点:

  1. 只能带个信号,不能带别的参数。
  2. 单向的,发出去之后怎么处理是别人的事。

Framework使用:

  1. 进程关闭
  2. Zygote监听进程退出。

参考