Zygote启动及其作用】的更多相关文章

目录 1.Zygote简介 2.Zygote进程如何启动 2.1 init.zygote64_32.rc文件 2.2 查看ps信息 2.3 启动 3.Zygote作用 3.1 启动system_server 3.2 查看与验证Zygote启动systemserver 3.3 Zygote启动其他子进程 4.总结 1.Zygote简介 1.1 系统启动流程 从按下电源到看到launcher,手机的启动是一个非常复杂的过程. bootloader是手机上电之后第一个运行的程序,其作用是硬件的初始化,…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6768304 在Android系统中,所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程孕育 (fork)出来的,这也许就是为什么要把它称为Zygote(受精卵)的原因吧.由于Zygote进程在Android系统中有着如此重要的地位,本文 将详细分析它的启动过程. 在前面一篇文章Android应用程序进程启动过程的源…
前言 在Android中,zygote是整个系统创建新进程的核心进程.zygote进程在内部会先启动Dalvik虚拟机,继而加载一些必要的系统资源和系统类,最后进入一种监听状态.在之后的运作中,当其他系统模块(比如 AMS)希望创建新进程时,只需向zygote进程发出请求,zygote进程监听到该请求后,会相应地fork出新的进程,于是这个新进程在初生之时,就先天具有了自己的Dalvik虚拟机以及系统资源. 开篇 核心源码 关键类 路径 init.rc system/core/rootdir/i…
1.  init 根据init.rc 运行 app_process, 并携带‘--zygote' 和 ’--startSystemServer' 参数. 2.  AndroidRuntime.cpp::start() 里将启动JavaVM,并且注册所有framework相关的系统JNI接口. 3.  第一次进入Java世界,运行ZygoteInit.java::main() 函数初始化Zygote. Zygote 并创建Socket的server 端. 4.  然后fork一个新的进程并在新进程…
dvm,app进程,linux进程三者关系 DVM指 dalivk 的虚拟机.每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例.而每一个 DVM 都是在 Linux 中的一个进程,所以说可以认为是同一个概念 Zygote进程与app进程关系 Zygote是java层的进程即它也拥有一个独立的Dalvik 虚拟机实例,它是被linux层的第一个用户空间Init进程所启动的,它的主要作用就是用来孵化app进程和系统进程 fork一个app进程,是通过…
Init 是所有Linux程序的起点,而Zygote于Android,正如它的英文意思,是所有java程序的'孵化池'(玩过星际虫族的兄弟都晓得的).用ps 输出可以看到 >adb shell ps | grep -E 'init|926' root 1 0 656 372 00000000 0805d546 S /init root 926 1 685724 43832 ffffffff b76801e0 S zygote system 1018 926 795924 62720 ffffff…
简述 Android设备启动过程中,先是Linux内核加载完,接着Android中的第一个进程init启动,它会启动一些需要开机启动的进程. Zygote就是进程init启动起来的.Android中所有应用程序进程,以及运行系统关键服务的System进程都是由Zygote创建的.它通过复制自身的形式创建其它进程.Zygote在启动时会在内部创建一个虚拟机实例,因此,通过复制Zygote得到的其它应用程序进程和System进程都可以快速地在内部获得一个虚拟机地拷贝.Zygote启动完成后就立即将S…
1.Zygote简介 在Android系统中,DVM(Dalvik虚拟机).应用程序进程以及运行系统的关键服务的SystemServer进程都是由Zygote进程来创建的,我们也将它称为孵化器.它通过fock(复制进程)的形式来创建应用程序进程和SystemServer进程,由于Zygote进程在启动时会创建DVM,因此通过fock而创建的应用程序进程和SystemServer进程可以在内部获取一个DVM的实例拷贝. 关于init启动zygote我们在上一篇文章已经提到了,这里就不赘述了,这篇文…
##init脚本的启动 +------------+ +-------+ +-----------+ |Linux Kernel+--> |init.rc+-> |app_process| +------------+ +-------+ +-----------+ create and public server socket linux内核加载完成后,运行init.rc脚本 service zygote /system/bin/app_process -Xzygote /system/bi…
1.基本过程 init脚本的启动Zygote Zygote进程的启动 System进程的启动 Android应用进程启动过程 2.init脚本的启动 +------------+ +-------+ +-----------+ |Linux Kernel+--> |init.rc+-> |app_process| +------------+ +-------+ +-----------+ create and public server socket linux内核加载完成后,运行init.…
@Dlive 本文档: 使用的Android源码版本为:Android-4.4.3_r1 kitkat (源码下载: http://source.android.com/source/index.html) 使用的源码阅读工具为Source Insight 源码结构: 0x00 Zygote介绍 Zygote是在设备开启的时候init启动的其中一个进程.在Android系统中,所有的应用程序进程,以及用来运行系统关键服务的System进程都是由Zygote进程负责创建的,因为其行为很想受精卵的分…
在Android中存在着C和Java两个完全不同的世界,前者直接建立在Linux的基础上,后者直接建立在JVM的基础上.zygote的中文名字为"受精卵",这个名字很好的诠释了zygote进程的作用.作为java世界的孵化者,zygote本身是一个native程序,是由init根据init.rc文件中的配置项创建的. @/system/core/rootdir/init.rc service zygote /system/bin/app_process -Xzygote /system…
It’s right time to learn Android’s Framework ! 前言 学习目标 写作方式 主要对象功能介绍 主要流程介绍 zygote是什么有什么作用 SystemServer是什么有什么作用它与zygote的关系是什么 ActivityManagerService是什么什么时候初始化的有什么作用 Launcher是什么什么时候启动的 Instrumentation是什么和ActivityThread是什么关系 如何理解AMS和ActivityThread之间的Bi…
Android系统开机主要经历三个阶段: bootloader启动 Linux启动 Android启动 启动文件: 对于机器从通电到加载Linux系统一般需要三个文件:bootloader(引导文件).kernel(内核文件).rootfs (根文件系统 能让操作系统正常运行的文件夹和文件的大集合,在Android中是ramdisk).这些文件在ROM Build的时候会编译成IMAGE的形式打包到ROM中. Android系统主要分为两个区.system分区包含有Android运行时框架.系统…
转载请标明出处:  http://blog.csdn.net/yujun411522/article/details/46367787 本文出自:[yujun411522的博客] 3.1 android正常模式启动流程 主要流程例如以下: 1.系统加电.运行bootloader,bootloader会将内核载入到内存中. 2.内核载入到内存之后首先进入内核引导阶段,最后调用start_kernel进入内核启动.start_kernel终于会启动init程序 3.init程序负责解析init.rc…
http://www.jianshu.com/p/6037f6fda285 zygote是什么?有什么作用? zygote意为“受精卵“. 在Android系统里面,zygote是一个进程的名字.Android是基于Linux System的,当你的手机开机的时候,Linux的内核加载完成之后就会启动一个叫“init“的进程.在Linux System里面,所有的进程都是由init进程fork出来的,我们的zygote进程也不例外. 所以当系统里面的第一个zygote进程运行之后,在这之后再开启…
本文依据Android6.0源码,从点击Launcher图标,直至解析到MainActivity#OnCreate()被调用. Launcher简析 Launcher也是个应用程序,不过是个特殊的应用.俗称“桌面”.通过PackageManagerService查询所有已安装的应用程序,并保存相应的图标.应用名称.包名和第一个要启动的类名等. 源码位置:frameworks/base/core/java/android/app/LauncherActivity.java LauncherActi…
Activity启动过程中做了哪些事情?下面的时序图展示里启动过程中函数的调用过程, 从图中可以知道大概流程. 在介绍细节的时候是从上往下函数调用过程介绍的,如果不知道某个函数是在哪里被谁调用的,可以回过头来看下时序图.下面是对一些细节进行介绍. 1. 在Android中有两种操作会引发Activity的启动,一种用户点击Launcher的应用程序图标时,Launcher会为启动应用程序的主Activity.另外一种是在已经起来的Activity内部通过调用startActvity接口启动新的A…
所在位置: 图书 -> 在线试读 -> Android内核剖析 第9章 Framework的启动过程 9.3 zygote的启动 前面小节介绍了Framework的运行环境,以及Dalvik虚拟机的相关启动方法,zygote进程是所有APK应用进程的父进程,接下来就详细介绍zygote进程的内部启动过程. 9.3.1  在init.rc中配置zygote启动参数 init.rc存在于设备的根目录下,读者可以使用adb pull /init.rc ~/Desktop命令取出该文件,文件中和zyg…
本文转载自:http://blog.csdn.net/yangwen123/article/details/17258023 Zygote进程介绍   在Android系统中,存在不同的服务,这些服务可以分为: Android系统借用Binder通信机制实现了C/S架构设计,客户端应用程序如需要实现某些功能,只需请求指定的服务,由服务端来实现.Android服务包括以上的系统服务和应用服务,系统服务是指Android系统在启动过程就已经启动实现了的服务,对于系统服务又分为Java服务和本地服务,…
Android基于Linux2.6+内核,我们看一张图,以对Android系统的架构有个感性的认识. 我们从Kernel层简单说明: 1.Kernel层:基于Linux2.6+内核.同一时候做了一些嵌入式环境做了一些针对性的优化调整. 2.Libraries层:包含Bionic C库,以及HAL(硬件驱动接口抽象)等API. 3.Android Runtime(ART)层:包括核心应用库和Dalvik虚拟机. 4.Application Framework层:纯JAVA的API框架.包含Acti…
Android系统中的进程(这里不包括init等底层的进程)都是通过Zygote fork而来的,那这些进程的启动流程都是怎样的呢? 这里将Android进程分为两个部分: (1)系统框架进程SystemServer进程.它是Zygote创建的第一个进程,是在系统启动过程中,Zygote进程启动时直接fork而来的. (2)应用程序进程.比如Launcher.SystemUI,其它应用程序等的进程.这些应用程序进程的启动大致包含两个步骤: 1)AMS向Zygote进程发送创建进程的请求: 2)Z…
前言 Zygote可以说是Android开发面试很高频的一道问题,但总有小伙伴在回答这道问题总不能让面试满意, 在这你就要搞清楚面试问你对Zygote的理解时,面试官最想听到的和其实想问的应该是哪些?下面我们通过以下几点来剖析这道问题! 了解Zygote的作用 熟悉Zygote的启动流程 深刻理解Zygote的工作原理 下面来我们来深入剖析 一. Zygote的作用 Zygote的作用分为两点: 启动SystemServer 孵化应用进程 关于这个问题答出了这两点那就是OK了.可能大部分小伙伴可…
美女镇楼,辟邪! 源码,是一个程序猿前进路上一个大的而又不得不去翻越障碍,我讨厌源码,看着一大堆.5000多行,要看完得啥时候去了啊.不过做安卓的总有这一天,自从踏上这条不归路,我就认命了.好吧,我慢慢来啃.先从Activity的启动流程开始,一个app启动的底层源码流程.那么我们该去哪里找源码呢,源码其实就在sdk的包里,并不遥远,只是平时我们很少去关注.(从应用层的入口开始,FrameWork层目前我还没那水平,看不明白),如果想从FrameWork层开始的童鞋,这里给个链接,去看看吧.ht…
前言 所有Android应用进程都是zygote fork出来的,新fork出来的应用进程还保持着root权限,这显然是不被允许的,所以这个fork出来的子进程的权限需要被降级,本文说的就是Android源码在什么地方执行了权限降级的操作. 如果不知道zygote是什么,或者好奇zygote如何启动,可以去看老罗的文章:Android系统进程Zygote启动过程的源代码分析 执行路径 下面的runSelectLoop方法是类ZygoteInit的成员方法,它在文件”frameworks/base…
主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源代码目录介绍Makefile (全局的Makefile)bionic (Bionic 含义为仿生,这里面是一些基础的库的源代码)bootable (引导加载器)build (build 目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)dalvik (JAVA 虚拟机)development (程序开发所需要的模板和工具)             …
软硬件环境 宿主机系统:ubuntu 板子芯片:S5PV210(Contex-A8),512M DDR2,512M SLC Nand 交叉编译器:arm-linux-gcc-4.5.1 手册:S5PV210的S5PV210_UM_REV1.1(老版本居然连内存地址空间都不同) 1.写在前面的话 虽然现在主要做应用层软件,还是想学一下底层的东东,弄清楚cpu的启动原理.内容多为摘抄<Linux平台下Mini210S裸机程序开发指南>--友善之臂和他人博客,作为日后翻阅的笔记之用. 2.S5PV2…
我看了很多帖子,发现想要将U盘分区的朋友绝大部分是和我一样,想用U盘做成一个启动盘同时兼顾文件存储,分区的目的很简单,就是想将启动部分单独做成一个区,以免在日常的应用中使得启动文件染毒或者误操作造成损害.简单的说 就是要将U盘分成 启动盘+文件存储区. 先说说我的惨痛经历:崭新的金士顿8G U盘,事先做好了win7 PE 启动盘可正常使用的,在制作这个启动盘的过程中默认已经将U盘格式化成了HDD格式.我用常规的的pqmagic8.0在windows下面不认U盘,用光盘启动进入DOS工具箱,启动P…
做实验时我们是把 bin 文件烧入SD卡,比如前面做的汇编流水灯实验. 问:是谁把这些指令从 SD 卡读出来执行? 答:是固化在芯片内部ROM上的代码---它被称为iROM ,iROM是厂家事先烧写在芯片上的,无源码. iROM把启动设备上特定位置处的程序读入片内存 (iRAM) ,并执行它.这个程序被称为 BL1(Bootloader 1) ,BL1 是三星公司提供的,无源码. BL1又把启动设备上另一个特定位置处的程序读入片内内存,并执行它.这个被称为 BL2(Bootloader 2) ,…
Android的编译环境只支持Linux和Mac OS,google推荐使用64位操作系统, ### android启动 > #### 当引导程序启动Linux内核后,会加载各种驱动和数据结构,当有了驱动以后,开始启动Android系统同时会加载用户级别的第一个进程init(system\core\init.c)代码如下: int main(int argc, char **argv) { // 创建文件夹 挂载 mount(, "mode=0755"); mkdir(); //…