美文网首页
Binder - 概念简介

Binder - 概念简介

作者: w达不溜w | 来源:发表于2022-03-01 22:51 被阅读0次
1、Binder是什么?
  • 进程间通信机制
  • 是一个驱动
  • Binder.java 实现了IBinder接口,具有跨进程的能力
2、使用场景

自己创建的:webview、音视频播放、大图浏览、推送
系统服务:打电话、闹钟

3、优点

内存:每个app分配的内存是有限的,多进程相当于加内存
风险隔离:crash不会影响主app进程

4、Linux进程通信有哪些

管道、信号量、socket、共享内存等
Android为什么要增加Binder?

Binder 共享内存 Socket
性能 1次拷贝 无需拷贝 2次拷贝
特点 基于C/S架构,易用性高 控制复杂,易用性查 基于C/S架构,通用接口,传输效率低,开销大
安全性 为每个APP分配UID,同时支持实名和匿名,安全 依赖上层协议,访问接入点是开放的,不安全 依赖上层协议,访问接入点是开放的,不安全
5、内存划分

内存被操作系统划分为:用户空间和内核空间,用户空间是用户程序代码运行的地方,内核空间是内核代码运动的地方,为了安全,用户空间和内核空间是隔离的。


binder内存划分.png
6、MMAP与Binder数据传输

内存映射:将一个虚拟内存区域与一个磁盘上的对象关联起来,这个过程称为内存映射(Memory Mapping)


mmap.png

1)Binder驱动创建一块接收缓存区
2)根据需要映射的接收进程的信息,实现内核缓存区接受进程用户空间地址同时映射到一个共享缓存区
3)发送进程通过系统调用copy_form_user(),发送数据到虚拟内存区域(需要拷贝1次)
4)由于内核缓存区和接收进程用户存在映射关系,相当于也发送到了接收进程的用户空间,实现了跨进程通信

相关文章

网友评论

      本文标题:Binder - 概念简介

      本文链接:https://www.haomeiwen.com/subject/lynjrrtx.html