Binder机制

2021-02-25  本文已影响0人  NengLee

Binder

在理解Binder机制之前,需要知道Binder是做什么的,在进程之间通信称作IPC,那么Binder是进程通信的一种解决方案,因此是具有跨进程通信能力。

进程间通信

Binder与传统的IPC对比:

Binder 共享内存 Socket
性能 拷贝一次 无需拷贝 拷贝俩次
特点 基于C/S架构,易用性高 控制复杂 基于C/S架构,效率低,开销大
安全性 为每个App分配UID,支持实名和匿名 依赖上层协议,访问接入点是开放不安全 依赖上层协议,接入点是开放不安全

引入内存划分的概念,分为俩种:

  1. 用户空间:程序代码运行的地方
  2. 内核空间:内存代码运行的地方

为了保证安全它们之间是隔离的,即使用户的程序崩溃,内核也不受影响

传统IPC传输数据通信

  1. 发送数据
  2. 通过系统调用 copy_from_user 将数据从用户空间 copy 到内核缓存区【1次copy】
  3. 通过系统调用 copy_to_user 将数据从内核空间 copy 到用户空间【2次 copy】
  4. 接收数据
image-20210207144719173.png

Binder传输数据

Client / Service 架构中

通信步骤:

  1. Binder驱动在内核空间创建一个数据接收缓存区
  2. 建立内核缓存区和数据接收缓存区之间的映射MMAP
  3. 发送进程通过copy_from_user函数把数据拷贝到内核缓存区中。
  4. 相当与拷贝到内核缓存边映射到接收进程的用户空间Dev
上一篇 下一篇

猜你喜欢

热点阅读