Android启动流程


介绍

Android启动流程是启动计算机以供使用的过程。可以通过打开电源来启动计算机系统。启动计算机时,它只能读取称为只读存储器的一部分存储空间。启动计算机时会启动一个小型程序,该程序存储并称为固件。它允许访问其他类型的内存,例如主内存和硬盘。固件用于加载大型程序并将其运行到计算机的主内存中。无论是在移动设备、计算机系统还是其他设备上,所有设备都会运行启动管理器。

Android的启动流程分为6个步骤,如下所示:

  • 引导ROM。

  • 引导加载程序。

  • 内核。

  • Init进程。

  • Zygote和Dalvik虚拟机。

  • 系统服务。

引导ROM

引导ROM是在系统启动时计算机电源开启时调用的步骤。当系统打开电源时,引导ROM代码开始从ROM中预定义的硬编码位置执行一组指令。引导ROM将引导加载程序加载到RAM中并开始执行。

引导加载程序

引导加载程序是在Android操作系统启动之前运行的小程序。手机制造商会在引导加载程序中设置他们的锁和限制。引导加载程序包含在启动任何操作系统之前执行的代码。引导加载程序执行以下两个步骤:

  • 在第一阶段,引导加载程序检测设备的外部RAM并在其中加载程序以用于第二阶段。

  • 在第二阶段,引导加载程序设置运行内核所需的内存和网络。

内核

Android操作系统由包含Linux内核以及一系列用户空间应用程序和库的操作系统组成。内核是操作系统的最低层,它直接与硬件交互并为用户空间组件提供基本服务。当内核完成系统设置后,它会在系统文件中查找init并启动系统的root进程或第一个进程。

Init进程

Init是Android设备上运行的第一个用户空间进程。它负责启动其他用户空间进程和服务,以及设置设备环境。此进程读取/init.rc目录中的配置文件并启动必要的服务和守护程序。Init是第一个以root权限运行的进程,它负责设置设备的安全策略、挂载文件系统和设置网络。它还启动Android运行时,该运行时负责运行Android框架和应用程序。

Zygote和Dalvik虚拟机

Zygote是一个虚拟机进程,它在系统启动时启动。当应用程序进程启动Zygote时,它会创建Dalvik虚拟机,然后调用Zygote的主方法以接收通过dev/zygote启动应用程序的请求。启动应用程序后,将触发fork()方法,该方法将创建自身的克隆以将其复制到另一个内存空间。

系统服务

当Zygote加载所有Java类和资源后,它将启动系统服务。此服务器是Android系统的核心。此系统服务加载android_servers原生库以提供对原生功能的接口。然后,原生init方法将设置调用的原生服务。创建服务后,将创建服务器线程。其余服务将根据特定顺序由线程启动。一旦系统服务开始在内存中运行,Android的启动过程就完成了,此时将触发“ACTION_BOTT_COMPLETED”操作。

结论

在本文中,我们了解了Android中的启动流程是什么,以及启动流程中包含的各种进程。

更新于:2023年2月20日

2K+浏览量

启动你的职业生涯

通过完成课程获得认证

开始学习
广告