一、Binder是什么?
1、Binder就是Android中的血管。在Android中我们所使用的activity,service等组件都需要和AMS(system_serever)通信,这种跨进程通信就是通过Binder来完成的。
机制:Binder是一种进程间通信机制。
驱动:Binder是一个虚拟的物理设备驱动。
应用:Binder是一个能发起通信的Java类。
2、多进程使用的优势:
虚拟机为每个进程分配的内存是有限的,使用多进程可以突破内存限制,功能强大的APP大多都不止一个进程。
二、Binder机制和传统IPC机制对比:
1、传统的IPC机制:

虚拟内存:通常我们程序员所说的内存都是虚拟内存。
物理内存:物理内存是硬件,如内存条等。程序中的虚拟内存会映射到物理内存。
用户空间:APP程序在进程中运行的空间。
内核空间;APP程序运行在进程中运行时,系统运行的空间。每个APP的运行不单是我们应用层开发写的代码在运行,framework层即类库层都会运行(当然不是说只要framework层运行的都在内核空间,具体哪些系统代码运行在内核空间不重要,无需深究)。
用户态:运行在用户空间时状态称之为用户态。
内核态:运行在内核空间时状态称之为内核态。
拷贝:内核态到用户态切换(或者用户态到内核态切换),切换1次称为拷贝1次。也就是copy from user、copy to user的次数
系统调用(上下文切换):cpu运行时多个线程快速切换,会保存当前的一些状态,耗时、耗资源。拷贝1次即上下文切换1次。
2、传统IPC机制与Binder机制对比:

3、Binder机制:

mmap机制:将虚拟内存映射到一块指定的物理内存,一般的映射是将虚拟内存映射到一块 随意的物理内存。区别:mmap是指定。
网友评论