Android系统浅析-zygote进程

502 阅读1分钟

任何系统启动过程的本质就是建立一套系统运行环境,zygote进程主要负责的就是创建Android App的运行环境。

zygote进程是所有应用进程的父进程。与其他本地服务不同,Zygote类是Java类,所以必须先启动一个Dalvik虚拟机,然后再在Dalvik虚拟机上装载运行ZygoteInit类的main函数,这个一过程是由app_process完成的,所以zygote是系统的第一个Dalvik虚拟机程序。

Zygote进程包含三个部分:

(1)创建Socket服务端:用于启动新的Dalvik进程,主要是用于孵化App进程

(2)加载Framework共享类和共享资源:zygote进程启动后,装载一些共享类和资源,因为zygote进程用于孵化其他Dalvik进程,因此,这些类和资源装载后,新的Dalvik进行就不需要再装载了。

(3)孵化SystemServer进程: SystemServer中创建了一个Socket客户端,并且由ActivityManagerService负责管理该客户端,所有的Dalvik进程都是由该客户端间接进行启动,当需要新的应用进程时,ActivityManagerService会通过该Socket客户端想zygote进程的Socket服务端发送一个启动命令,然后zygote就会孵化出新的进程。


参考:

Android内核剖析

Android框架解密