安卓手机从按下电源键那一刻开始系统都做了什么?

  1. Boot Loader 加载阶段

Boot Loader 是在物理电源按下之后第一个加载的。绝大部分的设备,在此阶段都会运行一些制造商自定义的初始化代码,如启动Clock、RAM、Media等,并提供加载Recovery Image和进行Download Mode的支持。Boot Loader内部也是分为多个阶段的,在此我们不再详细讨论。

  1. 加载Kernel 与initrd阶段

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

  1. 初始化设备服务阶段

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

  1. 加载系统服务阶段

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

  1. 虚拟机初始化阶段

其中启动的Zygote进程会创建Dalvik VM,会启动第一个Java组件系统服务,最后是AndroidFramework服务,如Telephone Manager、Activity Manager、Window Manager、Package Manager。

  1. 启动完成阶段

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

猜你喜欢

转载自blog.csdn.net/qq_41100456/article/details/130111356