课程笔记
6.1计算机的启动
启动链
计算机启动时,处理器从平台规定的入口开始执行,逐步准备硬件环境并将控制交给操作系统。一个便于理解的简化顺序是:
- 固件初始化必要硬件,并选择启动目标。
- 启动加载程序准备内核映像和启动参数,随后把控制交给内核。
- 内核初始化内存、设备与调度等运行环境,并启动用户空间的初始进程。
- 用户空间的初始进程继续启动系统服务、会话或应用。
实际平台可以合并或细分这些步骤。例如固件也可能直接加载内核;设备的固件名称、验证机制和启动介质各不相同,不能把一种平台的具体实现当作所有设备的必经步骤。
阅读本节时,先问每个阶段为下一阶段准备什么。教材区分的自检与初始化可放在固件职责中讨论;具体平台可能合并或细分步骤。
阶段之间的依赖
后续阶段依赖前面准备的条件:内核需要可用的执行环境和内核映像,用户空间服务需要内核提供进程和资源管理。阶段用于理解职责与控制权,不意味着每种硬件都先完成同样的自检项目,也不意味着系统服务或登录界面必须按固定次序启动。
启动加载与内核初始化是不同工作:前者准备内核及参数,后者建立系统运行环境并启动用户空间进程。固件也可能直接加载内核,不能把独立加载程序视为所有平台的必经环节。
复习
按固件、加载程序、内核和用户空间画出一条简化控制权链。在每一步标出执行者和依赖条件,再考虑实际平台可能在哪里合并或增加阶段。系统运行后对硬件事件的响应见硬件中断。