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分页.这样虚拟内存和逻辑内存就存在对应关系. 一个 ...
随机推荐
- cesium 入门指南
最近拿到了几份offer,经过这次找工作发现自己最近脱节挺严重,为了后续的职业发展,决定开始书写博客记录自己的努力. cesium属于 跨平台.跨浏览器的展现三维地球.地图的JavaScript库. ...
- awk统计命令
求和 cat file|awk '{sum+=$1} END {print "Sum = ", sum}' cat file|awk '{sum[$1]+=$2}END{for(c ...
- heimaJava-网络编程
Java 网络编程 概念 网络编程可以让程序与网络上的其他设备中的程序进行数据交互 网络通信基本模式 常见的通信模式有如下两种形式,Client-Server(CS),Browser/Server(B ...
- 在LaTeX中使用BibTeX时的一个问题及其解决:编译PDF不随bib文件更新
问题:更新bib文件之后,编译tex文件输出的PDF文件没有相应的更新. 原理: bbl文件才是引文的信息,bib文件只是用于生成bbl文件的一个"数据集"而已. 一般来说,LaT ...
- 关于css在html的三种使用方式
关于css在html的三种使用方式 1.内联样式(直接在html里面使用style) eg:<h1 style="color:skyblue">这是一个测试标题< ...
- SQL相关知识点
一.基本概念 数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件). 数据表(table) - 某种特定类型数据的结构化清单. 模式(schema) - 关于 ...
- 【随笔】记录Centos7 firewall-cmd防火墙的文档与命令记录
注意:firewall-cmd命令后面的参数前面是两个短-,这里显示的不是很清晰 查看firewall-cmd运行状态 # firewall-cmd --state 开放8080端口 # firewa ...
- jQuery.extend 函数详解(转)
地址:http://www.jb51.net/article/29591.htm JQuery的extend扩展方法: Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些 ...
- Redis学习(黑马篇)
1.redis是一个键值型数据库即在Redis内存的数据都是键值对的格式,如: 2.NOSQL非关系型数据库与MySQL关系型数据库对比: 非结构化类型分为:键值类型(Redis)(value支持多种 ...
- Github说明--如何在Github里面上传自己的代码
1.注册一个账号 这是必须的啦!不清楚注册步骤的,可以去看看我之前的博客,里面的步骤也是挺详细的呢! 2.进入到用户主界面 我们会看到这样的一个+标识: 选择其中的New Repository选项,点 ...