美文网首页
为什么 Binder 通信效率比传统 IPC 通信效率高?

为什么 Binder 通信效率比传统 IPC 通信效率高?

作者: 蜗牛是不是牛 | 来源:发表于2023-05-22 15:56 被阅读0次

传统 Linux 中的 IPC 通信原理:

  1. 发送进程将需要发送的数据复制到内核空间,也就是 copy_from_user 命令;
  2. 内核空间将数据从内核缓存区复制到接收进程的用户空间,也就是 copy_to_user 命令;

ㅤㅤ ㅤ ㅤ ㅤ

ㅤ 如下图:

image.png

通信一次所需要的成本为数据进行了两次的复制。

ㅤㅤ ㅤ ㅤ ㅤ

Binder 通信原理:

  1. 内核空间额外开辟出数据接收缓存区的内存,该区域对内核缓存区实现了内存映射;
  2. 发送进程发送数据时进行一次复制也就是 copy_from_user 命令;
  3. 因为存在内存映射,此时接收进程通过映射得到了内存缓存区的数据;

如下图:

image.png

通信一次所需要的成本为数据进行了一次复制。

ㅤㅤ ㅤ ㅤ ㅤ

结论:

一句话总结就是因为 Binder 只需要复制一次数据,通信成本更低,所以效率更高。下面使用生活中的例子说明:

传统 IPC 通信:

内核缓存区是一个 U 盘,使用 U 盘在两个不同电脑传输文件,需要先把ㅤ”发送进程“ㅤ的文件复制到 U 盘,然后把 U 盘的数据复制到ㅤ”接收进程“ㅤ的电脑。

Binder 机制:

内核缓存区是一个 U 盘,数据接收缓存区是一面可以直接看到 U 盘里面内容的ㅤ”镜子“,或者可以想象成神奇博士里面的传送门。当ㅤ”发送进程“ㅤ电脑把文件复制到 U 盘,“接收进程”ㅤ电脑通过ㅤ”镜子“ㅤ或者ㅤ“传送门”ㅤ可以立刻看到 U 盘里面的数据。

image.png

ㅤㅤ ㅤ ㅤ ㅤ

ㅤㅤ ㅤ ㅤ ㅤ

ㅤㅤ ㅤ ㅤ ㅤ

相关文章

网友评论

      本文标题:为什么 Binder 通信效率比传统 IPC 通信效率高?

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