android中的binder是一种利用RPC(Remote Procedure Call)机制的进程间通信框架;
RPC通信框架基于IPC通信框架;
IPC:跨进程传输数据,利用linux中内核空间可以共享数据的特性来传输数据,进程A将数据从用户空间拷贝至内核空间中(copy_from_user),进程B将内核空间的数据拷贝至用户空间(copy_to_user),这样便完成了一次数据的跨进程传输;
binder为了优化数据拷贝,利用mmep将进程B的用户空间与内核空间进行映射,使得用户空间与内核空间指向同一个物理空间,这样进程A只需要一次copy_from_user便可直接访问到进程B的数据;
binder的优势在于,相对于管道、消息队列、socket来说,它仅需要一次拷贝便可完成数据传输,在传输效率方面仅次于数据共享,但是相对于数据共享,binder更加安全;