Zygote Service分析
来源:互联网 发布:eclipse java ee 编辑:程序博客网 时间:2024/05/01 10:18
从大的架构上讲,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 connectionConntecion.RunOnce()Read argumentfolkAndSpecialize//folkAndSpecialize 使用Native 函数Dalvik_dalvik_system_Zygote_forkAndSpecialize//native 的获取dalvik\vm\native//dalvik_system_Zygote.cconst 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 中印证了。
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 的实际映射状态。
- Zygote Service分析
- Android核心分析 之九-------Zygote Service
- Android核心分析 之九-------Zygote Service
- Android核心分析 之九-------Zygote Service
- Android核心分析 之九-------Zygote Service
- Android核心分析 之九-------Zygote Service .
- Android核心分析 之九-------Zygote Service
- Android核心分析 之九-------Zygote Service
- Zygote Service
- Zygote Service
- Zygote Service
- Zygote 分析
- Zygote分析
- Zygote分析
- Android核心分析 之九-------Zygote Service (转)
- Android核心分析 之(9)Zygote Service
- Android Zygote Service
- android 的Zygote 分析
- paip.软件版本完善计划VC423
- logcat 在华为手机上运行时无法抓起log的问题
- C# 短精好
- SQL关于空串的判断与比较
- 对贪心法求解最小代价生成树的理解
- Zygote Service分析
- TinyOS操作系统学习2 TOSThreads 库
- Making YACC output an AST (token tree)
- C# .ToString() 格式化
- android 开机画面定制
- EXT的border布局如何实现按比例布局(同时可解决IE6中IFrame只显示一半问题)
- SCORM1.2 提供8个标准AP
- java.util.ConcurrentModificationException
- 进程与线程的一个简单解释