主要观点:Binder 是 Android 特有的进程间通信机制和远程方法调用系统,一个 Android 进程可通过 binder 调用另一个 Android 进程的例程,传递要调用的方法和参数。Android 不用 SysV IPC 进行进程间通信,其实现位于内核源代码 drivers/android/binder.c 及 include/uapi/linux/android/binder.h 中。
关键信息:
- 提供资源:包括多个关于 Binder 的文档链接,如 http://www.angryredplanet.com... 等,还有相关的演示文稿和论文。
- 回答问题:解释了 Binder 需在内核中实现的原因,如避免复制、管理远程对象生命周期等;介绍了 Android 中 Binder 的使用方式,涵盖窗口管理器、活动管理器等多个方面;提及 mainlining 反馈,包括对 Binder 在内核中做太多事、使用 char 设备等的讨论;阐述了与 kdbus 的关系。
- 历史:最初源于 BeOS,Linux 版本由 PalmSource 项目派生而来,Dianne Hackborn 是其架构师之一。
重要细节: - 在 Android 中,Binder 用于核心平台的几乎所有跨进程通信,如窗口管理器与客户端、表面合成器等的通信,活动管理器管理组件等,还支持单向和双向调用,有“链接到死亡”等设施。
- mainlining 反馈中,开发者对 Binder 的实现方式提出了多种看法和建议,如将部分功能移至用户空间、采用不同的 IPC 方式等。
- 与 kdbus 的关系方面,Greg Kroah-Hartman 指出 kdbus 与 Binder 不完全相同。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。