[转载]Android系统的运行机制: 启动流程与层间交互

Android系统剖析 和 Android系统的运行机制: 启动流程与层间交互,2015-02-28

Android运行机制(看图说话)

1. 启动流程

所有从init开始…

与大多数的基于Linux系统在启动阶段类似,bootLoader加载Linux内核,然后开始init进程。
[转载]Android系统的运行机制: 启动流程与层间交互

init启动Linux守护进程,包括:
USB守护进程(usbd)来管理USB连接
Android调试桥守护进程(adbd)来管理ADB连接
调试器守护进程(debuggerd)来管理调试进程请求(dump memory等等)
射频接口层守护进程(rild)来管理与射频的通信
[转载]Android系统的运行机制: 启动流程与层间交互

Init进程启动zygote进程:
一个新生的进程初始化一个Dalvik VM实例
加载类,并监听socket端口用于请求创建VMs实例
Forks请求创建VM实例用于管理进程
写时复制(Copy-on-write)来最大化重用和最小化覆盖
[转载]Android系统的运行机制: 启动流程与层间交互

init进程启动runtime进程:
初始化Service Manager——上下文管理器用于binder来处理service注册和查询
注册Service Manager作为缺省的上下文管理用于Binder
[转载]Android系统的运行机制: 启动流程与层间交互

Runtime进程发送请求给Zygote来启动System Service
[转载]Android系统的运行机制: 启动流程与层间交互

接着Zygote进程fork一个新的VM实例用于System Service进程,然后启动该service。
[转载]Android系统的运行机制: 启动流程与层间交互

System Service启动本地系统服务器,包括:
Surface Flinger
Audio Flinger
[转载]Android系统的运行机制: 启动流程与层间交互

本地system servers注册Service Manager作为IPC service目标:
[转载]Android系统的运行机制: 启动流程与层间交互

System Service启动Android管理服务(framework层各种service和manager):
[转载]Android系统的运行机制: 启动流程与层间交互

Android管理服务注册到Service Manager中:
[转载]Android系统的运行机制: 启动流程与层间交互


到此,整个Android系统的启动后:
[转载]Android系统的运行机制: 启动流程与层间交互

System Server加载完所有的services后, 系统准备 过程如下…

[转载]Android系统的运行机制: 启动流程与层间交互

zygote生产出home的dalvik vm:
[转载]Android系统的运行机制: 启动流程与层间交互

底层出现libc:
[转载]Android系统的运行机制: 启动流程与层间交互

zygote逐个生产出dalvik vm:
[转载]Android系统的运行机制: 启动流程与层间交互


2. 层间交互(Layer Interaction)

主要有如下三种类型的交互:

  • App -> Runtime Service -> lib

  • App -> Runtime Service -> Native Service -> lib

  • App -> Runtime Service -> Native Daemon -> lib

Android Runtime Services:

[转载]Android系统的运行机制: 启动流程与层间交互

举例:Location Manager
[转载]Android系统的运行机制: 启动流程与层间交互

Android Native Services:

[转载]Android系统的运行机制: 启动流程与层间交互

举例:MediaPlayer
[转载]Android系统的运行机制: 启动流程与层间交互

增加ALSA?
[转载]Android系统的运行机制: 启动流程与层间交互

丢弃了kernel driver?
[转载]Android系统的运行机制: 启动流程与层间交互

Daemon Connection:

native service 被替换为 daemon, binder IPC 被替换为sockets方式,如下:
[转载]Android系统的运行机制: 启动流程与层间交互

举例:RILD
Telephony Manager
[转载]Android系统的运行机制: 启动流程与层间交互

(完)