Binder 原理概述

一,Android为什么要采用binder机制?

1,android是基于linux上运行的系统,在Linux中有管道,共享内存,socket,File进行进程间通信。
2,进程的本质是什么?进程的本质是掌握一片内存资源的程序。管道通信是怎么进行进程间通信的,当我们想要将数据从进程A发送到进程B时,需要先将数据从进程A拷贝到管道,再从管道中拷贝到进程B.
3,那么android为什么不用管道通讯,这样效率不高,要经过两次拷贝。
4,两个进程共享内存效率最高,但是牺牲了安全。
5,Socket 是用C/S模型,需要两次拷贝,效率太低,依赖上层协议,访问接入点是开放的,安全性低。
6,相比较而言binder效率最高,只需进行一次拷贝,基于C/S架构,为每个app分配UID,同时支持实名和匿名安全性最高。

1,binder是用户空间拷贝到内核空间。
2,MMU提供给CPU的地址叫虚拟地址,MMU提供给内存的是物理地址。
3,MMU内有页表,key value,一个虚拟地址对应一个物理地址。
4,binder携带最大数据量:1M-8K;8K是请求头的体积。

二,Binder的调用?

1,原本进程间通信,是通过copy_from_user先从用户空间拷贝到内核空间,内核空间再找到需要数据的用户,再通过copy_to_user从内核空间拷贝到用户空间。
就好像用户A要给用户B送苹果,用户A先把苹果送给快递员,就是从用户空间拷贝到内核空间,发生一次拷贝,再由快递员把苹果送给用户B,从内核空间拷贝到用户空间,发生一次拷贝,总共发生两次拷贝。
2,而Binder是怎样做的,Binder这个快递员给每个用户提供一个快递柜,这个快递柜属于快递公司所有,而每个用户又会和快递柜签署一份使用协议,准确来说这个快递柜既属于快递公司又属于每个使用的用户。
这样用户A要把苹果送给用户B,用户把苹果交给快递员,发生一次拷贝,快递员找到用户B发现他有快递柜,就把苹果放进快递柜,因为快递柜属于快递公司,所以不需要发生拷贝,用户B因为与快递柜签有协议,所以直接从快递柜中获取,也不需要发生拷贝。
3,快递柜就相当于一个内核映射表,一个虚拟地址映射着一个真正的物理地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值