Android 自启动过程学习

Android 系统启动流程

Summary

  1. 启动电源以及系统启动
    1. 当设备通电时,引导芯片代码从预定义的地方开始执行。引导程序 BootLoader 到 RAM,然后执行。
  2. 引导程序 BootLoader
    1. 引导程序 BootLoader 时安卓操作系统开始运行前的一个小程序,主要是将系统的 OS 拉起来并运行。
  3. Linux 内核启动
    1. 当内核启动时,设置缓存,被保护寄存器,计划列表,加载驱动。在内核完成系统设置后,它首先在系统文件中寻找 init.rc,并启动 init 进程
  4. init 进程启动
    1. 初始化和启动服务属性,并且启动 Zygote 进程
  5. Zygote 进程启动
    1. 创建 Java 虚拟机并为 Java 虚拟机注册 JNI 方法,创建服务端 Socket,启动 SystemServer 进程
  6. SystemServer 进程启动
    1. 启动 Binder 线程池和 SystemServiceManager,并且启动各种服务。
  7. Lanucher 启动
    1. 被 SystemServer 进程启动的 AMS 会的启动 Launcher,Launcher 启动会将已安装应用的快捷图标显示到界面上。

一、启动 BootLoader

  1. 当用户按下开机键,引导芯片代码开始从预定义的地方(固定在 ROM)开始执行,加载 BootLoader 到内存中执行
  2. BootLoader 是操作系统内核运行之前的一小段程序,通过这段小程序初始化硬件设备,建立内存空间映射区,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做正确的环境准备,最后目标是将系统 OS 拉起并运行。
  3. 整个系统的加载任务都是由 BootLoader 完成的

二、加载系统内核

  1. 当系统内核启动时,设置缓存,被保护寄存器,计划列表,加载驱动。
  2. 在内核完成系统设置后,它首先在系统文件中寻找 init.rc,并启动 init 进程。

三、启动 init 进程

  1. init 进程是 Android 系统启动后,由内核启动的第一个用户级进程,其进程号总是 1
  2. Android 中所有进程都是由 init 进程创建并运行的。
  3. Android Init 启动过程

四、启动 Zygote

五、SystemServer 启动

六、Launcher启动

  • 被SystemServer进程启动的AMS会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到界面上。
  • Android Launcher 启动流程

参考链接

posted @ 2024-06-14 13:43  王清河  阅读(71)  评论(0编辑  收藏  举报