Android系统启动Zygote
发布时间
阅读量:
阅读量
最近在研读Android9.0中PackageManagerService的源代码时,逐渐产生了一个疑问: PackageManagerService究竟是如何被初始化的。经过查阅资料发现,这一组件是由SystemServer负责启动的。随之而来的新问题是,SystemServer本身又是如何被创建的?通过逐步跟踪代码逻辑,发现SystemServer实际上是通过zygote进程进行fork操作生成的。为了梳理近期所掌握的相关知识,遂整理成文(若继续深入追踪,会发现zygote进程本身也是由init进程fork而来的)。
zygote 的定义与特性
从简要的表述来看,这本质上属于一个运行流程。若进一步加以说明,则可理解为负责生成并管理其他Android应用程序运行环境的特殊进程。
zygote进程如何被创建的
在先前的讨论中,我们了解到zygote进程具备生成其他Android进程的能力,那么zygote进程本身又是如何被创建的呢?鉴于Android系统是基于Linux内核构建的,而Linux系统中首个用户级进程为init进程(其PID为1),因此可以合理推测zygote进程极有可能由init进程所生成,实际情况也的确如此。接下来我们将详细探讨zygote进程的生成流程,该流程主要包括以下几个关键步骤:
- init进程对init.rc配置文件进行解析
全部评论 (0)
还没有任何评论哟~
