Android系统启动(三)

Android从Linux系统启动主要分为4个步骤:

1、init进程启动

init进程启动后,完成引导程序。

2、Native服务启动

(1)init程序会根据init.rc和init.xxx.rc脚本文件建立几个基本服务:ServiceManager、Zygote和Void等等,最后init进程不会退出,会担当property service的功能。
服 务启动机制:解析init.rc文件内容,将service信息放置到service_list中。 restart_service_if_need(...)->service_start(...)->execve(.....)建立 service进程。

(2)ServiceManager和Zygote进程奠定了Android的基础。Zygote进程起来之后才会立起Android运行空间

(3)Zygote过程中,创建Dalvik Java虚拟机、注册Android Runtime中的JNI接口给虚拟机、呼叫java类(com.android.internal.os.ZygoteInit.java)

(4)ZygoteInit.java的main函数中,registerZygoteSocket();->proloadResources();用来加快启动速度->startSystemServer()启动SystemServer

3、System Server,Android服务启动

(1)初始化系统服务

(2)new ServerThread();创建ServerThread,在该Thread中注册各种服务到ServiceManager中,例如PowerManagerService、AlarmManagerService等

4、HOME启动

(1)在ServerThread中的后半段,启动所有Android服务后。使用XXX.systemReady()通知各个服务,系统已经准备就绪。

(2)在ActivityManagerService的systemRead()中,建立HOME,完成HOME的启动。

 

posted on 2014-06-13 20:15  张民垒  阅读(86)  评论(0)    收藏  举报