AndroidOS之zygote与system-server进程时序图

前言

这是一篇关于AndroidOS的zygote进程的学习记录,zygote作为盘古开天辟地,许多重要的进程(以及应用进程)都是从这里“孵化”出来的,希望能够通过画图将其系统直观地呈现出来。
zygote是由init进程创建出来的,详见上一篇AndroidOS之init进程时序图

zygote-sequence-diagram.png

总结:

他的执行程序app_process main()由init进程启动,将该进程的名称设置为zygote。
它主要做了以下工作:

1.调用AndroidRuntime::start方法,使用JNI向Java中注册了许多重要的native方法。
2.通过JNI调用ZygoteInit.java的main函数。(通过JNI调用java)
3.为IPC创建本地socket服务器。(RunSelectLoop方法一直等待socket客户端连接,例如:AMS执行创建应用进程时, startProcessLocked->Process:startViaZygote)
4.fork-启动SystemServer进程。
  • 4.1 为IPC创建线程池并打开Binder驱动。
  • 4.2 很多重要的服务已经在这里启动了(三大类)!
    • 系统关键服务(System critical services):
      SSM/Installer/AMS/PowerMangerService/
      DisplayManagerService/
      PackageManagerService/
      UserManagerService

    • 核心服务(Core services):
      LightsService/BatteryService
      UsageStatsService/UsageStatsManagerInternal
      WebViewUpdateService

    • 其他服务(Other services):
      WindowManagerService/ContentService
      UsbService/InputManagerService
      VibratorService/AudioService
      BluetoothManagerService/NetworkManagementService...

下一篇启动应用程序

你可能感兴趣的:(AndroidOS之zygote与system-server进程时序图)