Android 系统启动流程
Summary
- 启动电源以及系统启动
- 当设备通电时,引导芯片代码从预定义的地方开始执行。引导程序 BootLoader 到 RAM,然后执行。
- 引导程序 BootLoader
- 引导程序 BootLoader 时安卓操作系统开始运行前的一个小程序,主要是将系统的 OS 拉起来并运行。
- Linux 内核启动
- 当内核启动时,设置缓存,被保护寄存器,计划列表,加载驱动。在内核完成系统设置后,它首先在系统文件中寻找 init.rc,并启动 init 进程
- init 进程启动
- 初始化和启动服务属性,并且启动 Zygote 进程
- Zygote 进程启动
- 创建 Java 虚拟机并为 Java 虚拟机注册 JNI 方法,创建服务端 Socket,启动 SystemServer 进程
- SystemServer 进程启动
- 启动 Binder 线程池和 SystemServiceManager,并且启动各种服务。
- Lanucher 启动
- 被 SystemServer 进程启动的 AMS 会的启动 Launcher,Launcher 启动会将已安装应用的快捷图标显示到界面上。
一、启动 BootLoader
- 当用户按下开机键,引导芯片代码开始从预定义的地方(固定在 ROM)开始执行,加载 BootLoader 到内存中执行
- BootLoader 是操作系统内核运行之前的一小段程序,通过这段小程序初始化硬件设备,建立内存空间映射区,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做正确的环境准备,最后目标是将系统 OS 拉起并运行。
- 整个系统的加载任务都是由 BootLoader 完成的
二、加载系统内核
- 当系统内核启动时,设置缓存,被保护寄存器,计划列表,加载驱动。
- 在内核完成系统设置后,它首先在系统文件中寻找 init.rc,并启动 init 进程。
三、启动 init 进程
- init 进程是 Android 系统启动后,由内核启动的第一个用户级进程,其进程号总是 1
- Android 中所有进程都是由 init 进程创建并运行的。
- Android Init 启动过程
四、启动 Zygote
五、SystemServer 启动
六、Launcher启动
参考链接
posted @
2024-06-14 13:43
王清河
阅读(
84)
评论()
编辑
收藏
举报
点击右上角即可分享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库