首页 测试 体会 查看内容

Android启动过程深入解析

2014-8-5 23:13| 发布者: tianzc| 查看: 903| 评论: 0

摘要:   当按下Android设备电源键时究竟发生了什么?  Android的启动过程是怎么样的?  什么是Linux内核?  桌面系统linux内核与Android系统linux内核有什么区别?  什么是引导装载程序?  什么是Zygote?   ...
  当按下Android设备电源键时究竟发生了什么?  Android的启动过程是怎么样的?  什么是Linux内核?  桌面系统linux内核与Android系统linux内核有什么区别?  什么是引导装载程序?  什么是Zygote?  什么是X86以及ARM linux?  什么是init.rc?  什么是系统服务?  当我们想到Android启动过程时,脑海中总是冒出很多疑问。本文将介绍Android的启动过程,希望能帮助你找到上面这些问题的答案。  Android是一个基于Linux的开源操作系统。x86(x86是一系列的基于intel 8086 CPU的计算机微处理器指令集架构)是linux内核部署最常见的系统。然而,所有的Android设备都是运行在ARM处理器(ARM 源自进阶精简指令集机器,源自ARM架构)上,除了英特尔的Xolo设备(http://xolo.in/xolo-x900-features)。Xolo来源自凌动1.6GHz x86处理器。Android设备或者嵌入设备或者基于linux的ARM设备的启动过程与桌面版本相比稍微有些差别。这篇文章中,我将解释Android设备的启动过程。深入linux启动过程是一篇讲桌面linux启动过程的好文。  当你按下电源开关后Android设备执行了以下步骤。  Android启动流程/过程  第一步:启动电源以及系统启动  当电源按下,引导芯片代码开始从预定义的地方(固化在ROM)开始执行。加载引导程序到RAM,然后执行。  第二步:引导程序  引导程序是在Android操作系统开始运行前的一个小程序。引导程序是运行的第一个程序,因此它是针对特定的主板与芯片的。设备制造商要么使用很受欢迎的引导程序比如redboot、uboot、qi bootloader或者开发自己的引导程序,它不是Android操作系统的一部分。引导程序是OEM厂商或者运营商加锁和限制的地方。  引导程序分两个阶段执行。第一个阶段,检测外部的RAM以及加载对第二阶段有用的程序;第二阶段,引导程序设置网络、内存等等。这些对于运行内核是必要的,为了达到特殊的目标,引导程序可以根据配置参数或者输入数据设置内核。  Android引导程序可以在bootablebootloaderlegacyusbloader找到。  传统的加载器包含的个文件,需要在这里说明:  init.s初始化堆栈,清零BBS段,调用main.c的_main()函数;  main.c初始化硬件(闹钟、主板、键盘、控制台),创建linux标签。  更多关于Android引导程序的可以在这里了解。  第三步:内核  Android内核与桌面linux内核启动的方式差不多。内核启动时,设置缓存、被保护存储器、计划列表,加载驱动。当内核完成系统设置,它首先在系统文件中寻找”init”文件,然后启动root进程或者系统的第一个进程。  第四步:init进程  init是第一个进程,我们可以说它是root进程或者说有进程的父进程。init进程有两个责任,一是挂载目录,比如/sys、/dev、/proc,二是运行init.rc脚本。  init进程可以在/system/core/init找到。  init.rc文件可以在/system/core/rootdir/init.rc找到。  readme.txt可以在/system/core/init/readme.txt找到。  对于init.rc文件,Android中有特定的格式以及规则。在Android中,我们叫做Android初始化语言。  Android初始化语言由四大类型的声明组成,即Actions(动作)、Commands(命令)、Services(服务)、以及Options(选项)。  Action(动作):动作是以命令流程命名的,有一个触发器决定动作是否发生。
123下一页

鲜花

握手

雷人

路过

鸡蛋

扫一扫关注最新动态

毒镜头:老镜头、摄影器材资料库、老镜头样片、摄影
爱评测 aipingce.com  
返回顶部