《android_framework系列_Zygote的启动》

1.Zygote的作用是什么

  • 1.启动SystemServer
  • 2.孵化应用进程

2.Zygote的启动流程

先理解进程启动的基本流程:

  • loop循环就是接收各种消息处理消息。

3.Zygote的进程启动

接下来看下进程是如何启动的,以及启动完进程后,它做了哪些工作

  • 1.首先启动init进程,它是Linux系统启动之后,用户空间的第一个进程。

  • 2.启动后加载配置文件(init.rc),检查配置文件中需要启动的系统服务。Zygote就是要启动的服务之一。

    上面是从网上找到的配置文件中关于zygote相关的一部分代码图片
    红色的是要启动的服务名称
    蓝色的是启动它的可执行程序的路径
    黄色的是相关参数

  • 3.init进程启动服务有2种方式:

    • 1.都是调用fork函数,创建子进程
    • 2.子进程中,pid返回的是0,父进程中返回的是子进程的pid,所以可以通过这一点来判断是否是在子进程。
    • 3.子进程在创建的时候会默认继承父进程的所有资源,但是如果在子线程中调用了execve加载另一个二进制程序的话,继承的父类进程的资源就会被清掉,被新的二进制程序替换掉。

    信号处理

3.Zygote的准备工作

4.Zygote的LOOP循环

每当有消息到来的时候,就会调用这个函数,

  • 1.先读取参数列表。
  • 2.根据参数启动子进程
  • 3.在子进程中工作,调用handleChildProc()方法,这个方法其实就是调用ActivityThread.main()函数。
    其实每当进程启动之后就会调用ActivityThread.main()函数

5.总结

在这里插入图片描述

发布了30 篇原创文章 · 获赞 78 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/u010302765/article/details/90180132