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的启动。
浙公网安备 33010602011771号