当 Linux 系统启动时,内核会在启动过程的早期阶段接管控制——紧跟在固件(BIOS 或 UEFI)和引导加载程序完成任务之后。此时,压缩的 Linux 内核镜像会被加载到内存中,通常会附带一个称为 initramfs 的最小临时根文件系统,它用于在切换到真实根文件系统并继续系统初始化之前完成早期设置任务,例如加载必要的驱动程序。
从此刻起,Linux 内核就负责管理硬件、执行安全边界以及协调所有用户和系统级进程的运行。Linux 是一个单体内核(monolithic kernel),但具有模块化能力。这意味着核心组件在单一二进制文件中,但可选功能(如设备驱动程序)可以根据需要动态加载和卸载。
1. 用户空间与内核空间
Linux 架构的一个基本特性是严格区分用户空间和内核空间。
-
用户空间(User Space):运行应用程序和用户级进程的地方。这些程序权限有限——它们不能直接访问硬件、内核内存,也不能执行特权 CPU 指令。
-
内核空间(Kernel Space):操作系统的核心所在。它拥有完全权限,可以管理内存、调度进程、控制 I/O 设备并访问所有硬件资源。
什么是权限?
权限指 CPU 执行某些操作的能力。只有特权代码(如内核)才能执行低级任务,例如访问设备寄存器、修改页表或发出硬件中断。用户模式程序只能执行安全的操作子集。
CPU 通过硬件特权级别(通常称为环)来强制执行这种分离。在 x86 系统中,Ring 3 用于用户应用(最低权限),Ring 0 保留给内核(