对于 Binder 进程间通信的理解

111 阅读1分钟

未命名文件 (2).png

  • 进程 2 调用 mmap 与内核空间建立内存映射(即虚拟空间 A 和 B,并未在物理内存空间分配)
  • 得知即将发送的数据大小,分配物理内存空间 C
  • 将刚刚分配出来的物理页映射到进程2 的 A/B 区域中(由于 进程1 处于内核态,因此可以操作 进程2 的 PTE)。
  • 将用户空间的发送数据通过 copy_from_user 拷贝到内核区域 B 中。
  • 由于A/B映射到同样的物理页,因此 B 中的数据也可以通过 A 的地址读取出来

参考: Binder | 内存拷贝的本质和变迁