标签:looper reg com 机制 handle 一个个 开机动画 ash csdn
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~相信我们对Android系统都不陌生,而Android系统博大精深,被各种各样的智能设备承载的同时,我们会否好奇过,如此复杂的Android究竟是怎么运作起来的呢?借本文给大家分享,笔者对Android 系统启动流程的整体理解~
hi, I‘m Android
下面是Android启动的核心步骤流程图,看文字的时候,记得回来对照图来理解喔,希望阅读全文后,回观流程图,会有恍然大悟的感觉,那么文章的目的就达到啦~
整体流程
系统从 ROM 中开始启动,加载引导程序到 RAM ,然后执行。
引导程序是 Android 操作系统开始运行前的一个小程序,因此它需要针对特定主板与芯片,并不是 Android 操作系统的一部分。引导程序是 OEM 厂商或运行商进行加锁、限制的地方。
Android引导程序可以在\bootable\bootloader\legacy\usbloader找到,传统的加载器包含的两个文件:
Android 内核启动方式类似桌面 linux,主要步骤:
1. 设置缓存
2. 被保护存储器
3. 计划列表
4. 加载驱动
当内核完成系统设置,接下来即将启动系统的第一个进程 -- init 进程
作为 Android 系统的第一个进程,其PID为0,通过解析 init.rc 脚本来构建出系统初始运行形态,这一阶段中,“Android” logo 会显示出来
(系统中,大多数系统服务程序都是在该脚本中描述并被相继启动的)
init.rc 由4种类型声明组成:Actions、Commands、Services、Options
科普:Daemons - 守护进程
init进程通过解析 init.rc 来陆续启动其他关键的系统服务进程,其中最重要的是 ServiceManager、Zygote 和 SystemServer 三者,下面我们逐一解析:
概述:ServiceManager 是 Binder 机制中的支撑者,负责某 Binder 服务注册信息到底层 Binder 驱动分配的值解析。
ServiceManager 由 init 进程解析 rc 脚本时启动,属于 core 类,其他同类进程包括:uenetd、console、adbd等。根据 core 组的特性,这些进程会同时启动或停止。另外,ServiceManager 配置含有 critical 属性,这意味着它是系统关键进程(如果进程不幸在4分钟内异常退出超过4次,设备将重启并进入还原模式)。当 ServiceManager 每次重启时,其他关键进程:zygote、media、surfaceflinger 等也会被 restart。
Android 中大多数应用进程与系统进程都是通过 Zygote 来生成的。Zygote 同样由 init 解析 rc 脚本时启动,属于 main 类,同属 main 类的系统进程有:netd、debuggerd、rild等。Zygote并不是处于独立的程序中的,它所在程序名为“app_process”,观察 app_process 主函数实现知道,如果 init.rc 中指定了 --zygote选项,app_process 接下来将启动“ZygoteInit”,并传入“start-system-server”,这样,ZygoteInit 就会运行在虚拟机上(Dalvik VM)上了。
ZygoteInit 函数有两项重要工作
预装载各种系统类
搭建 SystemServer 环境,并启动 SystemServer(大部分的 Android 系统服务都在其中,由 Java 编写)
ZygoteInit 流程总结
(
摘自:Gityuan -- Android 系统启动-Zygote 篇
)
ZygoteInit 结束后,开机Logo就出来了。
(注意:这里并不包括开机动画,而是开机前 “Android” Logo 出现的那个画面,开机动画出现之前还需要进行各种加载,开机动画是在“Android” Logo 出现之后才播放的)
SystemServer 是 Android 进入 Launcher 前的最后准备,它提供了众多的由“Java”语言编写的系统服务。
如果 init.rc 中为 zygote 指定启动参数 --start-system-server,那么 ZygotyeInit 就会调用 startSystemServer 来进入 SystemServer。
上面对 Android 系统启动做了一个简述,意在给大家展现一个整体流程,其中每个环节涉及的知识点只是浅浅掠过,笔者也尚在学习与探索中,希望在后续再作详细分析。
此文已由作者授权腾讯云+社区发布,更多原文请点击
搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!
海量技术实践经验,尽在云加社区!
标签:looper reg com 机制 handle 一个个 开机动画 ash csdn
原文地址:http://blog.51cto.com/13957478/2316218