原文位置:http://blog.youkuaiyun.com/luoshengyang/article/details/6621566
综述:
binder机制是android当中非常关键的进程间通信机制,是一个类似于http的c/s架构,包括client、server、service manager以及binder。本一学要学的就是binder机制当中充当server查询器的service manager。
一、初始化binder驱动||申请binder硬件设备
1、打开一定大小的binder_state
2、将打开的binder的进程上下文信息保存
3、将打开的binder物理页面的地址同时映射到内核进程的虚拟地址以及server进程的虚拟地址,这样可以减少一次进程通信时的内存调用
4、proc中保存了物理页面,以红黑树形式保存
二、将service manager注册为守护进程
1、binder_become_context_manager
2、通过ioctl通知binder驱动程序,service manager为将要创建为守护进程
3、将当前线程放入service manager的线程树当中
4、设置全局的唯一守护进程号以及全局守护进程节点。
三、service manager作为守护进程循环读取binder
1、从SM中取出当前线程
2、将当前线程的looper参数置一
3、SM循环查看proc的红黑树中是否有待处理事件
4、SM读取binder事件