美文网首页
谈谈对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