Chinaunix首页 | 论坛 | 博客
  • 博客访问: 166562
  • 博文数量: 18
  • 博客积分: 299
  • 博客等级: 二等列兵
  • 技术积分: 731
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-19 00:39
文章分类

全部博文(18)

文章存档

2013年(7)

2012年(11)

分类: LINUX

2012-08-24 15:35:40

纯属自己理解,错了表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用在服务器端。
阅读(2719) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~