Android Binder 机制 – 概览

1) Binder 是什么?

  简单地说,Binder是Google为Android 系统设计实现的一种IPC机制(进程间通信)。基于Binder机制,Android的底层服务之间,底层服务与上层应用程序之间形成一种基于C/S的架构,而Binder就是Client和Server之间的通信机制,这一点类似于基于C/S架构的网络服务之间以socket作为通信机制一样。

2) Binder 架构实现

                                     (图片来源: http://blog.csdn.net/luoshengyang/article/details/6618363 )

 

         Binder 在内核层基于Kernel Driver的形式生成一个供外部操作的虚拟设备 /dev/binder,这一点类似于内核所支持的posix 共享内存实现方式: /dev/shm。Android中的Binder机制基于OpenBinder实现的。

3) 为什么选择Binder?

  Linux系统所支持的IPC机制很多: 信号(signal),共享内存(process share memory),信号量(semaphore),套接字(socket),管道(pipe),命名管道(named pipe)……,Android并未选择上述的IPC机制而选择Binder,其中一个重要的原因在于: 上述的IPC机制更多的只是提供一种机制,而不是一种忽略一些关键细节立即可用的IPC实现。以共享内存为例,当我们使用共享内存这种方式作为进程间数据共享的机制时,我们需要另外去实现对共享内存操作的同步和互斥机制。试想,如果Android 完全依赖于Linux提供的IPC机制而没有去提供一种更易于使用的IPC实现,那么每一个Android服务在需要进行IPC时都需要去面对和实现这些IPC机制细节,这会大大增加服务的开发时间,不便于服务接口的统一,不利于服务之间的兼容。因此,Android内部实现了一种更加统一,简单高效的IPC机制Binder,服务之间需要进行IPC通信时,只需要使用Binder提供的接口来使用即可,不需要关心IPC过程中的数据存储,操作的同步和互斥问题。此外,Binder还提供了对基于Binder的服务的管理机制,并作为跨进程调用的中间代理层。

posted on 2011-12-25 19:32  xwroyal  阅读(671)  评论(0编辑  收藏  举报