最近看了《深入理解Android卷I》中关于init进程与zygote进程的知识,特此写一篇博客记录一下收获。
init进程
init进程是Android系统中的用户空间的第一个进程,它的进程号是1,作为天字第一号进程,init进程需要完成很多工作,其示意图如下:
init进程的工作主要分为四步:
- 解析配置文件:解析init,rc与init,硬件名.rc(每种类型的手机有自己的硬件名),根据解析的内容执行第二步操作
- 执行各阶段操作:各种初始化操作,主要分为early-init、init、early-boot和boot四个阶段(其中zygote进程是在boot阶段通过fork与execv启动的)
- 启动属性服务:属性服务类似于Windows的注册表,可以保存一些设备上的键值对信息。主要分为在共享内存上初始化和循环处理请求两部分
- 死循环:完成以上操作后,init进程进入一个死循环检测系统中死去的进程,并负责把他们重启和进行收尾工作
zygote进程
讲完init进程我们再来提一下著名的zygote进程。zygote即受精卵