欢迎来到天天文库
浏览记录
ID:48045230
大小:1.76 MB
页数:16页
时间:2020-01-13
《Android系统服务之开机流程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1Android开机流程介绍秘密▲先来看看Android系统在手机内存中的是怎么放置的:地址最低的地方放Bootloader,然后放LinuxKernel,接下来的三个区域分别放置编译源码生成的三个img文件(ramdisk.img,system.img和data.image),用户在使用过程中产生的文件等都是放在最后一个DataImage区域里面(即/data/data/),这部分区域大小不固定,根据手机实际内存来确定。手机启动的时候从最低的地址开始执行,首先执行Bootloader,Bootloader会去加载LinuxK
2、ernel,初始化硬件,然后挂载RamDisk(Initprocess放在这里面的,另:initprocess的PID=1),并启动一个初始化的进程……秘密▲2Android系统完整的启动过程,从系统层次角度可分为Linux系统层、Android系统服务层、Zygote进程模型三个阶段;从开机到启动HomeLauncher完成具体的任务细节可分为七个步骤,下面就从具体的细节来解读Android系统完整的初始化过程。3秘密▲Android系统是基于Linux操作系统的,所以它最初的启动过程和Linux一样。当设备通电后首先执行B
3、ootLoader引导装载器,BootLoader是在操作系统内核运行之前运行的一段小程序。通过这段小程序初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境引导进入合适的状态,以便为最终调用操作系统内核准备好正确的运行环境。Android系统是基于Linux操作系统的,所以它最初的启动过程和Linux一样。当设备通电后首先执行BootLoader引导装载器,BootLoader是在操作系统内核运行之前运行的一段小程序。通过这段小程序初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境引导进入合适的状态,以便为最终
4、调用操作系统内核准备好正确的运行环境。一、启动BootLoader本文中所有信息归斐迅通讯技术有限公司所有,未经允许,不得外传4秘密▲而Linux系统启动时:1)首先要加载BIOS的硬件信息,并获取第一个启动设备的代号2)读取第一个启动设备的MBR的引导加载程序(lilo、grub等)的启动信息。3)加载核心操作系统的核心信息,核心开始解压缩,并且尝试驱动所有的硬件设备。…………在嵌入式系统中,通常不会有像BIOS那样的固件程序,因此整个系统的加载任务都是通过BootLoader完成的。55秘密▲Linux内核映像通常包括两部
5、分代码,分别为实模式代码和保护模式代码。当BootLoader装载内核映像到代码段内存时,分别放置实模式代码和保护模式代码到不同的位置,然后进入实模式代码执行,实模式代码执行完成后转入保护模式代码。实模式和保护模式的概念再次不做过多解释,大家可以自行查阅资料。二、加载系统内核6秘密▲三、启动Init进程当系统内核加载完成之后,会首先启动Init守护进程,它是内核启动的第一个用户级进程,进程号总是1。Init根据init.rc和init.xxx.rc脚本文件建立很多基本的服务,如ServiceManager、zygote等等。I
6、nit.rc是Android自己规定的初始化脚本,该脚本包含四个类型的声明:Actions/Commands/Services/Options例子:serviceril-daemon/system/bin/rildclassmainsocketrildstream660rootradiosocketrild-debugstream660radiosystemuserrootgroupradiocacheinetmiscaudiosdcard_rwlog关于该脚本的说明,请参看system/core/init/readme.tx
7、t。本文中所有信息归斐迅通讯技术有限公司所有,未经允许,不得外传7秘密▲作为天字号第一个进程,Init进程启动完成之后,还负责启动其他的一些重要守护进程,包括:Usbd进程(USBDaemon):USB连接后台进程,负责管理USB连接。adbd进程(AndroidDebugBridgeDaemon):ADB连接后台进程,负责管理ADB连接。debuggerd进程(DebuggerDaemon):调试器后台进程,负责管理调试请求及调试过程。rild进程(RadioInterfaceLayerDaemon):无线接口层后台进程,负
8、责管理无线通信服务。8秘密▲四、启动zygote进程Init进程和一些重要的守护进程启动完成之后,系统启动Zygote进程。Zygote进程启动后,首先初始化一个DalvikVM实例,然后为它加载资源与系统共享库,并开启Socket监听服务,当收到创建DalvikVM实例请求
此文档下载收益归作者所有