下载此文档

android进程间通信.ppt


文档分类:论文 | 页数:约13页 举报非法文档有奖
1/13
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/13 下载此文档
文档列表 文档介绍
Android的重要IPC
-Binder机制
分享人:张银博
目录
Android的IPC
Binder简介
Binder的四个组件和关系
Service Manager实现机制
MediaPlayer的binder实现过程
Binder在应用层的接口及分析
1
Android的IPC
Linux IPC:pipe,named pipe,signal,system V IPC(Semaphore、Message Queue、Share Memory),Socket?
Android并未采用linux的这些IPC机制,Android的IPC机制有哪些?
Binder机制,Messager机制,AIDL机制
Binder机制:一种同步同步机制,直接调用,依赖底层binder驱动层的实现,高效。
Messager机制:异步机制,跨进程方便
AIDL机制:可以使你的程序实现进程间通信(IPC),并且在实现IPC的基础上允许多线程访问
2
Binder简介
Binder其实也不是Android提出来的一套新的进程间通信机制,它是基于OpenBinder来实现的。OpenBinder最先是由Be ,接着Palm 。现在OpenBinder的作者Dianne Hackborn就是在Google工作,负责Android平台的开发工作。
为什么要用binder
用驱动程序来推进进程间的通信。
通过共享内存来提高性能。
为进程请求分配每个进程的线程池。
针对系统中的对象引入了引用计数和跨进程的对象引用映射。
进程间同步调用。
3
Binder的四个组件及关系
Android系统Binder机制中的四个组件Client、Server、Service Manager和Binder驱动程序,这四个组件的关系如下图:
3
Binder的四个组件及关系
Client、Server和Service Manager实现在用户空间中,Binder驱动程序实现在内核空间中
Binder驱动程序和Service Manager在Android平台中已经实现,开发者只需要在用户空间实现自己的Client和Server
Binder驱动程序提供设备文件/dev/binder与用户空间交互,Client、Server和Service Manager通过open和ioctl文件操作函数与Binder驱动程序进行通信
Client和Server之间的进程间通信通过Binder驱动程序间接实现
Service Manager是一个守护进程,用来管理Server,并向Client提供查询Server接口的能力
4
Service Manager实现机制
Service Manager组件是整个Binder机制的守护进程,用来管理开发者创建的各种Server,并且向Client提供查询Server远程接口的功能。
4
Service Manager实现机制
Service Manager在用户空间的源代码位于frameworks/base/cmds/servicemanager目录下,、。 Service Manager实现过程:
打开/dev/binder文件:open("/dev/binder", O_RDWR);
建立128K内存映射:mmap(NULL, mapsize, PROT_READ, MAP_PRIVATE, bs->fd, 0);
通知Binder驱动程序它是守护进程:e_context_manager(bs);
进入循环等待请求的到来:binder_loop(bs, svcmgr_handler),不停的去读Binder设备,看是否有对service的请求,如果有的话,就去调用svcmgr_handler函数回调处理请求。
4
Service Manager实现机制
Service Manager为Server和Client提供接口:
 对Server来说,就是调用IServiceManager::addService这个接口来和Binder驱动程序交互了,即调用BpServiceManager::addService 。为Client提供服务。
对Client来说,就是调用IServiceManager::getService这个接口来和Binder驱动程序交互了。具体过程上述Server使用Service Manager的方法是一样
5
MediaPlayer的binder实现过程
Binder的Server和Client都由用户实现,这里就由一个经典的MediaPlay

android进程间通信 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息