Android系统启动过程概述
来源:互联网 发布:最新网络捕鱼赌博平台 编辑:程序博客网 时间:2024/04/28 07:39
一、开机加电
bootloader(汇编语言)进行底层初始化,并加载内核代码,最终跳转到内核的boot程序。
二、Linux内核引导
三、init进程启动
init进程的程序在system/core/init/init.c里,它是android系统特定的初始化程序,最终它会以后台进程(daemon)的形式一直存在。该进程主要有如下功能:
四、Native服务启动
根据system/core/rootdir/init.rc, init进程通过open_keychord()从service_list(之前从.rc中解析出来的)中把所有service信息写入特定文件,handle_keychord()逐个读出然后调用service_start()创建(先fork()然后在子进程中调用execve()来执行相应的服务程序)指定的service进程。这里创建的service都属于native服务,运行在Linux空间,通过socket向上层提供特定的服务。例如:
console: shell console服务.
servicemanager: Binder服务管理器,管理所有Android系统服务
vold: volume Daemon,支持存储外设的热插拔
adbd: Android Debug Bridge Daemon,提供adb相关功能
mountd: 设备安装Daemon,负责设备安装及状态通知
debuggerd: Debug Daemon,处理调试进程的请求
rild: 无线接口层(radio interface layer)Daemon.
zygote: 启动Android Dalvik Runtime并负责进程孵化服务.
mediaserver: 启动AudioFlinger, MediaPlayerService and CameraService.负责多媒体播放相关的功能,包括音视频解码、显示输出等。
installd: 包安装Daemon,提供包安装/删除/dex处理等底层功能
五、Android Runtime启动
init进程启动的servicemanager和zygote进程,是android系统的基础。其中zygote进程非常重要,它作为其它所有android进程的"种子",负责建立Android运行空间,同时能够按照命令进行进程孵化(自我复制)。
init进程根据init.rc配置启动了zygote服务进程,其中zygote描述如下:
service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server,
意思是作为种子进程(-Xzygote参数),启动system/bin/app_process下的zygote,同时启动SystemServer(--start-system-server参数)。而zygote服务对应的程序是frameworks/base/cmds/app_process/app_main.cpp,它主要工作是创建并启动Android Runtime(Dalvik属于Runtime的一部分),然后启动System Server进程进行系统初始化。zygote服务的具体启动流程是:
1、main()@frameworks/base/cmds/app_process/app_main.cpp
2、runtime.start()@frameworks/base/core/jni/AndroidRuntime.cpp
3、main()@frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
至此,zygote进程的初始化工作全部完成,Android Runtime已经启动。
六、Android系统初始化
System Server作为Zygote的第1个子进程,是Android Framework的核心,它主要负责Android系统初始化并启动其他服务。其它的Android服务都由SystemServer启动并运行在该进程空间。该进程具体的启动流程是:
AudioPolicyService
Server", "init2")
七、Home启动
/android/server/am/ActivityManagerService.java, 主要函数如下:resumeTopActivityLocked(),startHomeActivityLocked() startActivityLocked()
- android 系统启动过程概述
- Android系统启动过程概述
- Android系统启动流程概述
- Windows Vista系统启动过程概述
- Windows XP系统启动过程概述
- android 系统启动过程
- Android 系统启动过程
- Android系统启动过程剖析
- Android系统启动过程浅谈
- Android 系统启动过程
- Android系统启动过程剖析
- Android系统启动过程
- Android系统启动过程
- Android系统启动过程分析
- Android系统启动过程浅谈
- Android系统启动过程
- Android系统启动过程
- Android系统启动过程浅谈
- IOS实现本地消息推送
- html颜色代码表
- 以图灵的方式编程
- 缓存、缓存算法和缓存框架简介
- Anddroid启动service:restart_processes函数分析
- Android系统启动过程概述
- 分布式消息系统kafka单节点搭建
- Android 代码实现 沉浸模式切换
- apache commons JXPath 说明,使用JXPath访问java对象、集合和XML文件
- Hadoop&Yarn&Mahout&Spark企业级最佳实践(3天)
- Lamp环境搭建
- HTTP返回码
- 安全卫士——Day10_1
- mac OS X apache+mysql+PHP基本命令以及配置