IPC全称为Inter-Process Communication 进程间通讯 ,android的底层是linux,但是linux ipc却没有binder这种方式 ,我们先讨论linux的进程间的通讯方式还有Android没有选择其中一种的原因:1.socket 不安全可以中途篡改,性能问题 ,网络通信的socket的性能你应该有了解,它的机制决定了它的性能 2. 管道 是一对一的,进程间的多对多的关系,每一个进程提供服务server给所有的client使用,每个进程也都可以是s或者是c。3,共享空间,性能良好,但没有隔离,不安全。4file 你想想读写file的性能,咱就不聊它了。 那接着就抛出一个问题,Binder的原理,你这么牛,靠的什么原理,网上说的都是一次拷贝。 但我看完,也是一脸懵逼,以我的智商不应该啊,肯定是讲的人的问题,哈哈!能不能有一版能讲得清楚的讲解。 重点在于mmap 的 内存映射,他能保证用户内存通过映射的地址,来操作系统空间的数据,从而只需要copy_from_user() 来把内存映射的数据传到系统空间。下面是传统ipc通讯和binder的对比图。可以更直观的表达一次拷贝。



