1. init 进程启动过程
1.1 引入 init 进程
首先了解 Android 系统启动流程的前几步,以引入 init 进程。
1. 启动电源以及系统启动
2. 引导程序 BootLoader
3. Linux 内核启动
4. init 进程启动
-
init 进程是其子进程的守护进程,在子进程终止时守护进程会收到通知对终止事件进行处理。一般是清理子进程占用的资源防止僵尸进程的产生,占用系统进程表。Zygote 进程终止之后,init 进程会重启 Zygote 进程。
-
Android 系统中用户空间的第一个进程,进程号为 1。
-
创建 Zygote 和属性服务。
-
创建和挂载 tmps、devpts、proc、sysfs、selinuxfs 5 种文件系统,这些都是系统运行时目录。
-
启动属性服务,属性服务与注册表类似,提供了对于系统属性修改与查询的能力,属性服务启动后会分配内存储存属性,可在初始化与其他阶段直接读取。
1.2 init 进程的入口函数
僵尸进程与危害
1.3 解析 init.rc
1.4 解析 Service 类型语句
1.5 init 启动 Zygote
1.6 属性服务
1.7 init 进程启动总结
2. Zygote 进程启动过程
2.1 Zygote 概述
2.2 Zygote 启动脚本
Zygote 有 zygote32、zygote64、zygote32_64(主32辅64两个进程)、zygote64_32(主64辅32)四种模式。
2.3 Zygote 进程启动过程介绍
2.4 Zygote 进程启动总结
3. SystemServer 处理过程
SystemServer 进程主要用于创建系统服务。
3.1 Zygote 处理 SystemServer 进程
3.2 解析 SystemServer 进程
3.3 SystemServer 进程总结
启动 Binder 线程池,用于与其他进程通信(注意:Binder 线程池在 SystemServer 进程中,而不是 Zygote 进程,Zygote 进程必须保持单线程。)