当前位置:   article > 正文

Android源码解析之Android系统启动整体流程分析

Android源码解析之Android系统启动整体流程分析

在这里插入图片描述

目录

第一章:Android源码解析之Android系统启动整体流程分析
第二章:Android源码解析之Android init进程分析

前言

计算机的硬件包括:CPU,内存,硬盘,显卡,显示器,键盘鼠标等输入输出设备。

计算机中所有的软件都是存放在硬盘中,程序执行时,需要将程序从硬盘上读取到内存中,然后加载到CPU中来运行。

当按下开机键时,内存中什么都没有,因此需要借助某种方式,将操作系统加载到内存中,而完成这项任务的就是BIOS

BIOS

BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。

它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

在这里插入图片描述

Android启动流程

Android是基于Linux系统的。

但是 它没有BIOS程序,取而代之的是BootLoader(系统启动加载器)。

类似于BIOS,在系统加载前,用于初始化硬件设备,最终调用系统内核准备好环境。

在Android中没有硬盘,而是ROM,类似于硬盘存放操作系统,用户程序等。

在这里插入图片描述

ROM跟硬盘一样也会划分为不同的区域,用于放置不同的程序,在Android中主要划分为以下几个区域:

路径说明
/boot存放引导程序,包括内核和内存操作程序
/system相当于电脑C盘,存放Android系统和系统应用
/recover回复分区。可以进入该分区进行系统回复
/data用户数据区,包含了用户的数据:联系人、短信、设置、用户安装的程序
/cache安卓系统缓存区,保存系统经常访问的数据和应用程序
/misc杂项内容
/sdcard用户自己的存储区域。存放照片视频等
主要流程

系统启动主要流程:

  • 启动电源以及系统启动
  • 引导程序BootLoader
  • Linux内核启动
  • init进程启动
  • Zygote进程启动
  • SystemServer进程启动
  • Launcher启动

请添加图片描述

启动电源以及系统启动

Android系统启动跟PC相似。

当电源按下时,引导芯片代码从预定义的地方(固化在ROM中)开始执行。加载引导程序BootLoader到RAM,然后执行。

引导程序BootLoader

bootloader程序分两个阶段执行。

第一个阶段,检测外部的RAM以及加载对第二阶段有用的程序;

第二阶段,设置网络、内存等等。这些对于运行内核是必要的,为了达到特殊的目标,bootloader可以根据配置参数或者输入数据设置内核。

在这里插入图片描述

Linux内核启动

Linux内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。

当内核完成系统设置时,启动init进程。

init进程启动

Android系统以及各大Linux的发行版,他们的Linux内核部分启动过程都是差不多的,他们之间最大的区别就在于init程序的不同,因为init程序决定了系统在启动过程中,究竟会启动哪些守护进程和服务,以及呈现出怎样的一个用户UI界面。

因此,init程序是分析Android启动过程中最核心的程序。

代码传送门:/system/core/init/init.cpp

init程序最核心的工作主要有3点:
1. 创建和挂载一些系统目录/设备节点,设置权限,如:/dev, /proc, and /sys
2. 解析 init.rc 和 init..rc,并启动属性服务,以及一系列的服务和进程。
3. 显示boot logo,默认是“Android”字样

Zygote进程启动

Zygote进程是从C++进入JAVA的关键地方.

其中创建Java虚拟机并为Java虚拟机注册JNI方法,创建服务器端Socket,启动SystemServer进程。

Zygote进程在Init进程中以service的方式启动的,启动部分写在init.rc中.

SystemServer进程启动

Zygote进程会启动SystemServer进程.

启动Binder线程池和SystemServiceManager,并且启动各种系统服务。

源代码传送门: /frameworks/base/services/java/com/android/server/SystemServer.java

Launcher启动

SystemServer进程启动的AMS会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到界面上。

源代码传送门:/packages/apps/Launcher3/src/com/android/launcher3/Launcher.java

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/654453
推荐阅读
相关标签
  

闽ICP备14008679号