Android Framework IPC方式
Android Framework用到了哪些IPC方式
- 管道
- Socket
- 共享内存
- 信号
管道
优点:
- 无名管道简单方便。
- 有名管道可以提供给任意关系的进程使用。
缺点:
- 无名管道局限于单向通信的工作方式.并且只能在创建它的进程及其子孙进程之间实现管道的共享。
- 有名管道由于其长期存在于系统之中,使用不当容易出错。
- 管道设计两次拷贝,不适合传递大量数据。
Framework使用:
- Android 5.0之前 pipe。6.0及以后用eventfd。前者是读取/写入,后者是等待/响应,。
Socket
优点
- 全双工的,即可以读也可以写。
- 两个进程之间无需存在亲缘关系。
缺点
- 涉及两次拷贝,不适合传递大量数据。
Framework使用
- Zygote进程间通信。
共享内存
优点:
- 很快,不需要多次拷贝
- 进程之间无需存在亲缘关系。
缺点:
- 需要使用额外的同步机制(由于多个进程共享一段内存,因此需要依靠某种同步机制(如信号量)来达到进程间的同步及互斥。)。
Framework使用:
- Ashmem机制。
信号
优点:
- 知道进程pid就能发信号了,也可以一次给一群进程发信号。
缺点:
- 只能带个信号,不能带别的参数。
- 单向的,发出去之后怎么处理是别人的事。
Framework使用:
- 进程关闭
- Zygote监听进程退出。
参考