Android binder

本文介绍了Android中采用的Binder机制作为进程间通信的方式。Binder机制相比传统IPC方式如socket和管道等,提供了更高的效率和安全性。文章详细解释了Binder机制的工作原理,包括其四大组成模块:Client、Server、ServerManager及BinderDriver的作用。

Linux 进程通信方法:socket     信号量    管道     共享内存    消息队列。

但是Android 选择了 binder 机制。

可能原因:Socket 开销大 且效率不高;管道和队列copy次数太多。传统的IPC通信机制安全性较低,无法得到发送进程方可信的PID/UID ,难以甄别身份。

Binder 保证了安全性和效率。

 

binder 机制 四大模块:

Client     Server     ServerManager      BinderDriver  

client & server 为用户实现部分。

BinderDriver 运行于内核空间,以字符设备中的misc类型注册。可以从/dev/binder/设备文件节点上,通过open和ioctl文件操作函数与binderDriver 通信。

其主要负责通信的建立,以及其在进程间的传递和binder 引用计数管理、数据包的传输等。

client 与server 之间的跨进程通信则统一通过binder driver 处理转发。

 

运行机制:

ServerManager 相当于DNS; 是一个引用号为0 的binder server。

clinet 先通过引用号0 ,向server Manager 去查询需要的binder的引用号。

binder server 会封装好数据后,向binder driver 查询,并返回数据,最终再返回给client;

 

参考:

 

Android 源码设计模式 P340

 

转载于:https://my.oschina.net/u/592116/blog/968107

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值