Skip to content
阅读进度

Zygote 和 SystemServer 是怎么启动的? ​

返回 Framework 与系统服务 目录

标准回答 ​

设备先经过 Bootloader、内核和 init。init 根据 rc 配置启动 app_process,进入 Zygote 初始化,预加载部分常用类和资源,并建立用于接收进程创建请求的 socket。主要 Zygote 启动 system_server,SystemServer 再通过 SystemServiceManager 按启动阶段初始化系统服务,并进入运行循环。应用进程一般由 Zygote fork 并进行 UID、GID、SELinux 等身份配置,这能复用预加载内容和写时复制页。部分设备启用 USAP 进程池,所以不能把所有应用创建都描述成收到请求后才现场 fork。

延伸追问 ​

ServiceManager 负责 Binder 服务的注册与发现,SystemServiceManager 管理 Java 系统服务启动和启动阶段,两者职责不同。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。