美文网首页
Android启动流程

Android启动流程

作者: zthh | 来源:发表于2016-10-16 22:22 被阅读360次

    《Android安全技术揭秘与防范》读书笔记


    在讲述Android启动过程前,先简单介绍一下Android的层次结构和分区结构

    Android系统的层次结构

    整体架构分为如下4层

    • 应用层(Application)
    • 框架层(Framework)
    • 核心库与运行环境层(Libraries & Android Runtime)
    • Linux内核层(Linux Kernel)

    Android系统的分区结构

    分区是逻辑层存储单位用来区分设备内部的永久性存储结构。不同厂商和平台有不同的分区布局。然而,有几个分区最常见,即Boot、Data、Recovery和Cache分区。通常的情况下NAND闪存的设备都具备一下分区布局

    • Boot Loader分区

      中文名称“系统加载区”,它的作用相当于电脑的BIOS,在手机进入系统之前初始化软硬件环境、加载硬件设备,最终让手机成功启动。

    • Boot分区

      存储着Android的Boot镜像,其中包含着Linux kernel(zImage)与initrd等文件。

    • Splash分区

      主要是存储系统启动后第一屏显示的内容,一般都是一些公司的Logo或者动画,存储在Boot Loader中。

    • Radio分区

      这个事基带所在的分区,存储着一些与通信质量相关的Linux驱动,如电话、GPS等。常用的驱动是可以打包存在于Linux的内核Boot分区,但为了提升设备的通信质量,所以单独开辟了Radio分区。

    • Recovery分区

      存储着一个mini型的Android Boot镜像文件,主要的作用是用来做故障维修和系统恢复。

    • System分区

      存储着Android系统的镜像文件,镜像文件中包含着Android的Framework、Libraries、Binaries和一些预装应用。系统挂载后既/system目录

    • User Data分区

      也称为数据分区,它是设备的内部存储分区,如应用产生的图片、声音等数据文件。系统挂载后在/data目录下

    • Cache区

      用于存储各种使用的文件,如回复日志和OTA下载的更新包。在应用程序安装在SD卡上时,它也可能包含Dalvik缓存文件夹,其中存储了Dalvik虚拟机的缓存文件。

    Android启动流程

    主要分为6个阶段:BootLoader加载阶段、加载Kernel与initrd阶段、初始化设备服务阶段、加载系统服务阶段、虚拟机初始化阶段、启动完成阶段。

    Android系统启动流程

    -Boot Loader阶段
    Boot Loader是在物理电源按下之后第一个加载的。在此阶段会运行一些制造商自定义的初始化代码。Boot Loader内部也分为多个阶段,对此不做深入讨论。

    -加载Kernel与initrd阶段
    Boot分区加载Linux kernel与initrd到RAM,最后跳转到Kernel继续完成启动。

    -初始化设备服务阶段
    Android kernel则会启动所有Android系统设备所必须的服务,如初始化Memory、初始化IO、内存保护、中断处理程序、CPU调度、设备驱动,最后还会挂载文件系统,启动第一个用户进程init。

    -加载系统服务阶段
    init是Linux系统中用户空间的第一个进程,其进程PID是1,父进程为Linux Kernel核的0号进程。init具有特殊的初始化使命,它会加载一个初始化脚本文件init.rc,启动Android系统的一些核心服务,如针对通话的rild、针对VPN链接的mtpd、提供adb相关功能adbd、支持存储外设的热插拨功能vold、负责进程孵化服务的Zygote、Service Manager等。

    -虚拟机初始化阶段
    其中启动的Zygote进程会创建Dalvik VM,会启动第一个Java组件系统服务,最后是Android Framework服务,如Activity Manager、Package Manager、Window Manager

    -启动完成阶段
    当系统完成启动之后,载入Home(桌面应用程序),然后做一些应用层的初始化的工作,如播放一个全局的广播ACTION_BOOT_COMPLETED.

    相关文章

      网友评论

          本文标题:Android启动流程

          本文链接:https://www.haomeiwen.com/subject/durayttx.html