Android的启动流程

Android系统完成的启动流程,从系统层次角度可分为Linux系统层、Android 系统服务层、Zygote进程模型三个阶段;从开机到到启动Home Launcher 完成具体的任务细节可分为七个步骤:

1. 按下电源键进行系统启动

按下电源键,触发引导芯片,引导芯片从预定义的地方(在ROM)开始执行,加载引导程序BootLoader 到RAM中(检查RAM,初始化硬件参数)。

2. 启动 BootLoader 引导程序

引导程序 BootLoader 是在 Android 操作系统开始运行前的一个小程序,它的主要作用是将 AndroidOS 拉起来。

3. 启动 Linux 内核

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

4. 启动 init 进程

init 进程启动做了很多工作,主要是:

  • 创建和挂载启动所需文件目录;
  • 初始化和启动系统属性服务。
  • 解析 init.rc 配置文件并启动 Zygote 进程。

5. 启动 Zygote 进程孵化器

Zygote 进程启动:

  • 创建Java虚拟机并为 Java虚拟机注册JNI方法;
  • 创建服务端Socket;
  • 预加载类和资源;
  • 启动SystemServer进程;
  • 等待AMS请求创建新的应用进程。

6. 启动 SystemServer 进程:

SystemServer 进程启动:

  • 创建和启动 Binder 线程池,这样可以和其它进程进行通信;
  • 创建 SystemServiceManager,其用于对系统的服务进行创建、启动和生命周期的管理;
  • 启动系统的各种服务,包括AMS,WMS,PMS等。

7. 启动Launcher

被 SystemServer 启动的 AMS 会启动Launcher,到此 Android 启动流程结束。

简述

当按电源键触发开机,首先会从 ROM 中预定义的地方加载引导程序 BootLoader 到 RAM 中,并执行 BootLoader 程序启动 Linux Kernel, 然后启动用户级别的第一个进程: init 进程。init 进程会解析init.rc 脚本做一些初始化工作,包括挂载文件系统、创建工作目录以及启动系统服务进程等,其中系统服务进程包括 Zygote、service manager、media 等。在 Zygote 中会进一步去启动 system_server 进程,然后在 system_server 进程中会启动 AMS、WMS、PMS 等服务,等这些服务启动之后,AMS 中就会打开 Launcher 应用的 home Activity,最终就看到了手机的 “桌面”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容