美文网首页
谈谈对Zygote的理解

谈谈对Zygote的理解

作者: Nick_千纸鹤 | 来源:发表于2019-10-22 18:08 被阅读0次
  1. 了解Zygote的作用
  • 启动SystemServer
  • 孵化应用进程
  1. 熟悉Zygote的启动流程

启动三段式

  • 进程启动
  • 准备工作
  • Loop循环(不停地接收消息与处理消息,消息可能是socket发过来的,也可能是MessageQueue中的消息,也可能是Binder驱动发送过来的消息)

Zygote的启动流程

  • 进程是如何启动的? init进程会加载init.rc启动配置文件,会启动已配置的系统服务,zygote就是所需要启动的服务之一,除了Zygote进程还有ServiceManager进程等,Zygote是由Init进程通过fork+execve系统调用启动的。
  1. 深刻理解Zygote的工作原理

启动进程的两种方式

  • fork+handle
  • fork+execve

信号处理-SIGCHLD

  • 父进程fork子进程,如果fork失败,父进程会收到SIGCHLD信号,并做相关处理。

Zygote进程启动之后做了什么?

  • Zygote的Native世界(为了之后进入java世界做准备)1、启动Android虚拟机 2、注册Android的JNI函数 3、进入Java世界
  • Zygote的java世界1、预加载资源,如主题资源、共享库等 2、fork SystemServer 3、进入LOOP循环,等待socket消息

要注意的细节

  • Zygote fork要单线程
  • Zygote的IPC没有采用Binder,而是采取的socket

相关文章

网友评论

      本文标题:谈谈对Zygote的理解

      本文链接:https://www.haomeiwen.com/subject/gwccvctx.html