系统服务之开机流程ppt课件.ppt_第1页
系统服务之开机流程ppt课件.ppt_第2页
系统服务之开机流程ppt课件.ppt_第3页
系统服务之开机流程ppt课件.ppt_第4页
系统服务之开机流程ppt课件.ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

Android开机流程介绍 秘密 先来看看Android系统在手机内存中的是怎么放置的 地址最低的地方放Bootloader 然后放LinuxKernel 接下来的三个区域分别放置编译源码生成的三个img文件 ramdisk img system img和data image 用户在使用过程中产生的文件等都是放在最后一个DataImage区域里面 即 data data 这部分区域大小不固定 根据手机实际内存来确定 手机启动的时候从最低的地址开始执行 首先执行Bootloader Bootloader会去加载LinuxKernel 初始化硬件 然后挂载RamDisk Initprocess放在这里面的 另 initprocess的PID 1 并启动一个初始化的进程 1 秘密 Android系统完整的启动过程 从系统层次角度可分为Linux系统层 Android系统服务层 Zygote进程模型三个阶段 从开机到启动HomeLauncher完成具体的任务细节可分为七个步骤 下面就从具体的细节来解读Android系统完整的初始化过程 2 秘密 Android系统是基于Linux操作系统的 所以它最初的启动过程和Linux一样 当设备通电后首先执行BootLoader引导装载器 BootLoader是在操作系统内核运行之前运行的一段小程序 通过这段小程序初始化硬件设备 建立内存空间映射图 从而将系统的软硬件环境引导进入合适的状态 以便为最终调用操作系统内核准备好正确的运行环境 Android系统是基于Linux操作系统的 所以它最初的启动过程和Linux一样 当设备通电后首先执行BootLoader引导装载器 BootLoader是在操作系统内核运行之前运行的一段小程序 通过这段小程序初始化硬件设备 建立内存空间映射图 从而将系统的软硬件环境引导进入合适的状态 以便为最终调用操作系统内核准备好正确的运行环境 一 启动BootLoader 本文中所有信息归斐迅通讯技术有限公司所有 未经允许 不得外传 3 秘密 而Linux系统启动时 1 首先要加载BIOS的硬件信息 并获取第一个启动设备的代号2 读取第一个启动设备的MBR的引导加载程序 lilo grub等 的启动信息 3 加载核心操作系统的核心信息 核心开始解压缩 并且尝试驱动所有的硬件设备 在嵌入式系统中 通常不会有像BIOS那样的固件程序 因此整个系统的加载任务都是通过BootLoader完成的 4 5 秘密 Linux内核映像通常包括两部分代码 分别为实模式代码和保护模式代码 当BootLoader装载内核映像到代码段内存时 分别放置实模式代码和保护模式代码到不同的位置 然后进入实模式代码执行 实模式代码执行完成后转入保护模式代码 实模式和保护模式的概念再次不做过多解释 大家可以自行查阅资料 二 加载系统内核 5 秘密 三 启动Init进程 当系统内核加载完成之后 会首先启动Init守护进程 它是内核启动的第一个用户级进程 进程号总是1 Init根据init rc和init xxx rc脚本文件建立很多基本的服务 如ServiceManager zygote等等 Init rc是Android自己规定的初始化脚本 该脚本包含四个类型的声明 Actions Commands Services Options例子 serviceril daemon system bin rildclassmainsocketrildstream660rootradiosocketrild debugstream660radiosystemuserrootgroupradiocacheinetmiscaudiosdcard rwlog关于该脚本的说明 请参看system core init readme txt 本文中所有信息归斐迅通讯技术有限公司所有 未经允许 不得外传 6 秘密 作为天字号第一个进程 Init进程启动完成之后 还负责启动其他的一些重要守护进程 包括 Usbd进程 USBDaemon USB连接后台进程 负责管理USB连接 adbd进程 AndroidDebugBridgeDaemon ADB连接后台进程 负责管理ADB连接 debuggerd进程 DebuggerDaemon 调试器后台进程 负责管理调试请求及调试过程 rild进程 RadioInterfaceLayerDaemon 无线接口层后台进程 负责管理无线通信服务 7 秘密 四 启动zygote进程 Init进程和一些重要的守护进程启动完成之后 系统启动Zygote进程 Zygote进程启动后 首先初始化一个DalvikVM实例 然后为它加载资源与系统共享库 并开启Socket监听服务 当收到创建DalvikVM实例请求时 会通过COW copyonwrite 技术最大程度地复用自己 生成一个新的DalvikVM实例 DalvikVM实例的创建方法基于linux系统的fork原理 8 秘密 Zygote进程就相当于Linux系统中的fork进程 由它可以在系统运行期间 接收到创建虚拟机请求时 孵化DalvikVM实例 Zygote进程孵化DalvikVM实例流程如下图所示 Zygote是在Andorid系统中创建Java世界的盘古 它创建了第一个Java虚拟机 它又是女娲 成功繁殖了framework的核心system server进程 9 秘密 五 启动Runtime进程 在Zygote进程启动完成之后 Init进程会启动Runtime进程 Runtime进程首先初始化服务管理器 ServiceManager 并把它注册为绑定服务 Binderservices 的默认上下文管理器 负责绑定服务的注册与查找 然后Runtime进程会向Zygote进程发送启动系统服务 SystemService 的请求 Zygote进程收到请求后 会 孵化 出一个新的DalvikVM实例并启动系统服务进程 Runtime进程的启动流程如下图所示 10 秘密 SystemService会首先启动两个本地服务 由C或C 编写的native服务 SurfaceFlinger和AudioFlinger 这两个本地系统服务向服务管理器注册成为IPC服务对象 以便在需要它们的时候很容易查找到 然后SystemService会启动一些Android系统管理服务 包括硬件服务和系统框架核心平台服务 并注册它们成为IPC服务对象 本地服务进程的启动流程如下图所示 六 启动本地服务 11 秘密 本地服务向ServiceManager注册为IPC服务端 12 秘密 启动Android的管理服务 13 秘密 Android的管理服务向本地服务管理注册 14 秘密 当SystemService加载了所有的系统服务后就意味着系统就准备好了 它会向所有服务发送一个系统准备完毕 systemready 广播 SystemService系统服务进程的启动流程如图1 6所示 当ActivityManagerService接收到systemready广播后 会向Zygoute进程发送创建Dalvik虚拟机实例的请求 Zygote进程会

温馨提示

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

最新文档

评论

0/150

提交评论