安卓Binder机制

目录

一 Binder框架

1.进程隔离:

2.为什么用binder

3.主要角色:

二 Chromium的IPC机制


一 Binder框架

参考文章:

解析Binder框架

Android——Binder机制

Binder的具体机制和原理按看上面两篇文章就差不多了(我们可以多站在大佬们的肩膀上少重复造轮子)在这里我精炼提取一些点做以记录

1.进程隔离:

用户空间和内核空间(虚拟内存)

【这个点很有意思,在32位的app上很容易出现虚拟内存OOM】

2.为什么用binder

前面两篇文章提到过,主要是性能和安全性两方面的考虑.其中性能主要是指Binder只需要一次数据拷贝,比socket这些传统IPC方式的两次拷贝效率高,共享内存虽然不需要拷贝数据,但实现方式又比较复杂

3.主要角色:

Client,Server,ServiceManager,Binder驱动

二 Chromium的IPC机制

这里我先简单介绍一下Chromium的ipc通信机制,以此和Binder可以做一个更好的对比。Chromium虽然只是一个应用,但它却拥有一套自己的IPC机制。

这是为啥呢?因为Chromium是一个多进程应用,其中主要有Browser,Render,GPU等进程。Browser进程可以理解为主进程,而Render负责网页的解析渲染排版啥的。抽象来说Render代表一个tab标签页,即是说你多开一个标签就多起一个Render进程。

Chromium作为一个跨平台的应用(个人觉得它是目前见过的最牛逼的应用,一套代码,可以编译出windows,Android,mac,linux等版本,并且是各种网页浏览的基石),每个平台系统有一套自己的IPC机制,为了规避这些差异,所以Chromium自己本身内部就采用了一套基于Socket的IPC机制。

通过前面的介绍我们大致可以了解到Chromium的一些特点,作为一个APP级别的应用,内部却自成小体系。而Android作为一个系统,Android需要管理很多应用(理论无上限),那么进程数也可以无上限计算,这么多进程的通信效率要求就更高了。

所以回过头来看Binder的架构设计,底层的核心数据传输采用的是 一次拷贝+mmap的数据传输方式,架构上采用C/S模式,所有的进程信息都由ServiceManager来管理,负责地址中转。这样的架构方式就很合理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值