Binder是Android系统中大量使用的IPC(Inter Process Communication,进程间通信)机制;l
Binder在Android中的使用情景:
应用程序对服务器的请求;
应用程序自身提供对外服务;
Unix/Linux下传统的IPC机制有哪些?
管道、消息队列、共享内存、信号量、Socket等;
为什么在Android中会大量使用Binder机制?(传统的IPC ,socket会用)
Binder本身是C/S架构的,更符合Android系统架构;
性能更有优势:相比传统的IPC(管道、消息队列、socket的通信需要复制两次数据,因为要穿越两次内核),Binder IPC只需要一次(对系统底层的IPC,少一次数据复制,能极大提升整体性能);
安全性更好:传统IPC形式无法得到对方的身份标识(UID/GID),在使用Binder IPC时,进程的身份标识是自跟随调用过程动传递的;server端容易获知client的身份,方便做安全检查;
Binder的整体架构是什么样的?
Framework层
JAVA部分;
JNI部分;
C++部分;
驱动层
驱动层位于Linux内核中,提供了最底层的数据传递、对象标识、线程管理、调用控制过程等功能;驱动层是整个Binder机制的核心;
Framework层以驱动层为基础,提供了应用开发的基础设施;
Framework层既包含了C++部分实现,也包含了Java的部分实现;为了能将C++实现复用到JAVA端,中间通过JNI衔接;
什么叫做进程间的通信?
至少涉及两个进程的交互;
2975

被折叠的 条评论
为什么被折叠?



