http://www.cloudchou.com/android/post-327.html
service manager是所有binder service的管理者,但它并不是这些binder service的创建者。
这些binder service有些是init进程启动的服务创建的,有些是system_server进程创建的,但是service manager会管理所有binder service的信息,方便client查询以及调用。
service manager是由init进程直接启动的,在init.rc里有
ActivityManagerService,PackageManagerService等由system_server进程启动的binder service实际上并没有单独的进程,它们只是system_server的一个子线程。init进程会启动surface flinger,media server, drmserver等服务,在这些服务里会创建binder service,并注册到service manager。
init.rc声明了surfaceflinger:
native binder service 和 java 层的binder service,都会交由service manager注册,然后由service manager管理。客户端使用binder service时需要向service manager查询得到binder service在当前进程的一个代理,通过代理与binder service的服务端交互。