Binder

1、Binder 机制的作用和原理?
1) Linux 系统将一个进程分为用户空间和内核空间。对于进程之间来说,用户空间的数据不可共享,内核空间的数据可共享,为了保证安全性和独立性,一个进程不能直接操作或者访问另一个进程,即 Android 的进程是相互独立、隔离的,这就需要跨进程之间的数据通信方式。
2) 一次完整的 Binder IPC 通信过程通常是这样:
a. 首先 Binder 驱动在内核空间创建一个数据接收缓存区;
b. 接着在内核空间开辟一块内核缓存区,建立内核缓存区和内核中数据接收缓存区之间的映射关系,以及内核中数据接收缓存区和接收进程用户空间地址的映射关系;
c. 发送方进程通过系统调用 copyfromuser() 将数据 copy 到内核中的内核缓存区,由于内核缓存区和接收进程的用户空间存在内存映射,因此也就相当于把数据发送到了接收进程的用户空间,这样便完成了一次进程间的通信。

2、Binder 框架中 ServiceManager 的作用?
1) Binder 框架 是基于 C/S 架构的。由一系列的组件组成,包括 Client、Server、ServiceManager、Binder 驱动,其中Client、Server、Service Manager 运行在用户空间,Binder 驱动运行在内核空间
a. Server&Client:服务器&客户端。在 Binder 驱动和Service Manager 提供的基础设施上,进行 ClientServer 之间的通信。
b. ServiceManager(如同 DNS 域名服务器)服务的管理者,将 Binder 名字转换为 Client 中对该 Binder的引用,使得 Client 可以通过 Binder 名字获得Server 中 Binder 实体的引用。
c. Binder 驱动(如同路由器):负责进程之间 binder通信的建立,传递,计数管理以及数据的传递交互等底层支持。

上一篇:Android-Binder机制及AIDL使用,架构师必备技能


下一篇:干了5年Android开发还没掌握binder机制?震撼来袭免费下载!