Android核心分析 之九-------Zygote Service
来源:互联网 发布:冰球队员贾克斯淘宝 编辑:程序博客网 时间:2024/05/01 19:53
Zygote Service
可以参考:http://blog.csdn.net/luoshengyang/article/details/6768304
在本章我们会接触到这两个单词:
- 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的实际映射状态有了基本的认识。
- Android核心分析 之九-------Zygote Service
- Android核心分析 之九-------Zygote Service
- Android核心分析 之九-------Zygote Service
- Android核心分析 之九-------Zygote Service
- Android核心分析 之九-------Zygote Service .
- Android核心分析 之九-------Zygote Service
- Android核心分析 之九-------Zygote Service
- Android核心分析 之九-------Zygote Service (转)
- Android核心分析 之(9)Zygote Service
- android核心机制之Zygote启动流程
- Zygote Service分析
- Android核心分析 之九-------Android GWES之基本原理篇 .
- Android Zygote Service
- Android情景分析之深入解析zygote
- android zygote之启动过程分析
- Android情景分析之深入解析zygote
- Android 核心分析 之七------Service深入分析
- Android 核心分析 之七------Service深入分析
- pomelo消息推送
- 很有用的算法http://bbs.csdn.net/topics/390768965
- ASP.NET Membership中可以更改的用户信息
- 单件模式(Singleton Pattern)
- 虚函数:从入门到精通
- Android核心分析 之九-------Zygote Service
- jquery简单制作悬浮导航 滚动到哪儿 定位到哪儿
- 4.深入java反射机制
- A 判二分图
- “System.string到system.guid强制转换无效”错误处理
- 为了更好的分享我自己设计 今天开始
- 制作GRUB个性化引导界面
- 从零冲击Erlang(二)
- javascript 用函数语句和表达式定义函数的区别