Android 进阶——系统启动之BootLoader 及内核启动一(下)

文章大纲

  • 引言
  • 一、Android 系统启动流程概述
    • 1、手机电源被打开时,首先是引导进入BootLoader分区
    • 2、BootLoader分区加载Linux 内核
    • 3、内核解析执行init.rc脚本并启动进程id为1 的init进程
    • 4、init进程初始化各种Android系统服务、ServiceManager以及Zygote 进程孵化器
    • 5、Zygote 创建Android虚拟机、启动SystemServer 服务进程以及系统服务相关的JNI动态注册
    • 6、通过SystemServer服务进程(system_server)打开Binder线程池并启动SystemServeiceManager
    • 7、SystemServeiceManager 启动具体的Android 系统服务
    • 8、最后通过AMS 启动Launcher App。
  • 二、Launcher 启动新App进程概述

引言

一、Android 系统启动流程概述

Android 进阶——系统启动之BootLoader 及内核启动一(下)_第1张图片

1、手机电源被打开时,首先是引导进入BootLoader分区

此时加载定制厂商绝大部分的系统设备和初始化代码

2、BootLoader分区加载Linux 内核

主要是完成内存、IO设备等初始化工作。

3、内核解析执行init.rc脚本并启动进程id为1 的init进程

4、init进程初始化各种Android系统服务、ServiceManager以及Zygote 进程孵化器

Zygote 受精卵通过细胞分裂产生的新细胞起初在形态、结构方面相似,都具有分裂能力,在发育过程中这些细胞各自具有了不同的功能如保护、营养、输导等功能,形态结构也发生了变化,即细胞分化从而形成了不同的细胞群,从名字上我们可以窥见Zygote 的功能和特点,这也是阅读源码的一种小技巧。

Android系统中的所有应用进程都是由Zygote fork得到的。

5、Zygote 创建Android虚拟机、启动SystemServer 服务进程以及系统服务相关的JNI动态注册

6、通过SystemServer服务进程(system_server)打开Binder线程池并启动SystemServeiceManager

7、SystemServeiceManager 启动具体的Android 系统服务

SystemSeviceManager 启动ActivityManagerService、PackageManagerServeice、WindowManagerService等等。

8、最后通过AMS 启动Launcher App。

二、Launcher 启动新App进程概述

Android 进阶——系统启动之BootLoader 及内核启动一(下)_第2张图片
未完待续…

你可能感兴趣的:(Android,进阶,android,BootLoader,系统启动,init进程)