一.Linux系统进程间通信有哪些方式?
1.socket;
2.name pipe命名管道;
3.message queue消息队列;
4.singal信号量;
5.share memory共享内存;
二.Java系统的通信方式是什么?
1.socket;
2.name pipe;
三.Android系统通信方式是什么?
Binder 通信;
四.Binder通信的优势是什么?
高效率
五.Binder通信的特点是什么?
是同步,而不是异步;
六.Binder通信是如何实现的?
1.Binder通信是通过linux的binder driver来实现的,
2.Binder通信操作类似线程迁移(thread migration),两个进程间IPC看起来就象是一个进程进入另一个进程执行代 码 然后带着执行的结果返回;
3.Binder的用户空间为每一个进程维护着一个可用的线程池,线程池用于处理到来的IPC以及执行进程本地消息,Binder通信是同步而不是异步。
七. Android中的 Binder通信实现要点:
1. Android中的Binder通信是基于Service与Client的工作模型的;
2. 所有需要IBinder通信的进程都必须创建一个IBinder接口;
3. 系统中有一个进程管理所有的system service:
4. Android不允许用户添加非授权的System service;
5. 现在源码开放了,我们可以修改一些代码来实现添加底层system Service的目的;
6. 对用户程序来说,我们也要创建server,或者Service用于进程间通信;
7. ActivityManagerService管理JAVA应用层所有的service创建与连接(connect),disconnect;
8. 所有的Activity也是通过这个service来启动,加载的;
9. ActivityManagerService也是加载在Systems Servcie中的;
八.Android的 Service工作流程
1.Android虚拟机启动之前系统会先启动service Manager进程;2.service Manager打开binder驱动,并通知binder kernel驱动程序这个进程将作为System Service Manager;
3.然后该进程将进入一个循环,等待处理来自其他进程的数据。4.用户创建一个System service后,通过defaultServiceManager得到一个远程ServiceManager的接口,通过这个接口我们可以调用 addService函数将System service添加到Service Manager进程中;
5.然后client可以通过getService获取到需要连接的目的Service的IBinder对象,这个IBinder是Service的BBinder在binder kernel的一个参考,
6.所以service IBinder 在binder kernel中不会存在相同的两个IBinder对象,每一个Client进程同样需要打开Binder驱动程序。对用户程序而言,我们获得这个对象就可以通过binder kernel访问service对象中的方法。
7.Client与Service在不同的进程中,通过这种方式实现了类似线程间的迁移的通信方式,对用户程序而言当调用Service返回的IBinder接口后,访问Service中的方法就如同调用自己的函数。
分享到:
相关推荐
android binder流程图
罗升阳在介绍和学习Binder的Blog中推荐:《Android Binder设计与实现》一文,详细地介绍了内核空间的Binder驱动程序的数据结构和设计原理
学习韦东山老师的4412开发板视频,做了点笔记,发出来跟大家分享一下这个学习的过程,如发现说的有误的地方,还请指出,谢谢!
自己写的一个关于binder的PPT,主要讲述了binder工作机制和代码运行流程
一个小流程图
Android中Binder处理流程、ServiceManager处理流程、 Binder驱动处理等 内附测试示例、工具脚本等
Android利用Binder进行通信一个简单的列子,代码比较烂,但是大概流程已经非常清楚了,希望对大家有所帮助。。怎么设置资源分为0。。最低是1,晕
【一图流】_03_一张图看懂 Android Binder原理及其调用流程.png
学习Binder时的测试Demo分为服务端和客户端此为服务端
Android Binder是一种在Android里广泛使用的一种远程...包括Binder Server、Binder Client和Android Binder驱动,实际的数据传输就是通过Android Binder驱动来完成的,这里我们就来详细的介绍Android Binder驱动程序。
Deep Dive into Android IPC & Binder.pdf Deep Dive into Android IPC/Binder Framework at Android Builders Summit 2013 Binder Overview IPC Advantages of Binder Binder vs Intent/ContentProvider/...
所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。我们这里将以MediaService的例子来分析Binder的使用:l ServiceManager,这是Android OS的整个服务的管理程序l MediaService,这个程序里边注册了提供...
android binder的驱动和应用层库,以及一个sample程序展示binder库的用法。代码在i386架构上编译执行通过。可用于binder机制学习或porting到实际项目中做为IPC.
主要描述service manage 和binder
Andrid系统中基于Binder的IPC流程框架分析_V1.0_201407251755.pdf
Android Binder是一种在Android里广泛使用的一种远程...包括Binder Server、Binder Client和Android Binder驱动,实际的数据传输就是通过Android Binder驱动来完成的,这里我们就来详细的介绍Android Binder驱动程序。
我们的 BinderFilter 内核驱动程序在 /drivers/staging/android/binder.c 中挂钩了 Android Binder 的内核驱动程序。 Android 的 Binder IPC 系统完全调解所有应用程序间消息,包括应用程序对私人用户数据的请求。...
Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。
主要介绍了android Camera framework架构的开发流程及具体的实现方法
用户空间的进程如果想相互通信, 必须经过内核, 因为不同进程的用户地址空间是独立的, 但是共享同一个内核空间. 内核为了支持进程间通信, 一般会有一... 两个进程间通信一般以client/server的形式进行, 大致流程如下: