zoukankan      html  css  js  c++  java
  • Android核心分析 之九Zygote Service

        Zygote Service
      在本章我们会接触到这两个单词:
      Zygote [生物] 受精卵, 接合子, 接合体
      Spawn:产卵
      通过这两个单词,我们就可以大体知道Zygote是干什么的了,就是叫老母鸡下蛋。通过“Zygote”产出不同的子“Zygote”。从大的架构上讲,Zygote是一个简单的典型C/S结构。其他进程作为一个客服端向Zygote发出”孵化”请求,Zygote接收到命令就“孵化”出一个Activity进程来。
                         



      Zygote系统代码组成及其调用结构:
      Zygote.java

      提供访问Dalvik “zygote”的接口。主要是包装Linux系统的Fork,以建立一个新的VM实例进程。
      ZygoteConnection.java

      Zygote的套接口连接管理及其参数解析。其他Actvitiy建立进程请求是通过套接口发送命令参数给Zygote。
      ZygoteInit.java

      Zygote的main函数入口。
      Zygote系统代码层次调用
      main()
      startSystemServer()…
      runSelectLoopMode()
      Accept socket connection
      Conntecion.RunOnce()
      Read argument
      folkAndSpecialize
      folkAndSpecialize使用Native函数Dalvik_dalvik_system_Zygote_forkAndSpecialize
      //native 的获取
      dalvik/vm/native
      //dalvik_system_Zygote.c
      const DalvikNativeMethod dvm_dalvik_system_Zygote[] = {
      { "fork",            "()I",
      Dalvik_dalvik_system_Zygote_fork },
      { "forkAndSpecialize",            "(II[II[[I)I",
      Dalvik_dalvik_system_Zygote_forkAndSpecialize },
      { "forkSystemServer",            "(II[II[[I)I",
      Dalvik_dalvik_system_Zygote_forkSystemServer },
      { NULL, NULL, NULL },
      };

      在这里我们就有了Zygote服务的全貌理解,也在Code中印证了。【应yk_hu0621修正】{由于Android中没有具体应用程序的入口,都是通过启动Actvity来启动相关的Android应用,而这个 Android应用则对应着Linux进程,Activity便Host在这个应用程序上。}
      {原文:Activity在本质上是个什么东西,就是一个Linux进程}
      从分析中我们可以看到,Android使用了Linux的fork机制。在Linux中Fork是很高效的。
      一个Android的应用实际上一个Linux进程,所谓进程具备下面几个要素,
      a.要有一段程序供该进程运行,程序是可以被多个进程共享的。
      b进程专用的系统堆栈空间。
      c.进程控制块,在linux中具体实现是task_struct
      d.有独立的存储空间。
      fork 创造的子进程复制了父亲进程的资源,包括内存的内容task_struct内容,在复制过程中,子进程复制了父进程的task_struct,系统堆栈空间和页面表,而当子进程改变了父进程的变量时候,会通过copy_on_write的手段为所涉及的页面建立一个新的副本。所以只有子进程有改变变量时,子进程才新建了一个页面复制原来页面的内容,基本资源的复制是必须的,整体看上去就像是父进程的独立存储空间也复制了一遍。
      再看看下面Google在讲解Dalvik虚拟机的图片,我们就大体有了Android系统中Actvitiy的实际映射状态有了基本的认识。

                          

  • 相关阅读:
    【PASOTTIPASOTTI 伞】PASOTTI黑色聚酯纤维伞 Style 478
    乐雨 德国happyrain 超大男士高尔夫伞 直柄伞 双人伞 双层伞面防风雨伞 黑色【图片 价格 品牌 报价】-京东
    Larmes琅幕仕家居马头长款短柄自动雨伞 晴雨两用太阳伞防紫外线遮阳男士商务伞 雨伞雨具 骏马长款-金色配饰【图片 价格 品牌 报价】-京东
    Planner – 项目管理软件
    Project Server 2010安装部署手册(1.5版)
    Serena Software :: pod-update
    ]project-open[ 中国 功能一览
    几块钱或许能治好你的白发(2)
    爱心日式便当 给爸爸妈妈的爱心便当
    给老公做的爱心便当,持续更新!-西餐-19楼私房菜-杭州19楼
  • 原文地址:https://www.cnblogs.com/kingshow123/p/androidcore9.html
Copyright © 2011-2022 走看看