- 浏览: 33486 次
- 性别:
- 来自: 北京
最新评论
原文地址:http://blog.csdn.net/maxleng/article/details/5508488
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()
s tartSystemServer()…
r unSelectLoopMode()
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核心分析(21)----Android应用框架之AndroidApplication
2012-02-13 14:34 781原文地址:http://blog.csdn ... -
Android核心分析(20)----Android应用程序框架之无边界设计意图
2012-02-13 14:31 901原文地址:http://blog.csdn ... -
Android核心分析(19)----电话系统之GSMCallTacker
2012-02-13 14:25 808原文地址:http://blog.csdn ... -
Android核心分析(18)-----Android电话系统之RIL-Java
2012-02-13 14:10 1146原文地址:http://blog.csdn.net/maxle ... -
Android核心分析(17) ------电话系统之rilD
2012-02-13 14:02 685原文地址:http://blog.csdn.net/maxle ... -
Android核心分析(16)-----Android电话系统-概述篇
2012-01-31 14:39 910原文地址:http://blog.csdn.net/m ... -
Android核心分析(15)--------Android输入系统之输入路径详解
2012-01-31 14:22 840原文地址:http://blog.csdn.net/maxle ... -
Android核心分析(14)------ Android GWES之输入系统
2012-01-31 10:47 955原文地址:http://blog.csdn ... -
Android 核心分析(13) -----Android GWES之Android窗口管理
2012-01-31 10:44 823原文地址:http://blog.csdn ... -
Android 核心分析(12) -----Android GEWS窗口管理之基本架构原理
2012-01-31 10:27 1036原文地址:http://blog.csdn.net/maxle ... -
Android SurfaceFlinger中的SharedClient -- 客户端(Surface)和服务端(Layer)之间的显示缓冲区管理
2012-01-11 11:00 1357原文地址:http://blog.csdn.net/Droid ... -
Android核心分析 之十一-------Android GWES之消息系统
2012-01-10 14:09 676原文地址:http://blog.csdn.net/maxle ... -
Android核心分析 之十-------Android GWES之基本原理篇
2011-12-30 15:08 739原文地址:http://blog.csdn ... -
Android 核心分析 之八------Android 启动过程详解
2011-12-30 14:56 638原文地址:http://blog.csdn.net/maxle ... -
Android 核心分析 之七------Service深入分析
2011-12-30 14:48 1135原文地址:http://blog.csdn.net/maxle ... -
Android 核心分析 之六 -----IPC框架分析 Binder,Service,Service manager
2011-12-30 14:41 940原文地址:http://blog.csdn.net/maxle ... -
Android 核心分析 之五 -----基本空间划分
2011-12-29 11:13 659原文地址:http://blog.csdn.net/maxle ... -
Android核心分析之四 ---手机的软件形态
2011-12-29 11:09 659原文地址:http://blog.csdn.net/maxle ... -
Android是什么 之三-------手机之硬件形态
2011-12-29 11:07 643原文地址:http://blog.csdn.net/maxle ... -
Android核心分析 之二 -------方法论探讨之概念空间篇
2011-12-29 11:03 595原文地址:http://blog.csdn.net/maxle ...
相关推荐
Android 核心分析 之九-------Zygote Service.................................................................. 36 Android 核心分析 之十-------Android GWES 之基本原理篇......................................
核心分析之九 ----- Zygote Service 核心分析之十 ----- Android GWES之基本原理篇 核心分析之十一 ----- Android GWES之消息系统 核心分析之十二 ----- Android GWES窗口管理之基本架构原理 核心分析之十三 ----- ...
Android核心分析之九-------ZygoteService..................................................................36 Android核心分析之十-------AndroidGWES之基本原理篇.......................................40 ...
### Android核心分析之Android启动过程详解 Android启动过程是一个复杂且有序的流程,涉及多个关键阶段,从硬件初始化到最终的用户界面呈现。这一过程可以分为四大步骤:init进程启动、Native服务启动、...
System Server进程在Zygote进程中fork出来,它是Android服务的核心。SystemServer类在SystemServer.java中定义,其main函数首先调用init1,然后初始化一系列服务并添加到ServiceManager。SystemServer负责管理整个...
[转]Android核心分析 技术专题之九--Zygote Service
**Android核心分析(09):** Zygote Service是Android系统中负责创建应用程序进程的关键服务。这部分内容讲解了Zygote进程的创建机制及其如何为后续的应用程序提供初始环境。 #### 八、GWES基本原理 **Android核心...
Android核心分析是关于Android系统的深入研究和分析,涵盖了Android系统的架构设计、核心机制、软件和硬件形态、IPC框架、Service管理、启动过程、窗口管理、输入系统、电话系统、应用程序框架、GDI机制等方面的知识...
### Android核心分析——设计意图与方法论探讨 #### 一、设计意图的探索 在深入研究Android之前,首要任务是理解其背后的设计理念。对于一个跨平台开发者而言,熟悉并掌握Android的核心概念至关重要。Android引入...
SystemServer进程是Android系统的核心组件之一,负责管理大部分系统服务,如ActivityManagerService、WindowManagerService等。这部分的具体实现细节较为复杂,将在后续文章中单独介绍。 ##### 5. 运行循环监听...
### Android核心分析概览 #### 一、设计意图与方法论探讨 - **设计意图的重要性:** 开发者在深入研究Android系统时,首先要明确设计者的初衷与目标。只有理解了设计者的意图,才能更好地把握整个系统的架构和发展...
#### 一、Android核心分析之——分析方法论探讨之设计意图 在这一章节中,作者强调了研究Android的重要性,并指出研究Android不仅仅是学习其技术细节,更重要的是理解其背后的设计思想。作者认为,面对如此复杂的...
此函数是Zygote进程的入口点,其核心工作是调用`AndroidRuntime`类的`start`方法来启动ART虚拟机。 - **1.1** `start`方法的实现主要在`AndroidRuntime`中。 - 此方法执行了一系列的初始化操作,包括设置环境变量...
### Android核心分析概览 #### 一、设计意图与方法论 **设计意图:** - **背景与动机:** 在Android开发中,开发者们经常面对的是一个庞大且复杂的系统。对于初学者而言,掌握Android的核心知识并非易事。因此,...
《Android核心分析》系列文档全面地探讨了Android操作系统的核心组件和机制,旨在深入理解其设计意图、工作原理以及实现方式。以下将详细解析各部分的关键知识点: 1. 设计意图:Android作为开源移动操作系统,其...
#### ZygoteService Zygote是Android系统中的一个关键进程,负责为每个应用程序创建一个独立的虚拟机实例。通过这种方式,Zygote提高了应用程序的启动速度,并减少了内存占用。 #### AndroidGWES之基本原理篇 ...
在深入探讨Android系统的启动流程之前,我们先了解一下整个过程的核心组成部分。Android系统启动涉及多个关键进程,包括Init进程、Zygote、SystemServer等。这些进程的启动与交互构成了Android设备从按下电源键到...
总结起来,Android核心分析涉及了Zygote Service的启动和优化机制,Service的生命周期和应用场景,以及基于Binder的IPC框架和Service Manager的角色。深入理解这些概念和技术,对于Android应用开发、性能优化以及...