至少在五六年前就听说过binder机制,但从未想去深入了解。这次忘了是怎么和同事聊起这个东西的不过作为一个码农我想如果连google OS最为精髓的IPC都不知道,真不好以后出去跟人打招呼,于是乎决心了解下,一开始网上搜了些资料,感觉基本上都没讲出些啥东西,没办法只好 read the fucking code, 上周一直忙着签证的事情,没怎么定下心看因而节假日放出大招。
保留一贯的风格不喜欢整篇的paste code,大部分说一些个人的理解
源码靠大家自己
https://github.com/android/kernel_common.git
https://android.googlesource.com/platform/frameworks/native
主要分四部分
- binder的基本框架
- 为什么需要binder
- binder的threads
- binder的transaction
- binder的服务发布和获取
binder的基本框架
binder是个啥东西?
binder就是个IPC,给进程间通信用的,它的框架包含client,server,servicemanger和binder driver。
前面三个都是user space的进程,线程,后面的binder driver工作在kernel态。
这三个用户态的东西,尤其是servicemanager不是可有可无的,不是说为了应用层的服务框架设计方便所以
多搞出的一个东西,这个binder driver的设计其实是有考虑类似的三个不同角色的分类的。