老板总是喜欢那些埋头苦干的人,可是如果方向搞错了,那么做的越多就错的越厉害。除非老板可以替员工把握方向,否则就是自我消亡!
对于android binder的分析,首先,我们要搞清楚“goole到底想用binder解决什么问题”。为了阐述这个问题,我用下面的情景来分析:
情景1:
我们都知道每一个进程都有自己的地址空间(用户空间),这个地址空间其实是虚拟的。所谓说是自己的地址空间,就是说各个进程的 地址空间其实是不相干的(假设进程A有虚拟地址0x12345678,进程B也有虚拟地址0x12345678,但是他们做指向的物理地址其实是不 一样的)。
既然进程之间是不相干的,那么难道他们之间就没有联系,其实他们之间是有联系的。为了方便进程之间的沟通,操作系统提供了各
种各样的机制来实现ipc(inter-process communication),binder其实也是ipc的一种。
c++和java都是面向对象的,有类,类产生对象。我们以java为例,假设进程A中有对象a和b。如果a要访问b,那么进程A只要获得b的引用就可以了。但是如果进程A中只有a对象,而b对象在进程B中,这时a要访问b该怎么办?goole为了解决这个问题引入了 binder机制,之所以叫binder机制,是因为它包括了 binder驱动(内核层),binder库(c,c++中间件层),与binder相关的java层。这 些层之间是紧密联系在一起的,互相协作解决了上面描述的那个问题。
这里要说明的是,解决上面所描述问题的方法当然不只有binder机制一种。至于google为什么选择binder,这个我也不知道。可 以说,binder是android最核心的东西,是android整个架构的基础。