android 系统的开机启动流程源码解析(从linux 内核到android Launcher 启动)

android 系统的启动流程源码解析

最近在看Android 源码,在看Android 系统的启动流程这部分,Android 的启动大致可以分为以下几个部分,后续我也会对其中的几个重要的部分单独在几篇文章里面介绍。

android 系统的启动流程主要有以下几个重要的过程:
1.启动电源以及系统启动

当电源按下时,引导芯片代码从预定义的地方开始执行,加载引导程序BootLoader 到RAM 中,然后执行

2. 引导程序bootLoader

引导程序BootLoader 是在Android 系统中运行的第一个程序,相当于Windows 的BIOS,它主要作用是把系统拉起来并运行。当 Linux 内核启动后会初始化各种软硬件环境,加载驱动程序,挂载根文件系统,Linux 内核加载的最后阶段会启动并执行第一个用户空间进程 init 进程。

3.Linux 内核启动

都知道android 系统是基于linux 的基础上来实现的。所以在android 系统启动之前,会先启linux 内核。当内核启动时,设置缓存,加载驱动,在内核完成系统设置后,它会首先在启动init 进程。

4. init 进程启动

init进程是android 系统的头号进程,因为他PID号为0,init 进程主要用来解析init.rc 文件,维护属性服务property service。以及用来启动Native 进程,例如,media,Zygote,surfaceflinger,servicemanager 进程。

5.启动开机动画

surfacefinger 进程启动它来播放开机动画

6.启动Zygote 进程

init 进程启动孵化进程 Zygote,Zygote进程如其名字一样,会去孵化一些系统的关键进程和应用程序进程,如,SystemServer。同时也会创建DVM和ART。

7. 启动Systemserver 进程

Zygote 孵化出Systemserver 进程,Systemserver又会创建出Android 系统java 层的核心服务,如AMS,PMS等。

8. 启动Launcher

启动主页Launcher,AMS 去启动主页的Launcher 界面

9.停止开机动画

当Launcher 启动完成后,会关闭开机动画,到此。android 系统也完全启动了。

你可能感兴趣的:(Android,系统)