Android为什么使用Binder-android学习之旅(101)

时间:2021-10-10 08:20:05

基础知识

Android进程和linux进程一样,他们只运行在进程固有的虚拟空间中。一个4GB的虚拟地址空间,其中3GB是用户空间,1GB是内核空间 ,用户空间是非共享的,内核空间是共享的,如下图:

Android为什么使用Binder-android学习之旅(101)

inux本身就提供了IPC工具,但是android中的Binder功能更丰富,不仅可以用来实现进程件的IPC通信,还可以用来调用另一个进程的函数,支持RPC操作,Binder使用运行在内科空间中的抽象驱动程序Binder(IPC) Driver,来实现进程间的通信,如下图:

Android为什么使用Binder-android学习之旅(101)

Android使用Binder机制的原因有两个:

1.首先Binder采用了linux的优秀的内存管理技术,binder的UID和pid都是binder在内核空间添加身份标识,实现私有的通道,能保证数据的正确性。

2.使用用户空间无法访问的内存空间来交换数据,保证了IPC的安全性

3.支持调用另外一个进程的函数,实现了RPC功能,给予cs框架,比通信的socket效率高。

至于具体的介绍如下:

Android Binder IPC详解