Android系统完整的启动过程_第1页
Android系统完整的启动过程_第2页
Android系统完整的启动过程_第3页
Android系统完整的启动过程_第4页
Android系统完整的启动过程_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android系统完整的启动过程,从系统层次角度可分为Linux系统层、Android系统服务层、Zygote进程模型三个阶段;从开机到启动HomeLauncher完成具体的任务细节可分为七个步骤,下面就从具体的细节来解读Android系统完整的初始化过程。一、启动BootLoaderAndroid系统是基于Linux操作系统的,所以它最初的启动过程和Linux一样。当设备通电后首先执行BootLoader引导装载器,BootLoader是在操作系统内核运行之前运行的一段小程序。通过这段小程序初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境引导进入合适的状态,以便为最终调用操作系统内

2、核准备好正确的运行环境。而Linux系统启动时:首先要加载BIOS的硬件信息,并获取第一个启动设备的代号读取第一个启动设备的MBR的引导加载程序(lilo、grub等)的启动信息。加载核心操作系统的核心信息,核心开始解压缩,并且尝试驱动所有的硬件设备。在嵌入式系统中,通常不会有像BIOS那样的固件程序,因此整个系统的加载任务都是通过BootLoader完成的。二、加载系统内核Linux内核映像通常包括两部分代码,分别为实模式代码和保护模式代码。当BootLoader装载内核映像到代码段内存时,分别放置实模式代码和保护模式代码到不同的位置,然后进入实模式代码执行,实模式代码执行完成后转入保护模式

3、代码。实模式和保护模式的概念再次不做过多解释,读者可以自行查阅资料。三、启动Init进程当系统内核加载完成之后,会首先启动Init守护进程,它是内核启动的第一个用户级进程,它的进程号总是1。Init进程启动完成之后,还负责启动其他的一些重要守护进程,包括:Usbd进程(USBDaemon):USB连接后台进程,负责管理USB连接。adbd进程(AndroidDebugBridgeDaemon):ADB连接后台进程,负责管理ADB连接。debuggerd进程(DebuggerDaemon):调试器后台进程,负责管理调试请求及调试过程。rild进程(RadioInterfaceLayerDaemo

4、n):无线接口层后台进程,负责管理无线通信服务。四、启动Zygote进程Init进程和一些重要的守护进程启动完成之后,系统启动Zygote进程。Zygote进程启动后,首先初始化一个DalvikVM实例,然后为它加载资源与系统共享库,并开启Socket监听服务,当收到创建DalvikVM实例请求时,会通过COW(copyonwrite)技术最大程度地复用自己,生成一个新的DalvikVM实例。DalvikVM实例的创建方法基于linux系统的fork原理。其实,我个人理解,Zygote进程就相当于Linux系统中的fork进程。由它可以在系统运行期间,接收到创建虚拟机请求时,孵化DalvikV

5、M实例。Zygote进程孵化DalvikVM实例流程如下图所示:五、启动Runtime进程在Zygote进程启动完成之后,Init进程会启动Runtime进程。Runtime进程首先初始化服务管理器(ServiceManager),并把它注册为绑定服务(Binderservices)的默认上下文管理器,负责绑定服务的注册与查找。然后Runtime进程会向Zygote进程发送启动系统服务(SystemService)的请求,Zygote进程收到请求后,会孵化出一个新的DalvikVM实例并启动系统服务进程。Runtime进程的启动流程如下图所示:六、启动本地服务SystemService会首先启

6、动两个本地服务(由C或C+编写的native服务),SurfaceFlinger和AudioFlinger,这两个本地系统服务向服务管理器注册成为IPC服务对象,以便在需要它们的时候很容易查找到。然后SystemService会启动一些Android系统管理服务,包括硬件服务和系统框架核心平台服务,并注册它们成为IPC服务对象。本地服务进程的启动流程如下图所示:CofllafilManaEtrJTelefihtmei8ScrpiceELldOOLiSmiceCameclj咖ManaRcrLocaLiAnManaEirWtndowManacTA-CljriiyManaretPicksgtPowe

7、rMiijjiptropqgOQi眇onSendeeAiijjaoFiinscr注购服劳Surfa匚亡FingerSnmceMafLaeeroRunlmii-进程?!图3SystemService启动本地服务流程图七、启动HomeLaucher当SystemService加载了所有的系统服务后就意味着系统就准备好了,它会向所有服务发送一个系统准备完毕(systemready)广播。SystemService系统服务进程的启动流程如图1-6所示。当ActivityManagerService接收到systemready广播后,会向Zygoute进程发送创建Dalvik虚拟机实例的请求,Zygoute进程会负责生成一个新的Dalvik虚拟机实例,然后ActivityManagerService在系统中查找具有catego

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论