Android 系统首次启动过程详解239
1. BIOS 自检
当设备首次启动时,BIOS(基本输入/输出系统)会执行一个自检程序,称为 POST(开机自检)。POST 会检查硬件组件(例如内存、硬盘和显卡)是否正常运行。如果检测到任何问题,BIOS 会停止启动过程并显示错误消息。2. 引导加载程序
如果 POST 成功,BIOS 会将控制权交给引导加载程序。引导加载程序是一个小型程序,负责从存储设备(例如 eMMC 或 SD 卡)加载操作系统内核。3. 内核加载
引导加载程序将内核加载到内存中。内核是操作系统的核心,负责管理硬件资源、进程调度和内存管理。4. 初始化设备
内核加载后,它会初始化设备硬件,例如显示器、键盘和网络接口。此过程称为硬件抽象层 (HAL),允许操作系统与不同的硬件平台交互。5. 启动 init 进程
内核启动一个名为 init 的特殊进程。init 进程是 Android 操作系统的所有其他用户空间进程的父进程。6. 执行
init 进程执行 / 脚本,该脚本包含有关如何启动和停止各种系统服务的说明。 脚本因设备而异,但通常包括启动以下服务:* Zygote* System Server* Window Manager* Activity Manager7. Zygote 启动
Zygote 是一个特殊的进程,负责为所有其他 Android 应用程序创建进程。Zygote 分叉自身并执行新创建的进程中每个应用程序的 main() 函数。8. System Server 启动
System Server 是管理 Android 框架的关键进程。它提供对系统服务(例如 Activity Manager 和 Window Manager)的访问。9. Window Manager 启动
Window Manager 负责管理屏幕上的窗口。它控制窗口的显示、大小和位置。10. Activity Manager 启动
Activity Manager 负责管理 Android 应用程序的生命周期。它启动、暂停和停止应用程序,并维护堆栈以跟踪正在运行的应用程序。11. 启动默认应用程序
一旦所有必要的服务都启动,系统就会启动默认应用程序,通常是启动器应用程序。12. 用户解锁
如果设备已加密或设置了锁屏密码,系统会提示用户解锁设备。解锁完成后,系统将继续加载用户界面。13. 用户界面加载
用户界面是由 Activity Manager 加载的应用程序。它提供了一个图形界面,允许用户与设备交互。14. 应用启动
用户可以启动其他应用程序,这些应用程序随后将由 Activity Manager 加载。每个应用程序都在自己的独立进程中运行。15. 持续运行
一旦系统启动并运行,它将持续运行,直到用户关机或重启设备。操作系统会不断监控硬件和软件事件,并在需要时采取相应措施。2024-11-05