Android启动流程

2016-10-16  本文已影响360人  zthh

《Android安全技术揭秘与防范》读书笔记


在讲述Android启动过程前,先简单介绍一下Android的层次结构和分区结构

Android系统的层次结构

整体架构分为如下4层

Android系统的分区结构

分区是逻辑层存储单位用来区分设备内部的永久性存储结构。不同厂商和平台有不同的分区布局。然而,有几个分区最常见,即Boot、Data、Recovery和Cache分区。通常的情况下NAND闪存的设备都具备一下分区布局

Android启动流程

主要分为6个阶段:BootLoader加载阶段、加载Kernel与initrd阶段、初始化设备服务阶段、加载系统服务阶段、虚拟机初始化阶段、启动完成阶段。

Android系统启动流程

-Boot Loader阶段
Boot Loader是在物理电源按下之后第一个加载的。在此阶段会运行一些制造商自定义的初始化代码。Boot Loader内部也分为多个阶段,对此不做深入讨论。

-加载Kernel与initrd阶段
Boot分区加载Linux kernel与initrd到RAM,最后跳转到Kernel继续完成启动。

-初始化设备服务阶段
Android kernel则会启动所有Android系统设备所必须的服务,如初始化Memory、初始化IO、内存保护、中断处理程序、CPU调度、设备驱动,最后还会挂载文件系统,启动第一个用户进程init。

-加载系统服务阶段
init是Linux系统中用户空间的第一个进程,其进程PID是1,父进程为Linux Kernel核的0号进程。init具有特殊的初始化使命,它会加载一个初始化脚本文件init.rc,启动Android系统的一些核心服务,如针对通话的rild、针对VPN链接的mtpd、提供adb相关功能adbd、支持存储外设的热插拨功能vold、负责进程孵化服务的Zygote、Service Manager等。

-虚拟机初始化阶段
其中启动的Zygote进程会创建Dalvik VM,会启动第一个Java组件系统服务,最后是Android Framework服务,如Activity Manager、Package Manager、Window Manager

-启动完成阶段
当系统完成启动之后,载入Home(桌面应用程序),然后做一些应用层的初始化的工作,如播放一个全局的广播ACTION_BOOT_COMPLETED.

上一篇下一篇

猜你喜欢

热点阅读