当我们拿到一台Android的智能手机,从打开开关,到我们可以使用其中的app时,这个启动过程到底是怎么样的?
系统上电
当给Android系统上电,CPU复位之后,程序指针会指向启动地址,从该地址读取启动程序的可执行代码直接运行,或者将可执行代码与数据载入CPU内置的RAM中再运行。
这一段代码,放在PC中,叫做BIOS,而在android等嵌入式系统中就叫做Bootloader。
Bootloader引导程序
通过Bootloader引导程序,可以初始化硬件设备,建立内存空间映射图,为操作系统内核...
分类:
移动开发 时间:
2014-07-13 14:05:34
阅读次数:
326
Android的线程和内存模型Android操作系统在boot后,会启动一个Zygote(受精卵)进程,Zygote进程负责创建大部分应用程序进程。Zygote进程启动 加载核心程序库和数据结构到内存后会创建一个Dalvik虚拟机(DVM)进程--SystemServer,此进程会包含大部分的系统服...
分类:
移动开发 时间:
2014-07-03 06:29:44
阅读次数:
268
其实init进程启动后,ServiceManager进程的启动,远比zygote要早,因为在启动zygote进程时需要用到ServiceManager进程的服务。ServiceManager是一个守护进程,它维护着系统服务和客户端的binder通信。
在Android系统中用到最多的通信机制就是Binder,Binder主要由Client、Server、ServiceManager和Binder...
分类:
移动开发 时间:
2014-06-20 12:53:13
阅读次数:
306
在《Zygote进程【3】——SystemServer的诞生》一文中介绍了SystemServer的诞生,本文来看一下SystemServer中初始化的系统服务。1.AccountManagerServiceAndroid账户服务,提供了对账户、password、授权的集中管理。2.Accessib...
分类:
移动开发 时间:
2014-06-06 20:18:30
阅读次数:
496
1
SystemServer分析SystemServer的进程名就是前面所说的“system_server”,是zygote进程“app_process”fork出来的第一个子嗣,其重要性不言而喻。下面我们简称其为SS。1.1
SS的诞生先回顾一下SS是如何创建的:/*在zygoteinit.jav...
分类:
其他好文 时间:
2014-05-26 13:37:58
阅读次数:
375
1 zygote分析1.1
简介Zygote本身是一个NATIVE层的应用程序,与驱动、内核无关。前面已经介绍过了,zygote由init进程根据init.rc配置文件创建。其实本质上来说,zygote就是app_process,这个名字在android.mk中指定,但是在运行的时候,app_pro...
分类:
其他好文 时间:
2014-05-26 13:17:29
阅读次数:
274
上一博文介绍了init进程启动,在解析init.rc 的时候会把zygote加到service列表中,并最终启动,zygote启动的实际是app_process程序。zygote是init进程的子进程。在Android系统中,所有的应用程序以及系统服务,包括SystemServer都是由Zygote fork出来的,这就是为什么它叫zygote(受精卵)的原因。我们再来看一下.rc文件的描述:...
分类:
移动开发 时间:
2014-05-15 06:11:35
阅读次数:
383
Android 启动流程:1.linux OS Bootloader -> Linux
kernel2.Android/InitRuntime Init Process -> Services -> Zygote/VM ->
System Server3.Framework HomeScreen.....
分类:
移动开发 时间:
2014-05-14 11:28:11
阅读次数:
576
在《Zygote进程【3】——SystemServer的诞生》一文中介绍了SystemServer的诞生,本文来看一下SystemServer中初始化的系统服务。
AccountManagerServiceAccessibilityManagerService
ActivityManagerService
AlarmManagerService
AppWidgetService...
分类:
移动开发 时间:
2014-05-03 00:16:21
阅读次数:
404