Android学习笔记Binder

105 阅读2分钟

了解Binder之前要理解的几个概念:

  1. 进程

  2. 虚拟内存&物理内存

进程

进程是系统进行资源分配和调度的基本单位,是操作系统结构的基础。每一个进程都有自己独立的用户空间。在一个android App中最少有一个进程。

虚拟内存&物理内存

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片。

物理内存就是硬件实际提供的内存空间。

IPC

ipc即进程间通信。

由于种种原因,一个App实际上并不是完全运行在一个进程中,有时会同时运行两个甚至更多的进程中,而又因为进程彼此的用户空间是隔离的,也就造成了数据无法共享的问题,这时就需要到进程间通信了。

思路:

1.通过系统内核空间,因为都是运行在同一个系统之上,而系统拥有属于自己的内核空间,我们只用把进程1的用户空间中的数据copy到系统内核空间中,再由内核空间copy到进程2的用户空间中。

但是每一次流程都需要copy两次数据。

2.既然系统为进程分配的都是虚拟内存,那可以将进程1与进程2的虚拟内存指向同一片物理空间,这样进程间就拥有了一片共享的内存空间。

这样就没有了copy的步骤。但是这样就会出现类似线程的脏数据与死锁等的问题。

Binder

binder设计时取了一个折中的办法,只copy一次进入内核空间,由内核空间与另一个进程直接

共享内存。

这样只用copy一次数据,而且由于进程直接没有共享内存也不会发生脏数据与死锁的问题。

未完成,后续补充