白话Android进程交互之--Binder原理
来源:互联网 发布:数据分析表怎么做 编辑:程序博客网 时间:2024/06/05 08:11
房子是由一块块砖建起来的;而操作系统也一样,是由一个个简单的模块组成。因此对待操作系统的底层原理,我们应该分解开,先看单独的功能,然后在综合起来看之间是如何配合的。很幸运的是,系统底层在设计上有很多复用的地方。因此当我们研究完一部分功能以后,再看另一部分,总会有似曾相识的感觉。
在操作系统的实现中,有关进程的问题还真不少。这是因为操作系统是以进程为单位分配资源,又牵扯到进程内的资源保护问题;因此进程之间无法直接联系。
这个模型让我想起了特务机构,特务之间是不认识的。只有一定的级别才可以;因此特务之间的连线都是通过中间人这个角色来实现的。
哈哈,你有没有发现软件的设计思想无非是照搬社会上人类已有的东西而已,压根没有什么创新。
现在回归正题,我们讨论Binder的原理。
首先,我介绍下,Linux要实现进程之间的交互大概有哪些方法。
第一种:映射一块公有的内存,以这块公有的内存为依托来实现信息交互
第二种:Socket,采用Socket实现
第三种:管道
第四种:RPc机制
以上四种是最常用的操作系统中用于进程间通信的原理,其实在系统编程中就是四种不同的API而已。
而其中可能要属内存映射速度最快了。
Binder原理就是采用内存映射的方式来进行跨进程通信的。
举个例子:进程A,进程B
进程A通过Binder映射一块内存地址a,那么A和Binder各自拥有一个指针,指向这块内存地址a;现在A和Binder都可以访问到a;
进程B通过Binder映射一块内存地址b,进程B和Binder各自拥有一个指向b的指针。现在B和Binder都可以访问到b。
那么A和B如何交互,那么很简单,通过Binder这个中间人,比如A想给B发送数据data,那么只需要采取如下操作:
准备好数据data–>将data写入内存a–>告诉Binder要将data发送给B–>Binder将data从a复制到b–>B读取b获取data.数据
就这么几步,完成了进程间的通信。
其实就是通过中间人来进行信息的传递。
- 白话Android进程交互之--Binder原理
- Android 进程之Binder
- Android之Binder通信原理
- Android底层原理之从Binder源码分析Android进程间通信过程
- Android 之 Binder与进程间通信
- Android 之 Binder与进程间通信
- Android 之 Binder与进程间通信
- Android 之 Binder与进程间通信
- Android 之 Binder与进程间通信
- Android 之 Binder与进程间通信
- Android 之 Binder与进程间通信
- Android 之 Binder与进程间通信
- Android笔记 - Binder之守护进程servicemanager
- Android 进程间通信之Binder & AIDL
- Android 之 Binder与进程间通信
- Android Binder,Android进程间通信机制原理详解
- Android多进程IPC机制——binder原理探索
- Android — Activity与Service交互之Binder总结
- Windows/MFC,C++中的TCHAR体系/char体系/WCHAR体系及其相互转换
- linux怎么设置默认启动到字符界面,而非图形界面
- 样式 控制字符宽度,隐藏或换行
- 十道海量数据处理面试题与十个方法大总结
- Linux 统计某个字符串出现的次数
- 白话Android进程交互之--Binder原理
- 最佳调度问题 解题报告
- Ubuntu 12.04 root用户登录设置
- 程序能正常下载,但是无法执行,卡在NVIC_Configuration
- query插件中(function ( $, window, document, undefined )的作用
- System.Data.SqlClient.SqlException (0x80131904): Timeout 时间已到
- 博弈论之SG函数
- 复制class文件到as中出现非法字符,需要class,interface货enum
- 121. Best Time to Buy and Sell Stock