android技术内幕心得

这本书开头就介绍了android的初始化过程

执行流程是这样的

--Linux基础系统,

--Linux Kernel(linux内核)

--Init(初始化进程)                             --(同时启动)Zygote(进程)

          --daemons(守护进程)                               --初始化Dalvik虚拟机实例

                        --usbd(USB守护进程)                      --装载Socket请求所需的类和监听    

                    --adbd(adb守护进程)                      --创建虚拟机实例来管理应用程序的进程

                    --rild(无线守护进程)                        


接着

--runtime(初始化runtime进程)

                --初始化服务管理器(ServideManager)

                --注册服务管理器,并作为默认Binder服务的Context管理器

--runtime--初始化完成后发送请求到Zygote-->由Zygote为系统服务进程建立虚拟机实例并启动系服务(其实这里应该先启动Dalvik VM的吧—_—)(System Server)


接着

系统服务启动原生服务(主要是:Surface Flinger 和 Audio Flinger)

并注册到服务管理器(Service Manager)以作为IPC服务的对象

然后

系统服务再启动 Android 管理服务,Android 管理服务被注册到服务管理器上(即Service Manager)

系统将所有的服务都加载到Service Manager(所有服务都加载完)后,就处于等待状态了,这个等待状态具体是怎样的我不是很清楚,也许书本后面会讲解到吧

总之,现在这个状态已经可以运行应用程序了,每一个应用程序都将被分配一个单独的进程,如果不通进程之间需要通信,可以使用IPC机制(以后会补充)


总结

      这篇博文是我自己对《Android技术内幕--系统卷》的第一节android启动知识的总结,主要是将Android启动流程用文字的形式表达了出来,这本书我会继续看下去,所以这篇博文我也只是写了个开头而已,如果有前辈能屈尊指点一二,我将不胜感激!

____________________________________________________________________________________

简单理解android 系统层通过Binder机制与其他进程通信的原理,Binder机制类似于CS架构,即客户端和服务器

服务器在向ServiceManager注册后就可以提供ipc服务了

通信过程:

1、客户端首先建立一个进程代理对象

2、客户端将请求发送到代理对象上

3、代理对象通过Binder驱动将请求转发给服务器

4、服务器处理...

5、服务器将处理结果通过Binder传回给代理对象

6、客户端从代理对象获取结果

7、结束

————————————————————————————————————————————————————

今天大致浏览了这本书,感觉大部分都是在讲android框架中HAL层的实现,后来才发现,这本书还有一部姊妹版,叫做Android技术内幕-应用卷,对于长期从事应用开发的我来讲,或许这是更好地选择吧(其实是系统篇我看不懂),不过系统篇让我接触了许多底层的知识,包括内存、虚拟机这部分,都让我感到获益匪浅。





                    

你可能感兴趣的:(android,架构,底层)