美文网首页
为什么 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