系统启动流程分析
一、PC机启动流程分析
1.1 BIOS程序
BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。 BIOS是个人电脑启动时加载的第一个软件。它是一组固化到计算机主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序, 其主要功能是针对CPU、内存、主板芯片组、显卡及外围硬件设备做初始化动作 。
1.2 引导程序
引导装载程序(英语:boot loader)是计算机开机自检完成后用于装载操作系统或者其他系统软件的计算机程序。自检完成后运行引导装载程序,引导装载程序可以从硬盘装载到内存中。 引导程序的主要功能是加载操作系统到内存中运行 ,常用的Linux操作系统引导程序如下
GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
UEFI(Unified Extensible Firmware Interface),即统一可扩展固件接口,是一种新型的计算机
固件接口标准,用于替代传统的 BIOS(基本输入输出系统)。以下是关于 UEFI 的详细介绍:
特点
图形化界面:UEFI 提供了直观的图形化操作界面,用户可以使用鼠标进行操作,相比传统 BIOS 的纯文
本界面,更易于使用和配置。
支持大容量硬盘:UEFI 能够支持大于 2TB 的硬盘,突破了传统BIOS对硬盘容量的限制,这对于现代大
容量存储设备的应用非常重要。
快速启动:UEFI的启动速度比传统BIOS更快。它采用了并行启动方式,可以同时初始化多个设备,减少了
启动时间。
安全启动:UEFI支持安全启动功能,通过验证操作系统的数字签名来确保系统的安全性,防止恶意软件在
启动过程中入侵系统。
工作原理
计算机开机后,UEFI 固件首先运行,它会进行硬件初始化,包括检测硬件设备、初始化内存等操作。
然后,UEFI 会查找可启动设备,并根据设置的启动顺序尝试从相应设备启动。UEFI 支持多种启动方式,
如从硬盘、光盘、U 盘等启动。
在找到启动设备后,UEFI会加载该设备上的引导加载程序(如 GRUB for Linux 系统或 Windows Boot
Manager for Windows 系统),将控制权交给引导加载程序,由引导加载程序进一步加载操作系统内核
和相关文件,完成系统启动过程。
与 BIOS 的区别
接口类型:BIOS 是基于 16 位汇编语言的程序,接口较为复杂且不便于扩展和维护;UEFI 则采用了更
高级的编程语言和接口标准,具有更好的可扩展性和兼容性。
启动方式:BIOS采用MBR(Master Boot Record)分区表,最多支持 4 个主分区,启动过程相对较慢;
UEFI 通常采用 GPT(GUID Partition Table)分区表,支持更多的分区,且启动速度更快。
功能特性:UEFI具有图形化界面、安全启动等功能,而BIOS通常不具备这些功能
LILO(LInux Loader),即Linux引导程序。LILO是一个在系统启动时运行的程序,它用于选择引导计算机启动的操作系统
LILO(Linux Loader)是Linux系统中早期常用的引导加载程序,在GRUB出现之前被广泛使用,不过现在
已较少采用。
特点
简洁高效:LILO的设计相对简单,它的主要功能就是加载Linux内核,能够快速地将内核映像加载到内存中
并启动系统,在早期的Linux系统中表现出较好的性能。
支持多种硬件平台:LILO可以在多种硬件平台上运行,包括 x86、PowerPC、ARM 等,具有一定的跨平台
性,能适应不同架构的计算机硬件。
配置相对简单:其配置文件通常比较简洁,用户可以通过编辑配置文件来指定内核映像的位置、启动参数等
信息,对于熟悉 Linux 系统的用户来说,容易理解和掌握。
1.3 操作系统
操作系统(英语:Operating System,缩写:OS)是一种系统软件程序,主要用来管理并控制计算机操作和运用,通过运行硬件、软件和提供公共服务来与用户进行交互。
功能:
- 进程管理:负责创建、调度和终止进程,分配系统资源(如 CPU 时间、内存空间等)给各个进程,使它们能够并发执行,提高系统的运行效率。
- 内存管理:对计算机的内存进行分配、回收和保护。它将内存空间划分给不同的进程使用,确保各个进程之间的内存相互隔离,防止数据冲突和非法访问。同时,还会采用虚拟内存技术,将一部分硬盘空间模拟成内存使用,以满足进程对内存的需求。
- 文件系统管理:操作系统通过文件系统来组织、存储和管理文件,提供文件的创建、删除、读取、写入等操作接口,使用户和应用程序能够方便地访问和管理文件。
- 设备管理:负责管理计算机的各种外部设备,如打印机、硬盘、鼠标、键盘等。它为设备提供驱动程序,使设备能够与计算机系统进行通信,并且协调设备之间的工作,合理分配设备资源。
- 用户接口:为用户提供与计算机交互的界面,包括命令行界面(CLI)和图形用户界面(GUI)。用户可以通过这些界面输入命令、操作图标和菜单,来完成各种任务,如启动应用程序、管理文件等。
常见的桌面应用程序:
- Windows
- Linux
- MacOS
1.4 挂载文件系统
文件系统是操作系统用于组织、存储和管理文件的一种机制,它规定了文件在存储设备上的存储方式、组织结构以及访问方法。以下是关于文件系统的详细介绍:
功能
- 文件存储与组织:负责将文件的数据存储到存储设备(如硬盘、U 盘等)上,并以一定的目录结构和文件名来组织文件,方便用户和系统进行查找和访问。
- 空间管理:对存储设备的空间进行分配和管理,跟踪哪些空间已被使用,哪些空间是空闲的,以便在创建新文件或扩展现有文件时能够合理地分配存储空间。
- 文件访问控制:通过权限设置来控制不同用户对文件的访问权限,如读取、写入、执行等,以保证文件的安全性和完整性。
- 文件系统维护:包括检查文件系统的一致性、修复损坏的文件系统结构、清理垃圾文件等功能,确保文件系统的正常运行。
常见类型
- FAT(File Allocation Table):
- 特点:简单、兼容性好,被广泛应用于早期的 Windows 系统和移动存储设备。它采用文件分配表来记录文件在磁盘上的存储位置,支持短文件名。
- 应用场景:适用于对兼容性要求高、存储容量较小的设备,如旧版本的 Windows 系统安装盘、小型 U盘等。
- NTFS(New Technology File System):
- 特点:是 Windows NT 及后续版本操作系统使用的文件系统,具有强大的安全性、可靠性和高性能。支持长文件名、文件加密、磁盘配额、压缩等功能,并且能够自动修复文件系统错误。
- 应用场景:主要用于 Windows 系统的硬盘分区,特别是在需要高性能和安全保障的服务器环境以及个人电脑中广泛使用。
- ext 系列(ext2、ext3、ext4):
- 特点:是 Linux 系统中常用的文件系统。ext2 是基础版本,ext3 在 ext2 的基础上增加了日志功能,提高了文件系统的可靠性和恢复速度,ext4 则进一步在性能和功能上进行了优化,支持更大的文件和分区,以及更高效的磁盘空间分配。
- 应用场景:广泛应用于各种 Linux 发行版的服务器和个人电脑中,根据不同的需求可以选择不同的 ext版本。
扩展知识
快速格式化和低级格式化
快速格式化:主要是对文件系统进行初始化操作。它会快速删除磁盘上的文件分配表(FAT)或主文件表
(MFT)等文件系统相关信息,将磁盘标记为空白状态,让操作系统认为磁盘上没有任何文件,但实际上磁
盘上的数据并未真正被删除,只是失去了文件系统的索引,无法被操作系统直接访问。
低级格式化:也称为物理格式化,它是对磁盘进行最底层的格式化操作。会在磁盘上创建磁道和扇区,划分
柱面等物理结构,同时还会对磁盘表面进行检测,标记出有坏道的区域,确保后续的数据存储不会使用这些
有问题的地方。低级格式化会彻底清除磁盘上的所有数据,包括文件系统、引导记录以及其他所有信息,将
磁盘还原到初始的空白状态。
二、嵌入式设备启动流程
2.1 启动流程分析

2.2 启动流程总结
- [1]iROM固化代码(基本硬件初始化,判别启动方式(SD/USB/EMMC),读取存储介质最前面的一部分数据到iRAM
- [2]iRAM中的代码运行bootloader第一阶段(初始化系统时钟,初始化内存,搬移bootloader到内存)
- [3]内存中运行bootloader第二阶段(初始化基本的硬件设备,加载OS到内存)
- [4]内存中运行操作系统
- [5]挂载文件系统
- [6]运行应用程序
bootloader = BIOS + 引导程序
三、Android系统架构图

- Linux Kernel(Linux 内核)
- 功能:作为 Android 系统的基础,提供底层硬件驱动支持,像音频、蓝牙、显示等驱动 ,保障硬件正常工作;还负责内存管理、进程管理以及电源管理,确保系统稳定运行。
- Hardware Abstraction Layer (HAL,硬件抽象层)
- 功能:对硬件功能进行抽象,以模块形式(如音频、蓝牙等)向上层提供统一接口,隐藏硬件实现细节,方便不同硬件平台适配。
- 重要性:实现硬件相关代码与上层框架分离,利于硬件厂商更新驱动,不影响上层应用,提升系统可移植性与兼容性。
- Android Runtime(安卓运行时)
- ART(Android Runtime):取代 Dalvik 成为 Android 主要运行环境,在应用安装时预编译字节码,提升应用启动速度和运行效率 。
- Core Libraries(核心库):提供Java语言基础功能,支持开发者使用Java语法开发Android应用,实现跨平台开发。
- Java API Framework(Java应用程序接口框架)
- Content Providers(内容提供者):实现不同应用间数据共享,如联系人、短信数据共享。View System(视图系统):构建应用用户界面,定义各种UI组件及布局方式。
- Managers(管理器):涵盖 Activity(活动管理)、Location(位置管理)等,管理系统特定功能,为应用开发提供丰富接口。
- 重要性:为开发者提供丰富API,加速开发进程,保证应用体验一致性。
- System Apps(系统应用)
- 功能:提供基础功能服务,是用户日常使用的重要部分。