SDK -  (3) - Binder

一、Linux的IPC方式

1、管道(Pipe)及有名管道(named pipe)

2、信号(Signal)

3、报文(Message)队列(消息队列)

4、共享内存

5、信号量(semaphore)

6、套接字(Socket)

 

二、Binder

Android独有的跨进程通信方式,具备传输效率较高、安全性更高、稳定性更好等特点。

1、传输效率较高 -> 传输过程数据只copy一次(通过共享内存实现),传统的pipe socket等copy2次。

数据从发送方的缓存区拷贝到内核的缓存区,而接收方的缓存区与内核的缓存区是映射到同一块物理地址的,节省了一次数据拷贝的过程。

2、安全性高 ->  通过UID建立私有通道。传统的进程通信方式对于通信双方的身份并没有做出严格的验证,比如Socket通信ip地址是客户端手动填入,很容易进行伪造,而Binder机制从协议本身就支持对通信双方做身份校检,因而大大提升了安全性。(通信双方需先去注册)

3、稳定性好  -> Binder基于C/S架构 ,Server端与Client端相对独立,稳定性较好。

 

三、原理

Binder的通信模型有4个角色:Client、 Server、ServiceManager、Binder Driver(Binder驱动),其中 Client、Server、Service Manager 运行在用户空间,Binder 驱动运行在内核空间。

1、Server&Client:服务器&客户端。在Binder驱动和Service Manager提供的基础设施上,进行Client-Server之间的通信。

2、ServiceManager(如同DNS域名服务器)服务的管理者,将Binder名字转换为Client中对该Binder的引用,使得Client可以通过Binder名字获得Server中Binder实体的引用。

3、Binder驱动(如同路由器):负责进程之间binder通信的建立,计数管理以及数据的传递交互等底层支持。

通信流程如下图

 

参考:

https://www.jianshu.com/p/57ba91db3705

http://www.360doc.com/content/19/0211/14/15700426_814240466.shtml

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值