Binder机制及底层实现
<1>进程间的内存空间是进程私有的
<2>进程间和内核的空间是互通的
<3>进程1空间<--->内核空间<-->进程2空间
Binder跨进程通信(IPC)的原理就是利用了这个可共享的内核空间将进程私有的空间进行关联的。而Binder就是这个通道。
使用步骤:
1.服务端注册服务
<1>server端向binder驱动发起注册请求
<2>Binder驱动将请求转发给ServiceManage进程
<3>ServiceManage把服务注册到表里面
<4>此时ServiceManage进程拥有该服务
2.客户端获取服务
<1>客户端向Binder驱动发起获取服务的请求
<2>Binder驱动将请求转发给ServiceManage
<3>ServiceManage查找对应的服务返回给Binder
<4>Binder再将服务传递给客户端
3.客户端使用服务
Client进程将参数数据发到Server进程
<1>客户端把数据从进程空间交给Binder的内核空间
<2>Binder将数据copy到对应的Service空间
Server进程根据Client进程要求,调用目标方法
<3>service进程收到Binder的通知后进行对应的方法调用
<4>把处理结果写道自己的内存中
Server进程将目标方法的结果,返回给Client进程
<1>Binder从service进程的内从中取出数据
<2>把数据copy到客户端进程并通知客户端
Binder机制及底层实现的更多相关文章
- 理解 Android Binder 机制(一):驱动篇
Binder的实现是比较复杂的,想要完全弄明白是怎么一回事,并不是一件容易的事情. 这里面牵涉到好几个层次,每一层都有一些模块和机制需要理解.这部分内容预计会分为三篇文章来讲解.本文是第一篇,首先会对 ...
- 了解Binder机制原理和底层实现
参考:http://www.2cto.com/kf/201606/515548.html 1.Binder通信机制介绍 这篇文章会先对比Binder机制与Linux的通信机制的差别,了解为什么Andr ...
- 进程间通信方式与Binder机制原理
1, Intent隐式意图携带数据 2, AIDL(Binder) 3, 广播BroadCast 4, 内容提供者ContentProvider --------------------------- ...
- Android中的Binder机制的简要理解
转载自:http://www.linuxidc.com/Linux/2012-07/66195.htm http://blog.csdn.net/sunxingzhesunjinbiao/articl ...
- Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6642463 在前面几篇文章中,我们详细介绍了A ...
- Binder机制,从Java到C (1. IPC in Application Remote Service)
转载请标注:张小燕:http://www.cnblogs.com/zhangxinyan 1. Application 中的 service 我们知道Android中Service有三种类型:Loca ...
- Binder机制,从Java到C (5. IBinder对象传递形式)
1.IBinder的传递 Binder IPC通信中,Binder是通信的媒介,Parcel是通信的內容.远程调用过程中,其参数都被打包成Parcel的形式來传递.IBinder对象当然也不例外,在前 ...
- Binder机制,从Java到C (6. Binder in Native : libbinder)
1.Java和C++中的Binder 从前一篇 Binder机制,从Java到C (5. IBinder对象传递形式) 中可以看到,使用Binder的Java代码,到最后都会进入到Native环境,将 ...
- 从Android源码的角度分析Binder机制
欢迎访问我的个人博客,原文链接:http://wensibo.top/2017/07/03/Binder/ ,未经允许不得转载! 前言 大家好,好久不见,距离上篇文章已经有35天之久了,因为身体不舒服 ...
- Android binder机制---概述
1.进程间通讯的原因 目前操作系统都使用虚拟存储技术,管理内存. 假设是32位机器,0-3G是用户空间,3-4G是系统使用.虚拟内存和逻辑内存都按4K分页.这样虚拟内存和逻辑内存就存在对应关系. 一个 ...
随机推荐
- pytorch 简简单单求个值
能用张量处理就用张量,不要使用for in 跑循环,一个是容易出错,一个是比较浪费时间,应用广播机制的话去做很容易的 1.5 使用mean处理平均值 2. 在处理梯度的时候无法更改自身,因此使用的办法 ...
- uni-app之返回上⼀个页⾯并传递参数(从页⾯1跳转到页⾯2,然后页⾯2返回页⾯1并且带回参数。 列如新增地址,带回经纬度和地址名称)
uni-app之返回上⼀个页⾯并传递参数 1 reBack: function() { 2 let pages = getCurrentPages(); 3 if (pages.length > ...
- ReSharp的安装和使用教程
1.ReSharp的安装及破解: (1)不多说,直接上下载链接: 链接:https://pan.baidu.com/s/1cJmTQxDS-OHmHs46Q_hbMg 提取码:shiz (2)下载好解 ...
- K8S中Pod概念
一.资源限制 Pod 是 kubernetes 中最小的资源管理组件,Pod 也是最小化运行容器化应用的资源对象.一个 Pod 代表着集群中运行的一个进程.kubernetes 中其他大多数组件都是围 ...
- 循环神经网络(Recurrent Neural Networks)(第一部分)
参考 https://www.cnblogs.com/royhoo/p/Recurrent-Neural-Networks-1.html
- Java数据类型基础
Java 数据类型基础 数据类型 强类型语言 要求变量的使用要严格符合规定,所有变量必须先定义后使用 Java数据分为两大类 基本类型(primitive type) 数值类型 整数类型 byte(1 ...
- 【node打包缺包】Error: Can't walk dependency graph: Cannot find module 'jquery' from
问题: 在使用node打包时,终端报错提示Error: Can't walk dependency graph: Cannot find module 'jquery' from/.../ 这个提示缺 ...
- SDC细节归纳
能否写出一份严谨的SDC约束文件,决定了芯片tapeout后数字电路能否正常工作,或者少一些bug.所以写好SDC约束文件,是芯片设计的关键一步. 因此,归纳.整理SDC约束的细节要点很重要,有助于减 ...
- C++ condition_variable
一.使用场景 在主线程中创建一个子线程去计数,计数累计100次后认为成功,并告诉主线程:主线程收到计数100次完成的信息后继续往下执行 二.条件变量的成员函数 wait:当前线程调用 wait() 后 ...
- React-Hook知识整理与总结
1.useState:让函数式组件拥有状态 2.useEffect:副作用,取代生命周期 3.useContext:跨组件共享数据 4.useCallback:性能优化 5.useMemo:性能优化 ...