android6.0 启动流程总览
Android系统的启动流程总体上是先启动BootLoader,再启动kernel,最后启动android。
Android启动总览图
BootLoader层
BootLoader层启动有以下任务: 当电源供电是将自身加在到RAM中,执行相应的初始化任务; 加载linux内核,并引导linux内核启动。
kernel层
BootLoader 启动 kernel 的 swapper进程,进程ID为0,是内核的第一个进程,此进程初始化系统的各个硬件及kernel系统管理模块及驱动等。 并且此0号进程启动了两个重要进程,一个是kernel_init进程,另一个是threadd 进程
Native层
从这一层进入了android 系统架构的内容。 这一层 主要是通过 init 进程进行孵化各种在 linux 系统直接运行的进程,有各种系统级服务,守护进程等,并且也正是 init 进程孵化出 android 系统java 层各个进程的祖先 Zygote进程。 其中比较重要的进程如MediaServer进程,audioflinger进程,Cameraservice进程都是由 init 孵化(fork)出来的。
Framework层
在native层之上,主要给app层提供各种功能的API。 其中systemserver进程负责启动和管理整个java framework,此进程内部包含AMS、WMS、PMS、UMS等
App层
AMS在整个framework启动完成后,启动系统第一个应用程序luancher,然后系统进入可操作状态,即整个系统启动完成,luancher系统上可点击启动的所有应用也最终都是通过AMS服务最终由zygote进程fork出各个app进程。
|