01
Binder 初印象
什么是 Binder?为什么 Android 要选它?Binder 在整个 Android 系统中的位置。
概念起源
02
进程间通信(IPC)基础
Linux 传统 IPC 方式(管道、Socket、共享内存)回顾,Binder 的独特优势。
IPC对比
03
Binder 架构总览
Client、Server、ServiceManager、Binder Driver 四要素,以及它们如何协作。
架构四要素
04
ServiceManager 详解
ServiceManager 的角色、启动流程、如何注册与获取服务。
服务注册
05
Binder Driver 内核模块
Binder 驱动的核心数据结构(binder_proc、binder_node、binder_ref、binder_transaction)。
驱动内核
06
Binder 内存管理
Binder 如何通过 mmap 实现一次拷贝?与传统 IPC 两次拷贝的对比。
mmap零拷贝
07
Binder 通信协议
BC(Binder Command)协议与 BR(Binder Return)协议详解。
协议BC/BR
08
Binder 事务(Transaction)机制
事务的发起、传递与完成,事务栈与线程状态。
事务状态机
09
Binder 线程管理
Binder 线程池的创建与管理,主线程与子线程的交互。
线程池并发
10
AIDL 语言基础
AIDL 的语法、支持的数据类型、定向 tag(in、out、inout)。
AIDL语法
11
AIDL 编译原理
AIDL 文件如何生成 Java/C++ 存根(Stub)与代理(Proxy)代码。
编译Stub/Proxy
12
Java 层 Binder 框架
Binder、IBinder、IInterface 接口,以及 Binder 内部类的工作原理。
Java框架
13
Native 层 Binder 框架
C++ 层的 BpBinder、BBinder、IPCThreadState 核心类。
C++Native
14
Binder 的死亡通知机制
linkToDeath 与 unlinkToDeath 的实现原理。
死亡通知linkToDeath
15
Binder 的权限校验
调用方 PID/UID 的获取与校验,以及 SELinux 在 Binder 中的应用。
权限SELinux
16
Binder 的同步与异步
oneway 关键字的作用,同步调用与异步调用的区别。
oneway异步
17
Binder 的异常处理
RemoteException、DeadObjectException 的产生原因与处理方式。
异常RemoteException
18
Binder 的匿名服务
什么是匿名 Binder 服务?如何传递与使用?
匿名服务
19
Binder 的 fd 传递
如何在进程间通过 Binder 传递文件描述符?
fd文件描述符
20
Binder 的缓冲区管理
Binder 内核缓冲区的大小限制、分配与回收策略。
缓冲区内核
21
Binder 的调试与优化
使用 dumpsys、binder_stats、binder_trace 进行问题定位。
调试dumpsys
22
Binder 的常见问题
Binder 事务过大、Binder 线程耗尽、Binder 死锁的排查与解决。
问题排查死锁
23
Binder 与 HwBinder
HwBinder 的引入背景、与 Binder 的异同点。
HwBinder对比
24
Binder 与 ServiceManager 的进化
从 ServiceManager 到 servicemanager.rc 的演变。
进化rc
25
Binder 在 SystemServer 中的应用
SystemServer 如何通过 Binder 提供系统服务。
SystemServer系统服务
26
Binder 在应用层通信中的应用
ActivityManagerService、PackageManagerService 等核心服务的 Binder 通信实例。
AMSPMS
27
Binder 的跨进程回调
如何通过 Binder 实现 Listener 或 Callback 模式。
回调Listener
28
Binder 的序列化与反序列化
Parcel 的读写机制,以及如何自定义 Parcelable。
Parcel序列化
29
Binder 的性能分析
Binder 调用的延迟、吞吐量测试,以及如何优化。
性能延迟
30
Binder 的未来
Binder 的演进方向(如 Binder V2),以及与其他 IPC 方案(如 D-Bus、gRPC)的对比。
未来Binder V2