- 2
- 0
- 约1.5万字
- 约 18页
- 2017-02-01 发布于重庆
- 举报
Android系统启动过程详解
Android系统启动过程
Android系统启动过程
首先Android框架架构图:(来自网上,我觉得这张图看起来很清晰)
Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用。
启动的过程如下图所示:(图片来自网上,后面有地址)
?
下面将从Android4.0源码中,和网络达人对此的总结中,对此过程加以学习了解和总结,
以下学习过程中代码片段中均有省略不完整,请参照源码。
?
一 Init进程的启动
init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,
并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程。
启动过程就是代码init.c中main函数执行过程:system\core\init\init.c
在函数中执行了:文件夹建立,挂载,rc文件解析,属性设置,启动服务,执行动作,socket监听……
下面看两个重要的过程:rc文件解析和服务启动。
1 rc文件解析
.rc文件是Android使用的初始化脚本文件 (System/Core/Init/readme.txt中有描述:
four broad classes of statements which are Actions, Commands, Services, and Options.)
其中Command 就是系统支持的一系列命令,如:export,hostname,mkdir,mount,等等,其中一部分是 linux 命令,
还有一些是 android 添加的,如:class_start serviceclass: 启动服务,class_stop serviceclass:关闭服务,等等。
其中Options是针对 Service 的选项的。
系统初始化要触发的动作和要启动的服务及其各自属性都在rc脚本文件中定义。 具体看一下启动脚本:\system\core\rootdir\init.rc
?????? 在解析rc脚本文件时,将相应的类型放入各自的List中:
\system\core\init\Init_parser.c? :init_parse_config_file( )存入到
action_queue、?? action_list、 service_list中,解析过程可以看一下parse_config函数,类似状态机形式挺有意思。
这其中包含了服务:adbd、servicemanager、vold、ril-daemon、debuggerd、surfaceflinger、zygote、media……
2 服务启动
?????? 文件解析完成之后将service放入到service_list中。
?
文件解析完成之后将service放入到service_list中。
? \system\core\init\builtins.c
?????? Service的启动是在do_class_start函数中完成:
int do_class_start(int nargs, char **args)
{
service_for_each_class(args[1], service_start_if_not_disabled);
return 0;
}
?
遍历所有名称为classname,状态不为SVC_DISABLED的Service启动
?
void service_for_each_class(const char *classname,
void (*func)(struct service *svc))
{
……
}
static void service_start_if_not_disabled(struct service *svc)
{
if (!(svc-flags SVC_DISABLED)) {
service_start(svc, NULL);
}
}
?
?
do_class_start对应的命令:
?
KEYWORD(class_start, COMMAND, 1, do_class_start)
?
init.rc文件中搜索class_start:class_start main 、class_start core、……
?
main、core即为do_class_start参数classname
?
init.rc文件中Service class名称都是main:
?
????
您可能关注的文档
- 大学生课堂学风现状及对策.doc
- 一种家居遥控一体化系统.doc
- 2013年十大最具影响力的影视业并购案.docx
- Windows7_引导修复.doc
- Vxworks的引导过程.doc
- 《Linux操作系统》第2版完整习题答案-电子工业出版社.doc
- VxWorks启动过程详解.doc
- 把Win8安装到移动硬盘VHD文件制作移动Win8的方法技巧.docx
- 燃机启动原理.doc
- AI+具身智能行业市场前景及投资研究报告:体育安防场景落地.pdf
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
原创力文档

文档评论(0)