Android 启动过程
简介
安卓启动过程是一个启动计算机以使用它的过程。一个计算机系统可以通过打开电源来启动。当计算机被启动时,它只能读取被称为只读存储器的部分。在启动计算机时,会启动一个小程序,该程序被储存起来,称为固件。它允许访问其他类型的存储器,如主存储器和硬盘。固件用于加载大型程序,并在计算机的主内存中运行。启动管理器在所有设备中运行,无论是移动设备、计算机系统还是其他设备。
安卓系统的启动过程有6个步骤,具体如下
- 启动ROM
- BootLoader
- Kernel
- Init
- Zygote和Dalvik VM。
- System Servers.
启动ROM
Boot ROM是在系统启动时,计算机通电后被调用的一个步骤。当系统接通电源时,Boot ROM代码开始执行一组指令,这些指令来自ROM中的一个预定义位置。Boot ROM将BootLoader加载到RAM并开始执行。
BootLoader
BootLoader是一个小程序,在Android操作系统启动前运行。手机制造商将他们的锁和限制放在启动加载器中。Boot Loader包含一个代码,在启动任何操作系统之前执行。引导加载器执行两个步骤,具体如下
- 在第一阶段,Boot Loader检测设备的外部RAM,并在其中加载一个程序用于第二阶段。
-
在第二阶段,Boot Loader设置了运行内核所需的内存和网络。
Kernel
安卓操作系统由一个操作系统组成,包括Linux内核和用户空间应用程序和库的集合。内核是操作系统的最底层,它直接与硬件互动,并为用户空间组件提供基本服务。当内核完成系统设置后,它在系统文件中寻找init,并启动根进程或系统的第一个进程。
Init
Init是在Android设备上运行的第一个用户空间进程。它负责启动其他用户空间的进程和服务,并设置设备环境。这个进程会读取/init.rc目录下的配置文件,并启动必要的服务和守护进程。Init是第一个以root权限运行的进程,它负责设置设备的安全策略,挂载文件系统,并设置网络。它还启动Android运行时,负责运行Android框架和应用程序。
Zygote和Dalvik虚拟机
Zygote是一个虚拟机进程,在系统启动时启动。当应用程序进程启动Zygote时,它就会创建Dalvik VM,然后调用Zygotes的主方法,通过dev/zygote接收启动应用程序的请求。一旦应用程序被启动,fork()方法就会被触发,它将创建一个自身的克隆,以在另一个内存空间中复制它。
System Servers
当zygote加载完所有的Java类和资源后,它将启动系统服务器。这个服务器是android系统的一个核心。android_servers本地库由这个系统服务器加载,以提供本地功能的接口。然后,本地init方法将设置调用的本地服务。在服务被创建后,服务器线程将被创建。其余的服务将按照特定的顺序由线程启动。一旦系统服务开始在内存中运行,安卓的启动过程就完成了,这时 “ACTION_BOTT_COMPLETED “动作就会被触发。
总结
在这篇文章中,我们已经了解了什么是Android的启动过程,以及启动过程中包括哪些不同的过程。