系统学习Binder机制(一)

最近准备系统学习下Binder机制 ,在学习之前去了解了下为什么Google会使用Binder,在网上看到很多的说明,我觉得最主要还是因为有现成的为什么不用。

  • 不得不说下BeOS,因为binder就是来源于这个项目中的一个IPC组件架构
  • 后面BeOS被Palm收购了,Dianne Hackbod基于BeOS的进程通信架构自己重新实现了下,取名叫Binder并应用到PalmOS,最后也是被开源了叫Openbinder
  • 在Andy创建Android之后邀请Dianne成为安卓系统总架构师。
  • 最后了解到framework层大部分也是Dianne实现的,并且PalmOS UI就是java实现的,主要是Dianne是个美女,还是个底层工程师,大佬一人搞一机。
  • Andy为Android取名画LOGO,Dianne为系统构架点精

现在想想Android各种情况也已了然,都是不断积累和创新的过程。
吹水就到这个里了,我们继续分析下binder的好处,虽然有这些因素影响,但最终也要它足够优秀吧


来看看OpenBinder是怎么描述自己的:

OpenBinder is a system-level component architecture, designed to provide a richer high-level abstraction on top of traditional modern operating system services. The current implementation runs on Linux, but the code has run on a diverse variety of platforms, including BeOS, Windows, and PalmOS Cobalt.

再来看看它的优点:

  1. 性能;Binder传输只需要一次copy,并且开销低、速度快、耗电少
  2. 安全性;Binder机制对于通信双方的身份是内核进行校检支持的
  3. 易用性;Binder使用面向对象的方式设计,并且是C/S架构
  4. 使用简单;使于快速集成于开发系统架构组件

最后来看看它的实现:
Binder可以说它是一个分布式的RPC框架,Android就是用到本地进程通信IPC的能力。
Linux 上要实现一种IPC机制必然是要借助内核的,但是Linux的进程在用户空间是天然隔离的,只有内核空间是共享的,所以又要我们了解下mmap机制。

结局Binder是啥:
Binder 是基于OpenBinder框架用于本地IPC的进程通信框架。它使用了Linux 的mmap机制把进程的用户空间的内存映射到一个叫做 /dev/binder 内核空间的驱动设备上,这样通过用户与内核空间之间的一次copy达到数据跨进程传递的壮举。




非常感谢您花费时间阅读这份稿件,感觉有用可以分享给更多的学习者,转载请标记出处。
作者: [Alin]
时间: 2021 年 02月 25日
email:380475066@qq.com

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值