Android system
来源:互联网 发布:个人之间借款 知乎 编辑:程序博客网 时间:2024/05/23 00:04
Android系统启动加载完内核后,第一个执行的是init进程,init进程首先要做的是设备的初始化工作,然后读取inic.rc文件并启动系统中重要外部程序Zygote。Zygote进程是Android所有进程的孵化器进程,它启动后会首先初始化Dalvik虚拟机,然后启动system_server并进入Zygote模式,通过socket等候命令。当执行一个Android应用程序时,system_server进程通过socket方式发送命令给Zygote,Zygote收到命令后通过fork自身创建一个Dalvik虚拟机实例来执行应用程序的入口函数,这样一个程序启动完成了。整个流程如下图所示:
Zygote提供了三种创建进程的方法:
fork(),创建一个Zygote进程;
forkAndSpecialize(),创建一个非Zygote进程。
forkSystemServer(),创建一个系统服务进程。
其中,Zygote进程可以再fork()出其他进程,非Zygote进程则不能fork其他进程,而系统服务进程在终止后它的子进程也必须终止。
当进程fork成功后,执行的工作就交给了Dalvik虚拟机。Dalvik虚拟机首先通过loadClassFromDex()函数完成类的装载工作,每个类被成功解析后都会拥有一个ClassObject类型的数据结构存储在运行环境中,虚拟机使用gDvm.loadedClasses全局哈希表来存储与查询所有装载进来的类,随后,字节码验证器使用dvmVerifyCodeFlow()函数对装入的代码进行校验,接着虚拟机调用FindClass()函数(Jnienv?)查找并装载main方法类,随后调用dvmInterpret()函数初始化解释器并执行字节码流。整个过程如下图所示:
- Android system
- Android /System、\system\bin、\system\etc、\system\fonts
- Android: Android Property System
- Android: Android Wifi System
- Android Building System 分析
- Android build system
- Android Building System 分析
- Android Building System 分析
- Android Build System
- Android build system
- Android Building System 分析
- Android Property System
- Android Build System
- Android build System
- Android build system note
- Android Building System 分析
- Android building system
- android build system links
- hdu 1151 &&poj 1422 Air Raid (二分图匹配 最小路径覆盖)
- NEU 1666 字符串游戏(巧用map)
- select的内核实现原理
- POJ-1322 Chocolate(概率DP)
- 第3章 UI
- Android system
- 2.未公开的Oracle数据库秘密笔记——参数说明——PGA_AGGREGATE_TARGET
- HashTable和HashMap
- online_judge_1121
- ucosIII 事件标志组、同时等待多个内核对象、存储管理
- 如何在nginx中使用系统的环境变量(转)
- UITableView---总结
- 3.未公开的Oracle数据库秘密笔记——参数说明——EVENT
- layou_weight