init进程简介

作为Android系统的第一个进程,init通过解析init.rc文件来陆续启动其他关键系统服务进程——其中最为重要的就是ServiceManger,Zygote和SystemServer。

1、启动ServiceManger

ServiceManger是Binder机制中的“DNS服务器”,负责域名(某Binder服务在ServiceManger注册时提供的名称)到IP地址(由底层Binder驱动分配的值)的解析。ServiceManger是一个Linux程序,它在设备中的存储路径是/system/bin/servicemanger,源码路径为/frameworks/native/cmds/servicemanger。
ServiceManger是系统的关键进程——如果进程在4分钟内异常退出超过4次,则设备将重启并进入还原模式,当ServiceManger每次重启时,其他关键进程诸如zygote、media、surfaceflinger等也会被重启。

2、启动Zygote进程

Android中大多数应用程序进程和系统进程都是通过Zygote来生成的。Zygote进程也是通过解析init.rc文件来启动的,Zygote进程预装载各种系统类,同时负责SystemServer进程的启动。

3、启动SystemServer进程

SystemServer是Android进入Luncher前的最后准备,它提供了众多由Java语言编写的“系统服务”。

参考资料

  • 深入理解Android内核设计思想. 林学森。

你可能感兴趣的:(init进程简介)