android--系统启动--Zygote进程启动过程

一、作用
用于创建DVM或ART、应用程序进程,运行系统关键服务的SystemServer进程

二、创建进程方式
采用fork(复制进程)方式创建进程,被创建的进程都是复制Zygote的main()函数 所执行的所有代码,所以被创建的进程 都会有DVM和ART的副本。

三、Zygote根据系统32/64位,自身也区分32、64位
(1)Zygote启动多少位是由脚本决定的,启动Zygote的脚本是init.rc 文件中由import类型语句引入
(2)init.rc 的service 类型语句被解析成对象时,放入init进程的Service队列中时,就已经将Zygote真正的多少位封装到Service内部中了。

四、Zygote启动过程

在这里插入图片描述

如图所示:启动过程

Zygote启动后做了那些事以及作用
(1)init进程 创建子进程 通过轮训server队列 找到Zygote的执行路径,已经对应main函数,然后通过AndroidrunTime 的start方法 在子进程启动Zygote。
(2)在AndroidRuntime 中创建java虚拟机,并且为此java虚拟机注册JNI方法,
(3)在AndroidRuntime中通过JNI调用ZygoteInit的main方法,因为ZygoteInit是由java实现,在此处也就是表明了 在Zygote进程中是系统中第一次实现与java层调用对接。
(4)在Zygoteinit中会创建一个Socket的服务,这个Socket用于Zygote接受AMS发送创建进程的请求,所以Zygote创建新的进程是通过Socket接受消息实现的。
(5)在Zygoteinit中会创建通过注册的Socket的,并调用socket的轮训方法,等待AMS的请求创建新的进程
(6)在Zygoteinit中会做加载类和资源的的动作,不太清楚用处。
(7)在Zygoteinit中会将 Systemserver 进程启动

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值