service manager和binder service的关系

2014/04/20

本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接

service manager是所有binder service的管理者,但它并不是这些binder service的创建者。

这些binder service有些是init进程启动的服务创建的,有些是system_server进程创建的,但是service manager会管理所有binder service的信息,方便client查询以及调用。

service manager是由init进程直接启动的,在init.rc里有

1
2
3
4
5
6
7
8
9
service servicemanager /system/bin/servicemanager
    class core
    user system
    group system
    critical
    onrestart restart zygote
    onrestart restart media
    onrestart restart surfaceflinger
    onrestart restart drm

ActivityManagerService,PackageManagerService等由system_server进程启动的binder service实际上并没有单独的进程,它们只是system_server的一个子线程。init进程会启动surface flinger,media server, drmserver等服务,在这些服务里会创建binder service,并注册到service manager。

init.rc声明了surfaceflinger:

1
2
3
4
5
service surfaceflinger /system/bin/surfaceflinger
    class main
    user system
    group graphics drmrpc
\t\tonrestart restart zygote

native binder service 和 java 层的binder service,都会交由service manager注册,然后由service manager管理。客户端使用binder service时需要向service manager查询得到binder service在当前进程的一个代理,通过代理与binder service的服务端交互。

binder线程

¥打赏5毛

取消

感谢您的支持,我会继续努力的!

扫码支持
赏个5毛,支持我把

打开支付宝扫一扫,即可进行扫码打赏哦

本篇目录