管道
1.半双工,单向的
2.一般在父子进程之前使用

socket
全双工的,可读可写
两个进程无需存在亲缘关系

共享内存
很快,不需要多次拷贝
进程无需存在亲缘关系

信号
1.单向,发出去之后怎么处理是别人的事
2.只能带个信号,不能带别的参数
3.知道进程pid就可以发信号了,也可以一次给一群进程发信号

问题:android framework用到了哪些ipc方式
总结:
列举用到了哪些ipc方式
说说这些ipc方式的特点
举例说明framework里怎么用到的

谈谈多binder的理解

binder是干嘛的

进程间通信

为什么选择binder作为最重要的IPC通信机制

性能,binder是可以跨物理内存,同时映射到内核和目标进程的用户空间,只拷贝一次
方便易用,
安全,身份信息由ipc机制在内核态添加

Binder交互模型

binder1.png

绘制binder通信架构图,讲解原理

原理.png

进程如何启动binder机制?

打开binder驱动
内存映射,分配缓冲区
启动binder线程

一次完成的IPC通信流程

14140248-1cf40a3e489fcf9a.png

了解binder整体架构原理

了解应用和binder驱动的交互方式

了解IPC过程的通信协议

协议.png

Linux内核的基础知识

1.进程隔离/虚拟地址空间(进程间互不干扰)
2.系统调用(用户空间通过系统调用访问许可资源)
3.binder驱动

什么时候启用的binder机制

zygote创建应用进程后,在进程初始化时启用binder(应用启动流程简单说下)

怎么启用Binder机制

1.打开binder驱动
2.映射内存,分配缓冲区
3.注册binder线程
4.进入binder loop

Binder通信原理与机制