binder机制几个关系

2782阅读 0评论2012-08-24 bottles
分类:LINUX

纯属自己理解,错了表pia我。

service manager
binder驱动
server
service
client
BpXXX
BnXXX

1,service manager一个进程,整个android系统里面只有一个servicemanager,管理所有服务。
他自己本身也是服务,而且他在binder驱动里的id=0。是一个特殊的服务。
2,binder驱动是作为通讯用的一个机制,比起socket通讯优势主要在于可以一次复制就能传递所需要的内容。
3,service不是进程也不是线程,当然他可以是在一个进程或者线程当中工作,他的工作就是在底层运行一些功能。核心层的服务都是进程里的(init.rc),java层的服务默认都在server那个主线程里(但是也可以重开进程或者线程让那个服务在里面工作)。
4,client是通过查询servicemanager->binder来知道到底有没有这个服务,之后在调用这个服务。
5,BpXXX是用在客户端,客户端调用ontransact跟binder通讯,但是它没有实际调用,而是让IPCThreadState做。
6,BnXXX用在服务器端。
上一篇:android应用程序:自动发送at命令
下一篇:用c语言模拟c++的异常处理机制