a的ndroid进程间通信.ppt

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
a的ndroid进程间通信

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 Inc.开发的,接着Palm Inc.也跟着使用。现在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目录下,主要是由binder.h、binder.c和service_manager.c三个文件组成。 Service Manager实现过程: 打开/dev/binder文件:open(/dev/binder, O_RDWR); 建立128K内存映射:mmap(NULL, mapsize, PROT_READ, MAP_PRIVATE, bs-fd, 0); 通知Binder驱动程序它是守护进程:binder_become_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的Serv

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档