Android系统启动流程(二)解析Zygote进程启动过程

本文详细介绍了Android系统中Zygote进程的作用及启动流程。Zygote作为孵化器,通过复制自身来创建应用程序进程和SystemServer进程,每个进程内部都会获得一个Dalvik虚拟机的实例。文章还探讨了Zygote如何通过JNI进入Java框架层以及如何等待ActivityManagerService的请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Zygote简介

在Android系统中,DVM(Dalvik虚拟机)、应用程序进程以及运行系统的关键服务的SystemServer进程都是由Zygote进程来创建的,我们也将它称为孵化器。它通过fock(复制进程)的形式来创建应用程序进程和SystemServer进程,由于Zygote进程在启动时会创建DVM,因此通过fock而创建的应用程序进程和SystemServer进程可以在内部获取一个DVM的实例拷贝。 
关于init启动zygote我们在上一篇文章已经提到了,这里就不赘述了,这篇文章主要分析Android7.0 Zygote的启动流程。

2.AppRuntime分析

3.Zygote的Java框架层

上文我们通过JNI调用ZygoteInit的main函数后,Zygote便进入了Java框架层,此前没有任何代码进入过Java框架层,换句换说Zygote开创了Java框架层。 

4.Zygote进程总结

Zygote启动流程就讲到这,Zygote进程共做了如下几件事: 
1.创建AppRuntime并调用其start方法,启动Zygote进程。 
2.创建DVM并为DVM注册JNI. 
3.通过JNI调用ZygoteInit的main函数进入Zygote的Java框架层。 
4.通过registerZygoteSocket函数创建服务端Socket,并通过runSelectLoop函数等待ActivityManagerService的请求来创建新的应用程序进程。 
5.启动SystemServer进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值