A — 操作系统概述

操作系统是管理计算机硬件资源、为应用程序提供运行环境的系统软件。它是硬件之上的第一层软件,也是所有其他软件的基础。

操作系统的核心职责

职责说明
资源抽象将物理硬件(CPU、内存、磁盘)抽象为进程、虚拟内存、文件等概念
资源分配在多个请求者之间公平分配 CPU 时间、内存空间、I/O 带宽
隔离保护确保进程之间互不干扰,内核空间与用户空间严格隔离
并发管理协调多进程/多线程的并发执行,保证数据一致性

用户态与内核态

现代 CPU 通常提供至少两个特权级别(x86 的 Ring 0 和 Ring 3):

graph TD
 A[用户态: Ring 3] -->|"系统调用 (syscall)"| B[内核态: Ring 0]
 B -->|"返回结果"| A
 B --> C[直接访问硬件]
 C --> B
层级能做什么不能做什么
用户态执行应用程序代码、调用库函数、通过系统调用请求内核服务直接访问硬件、修改页表、执行特权指令
内核态访问所有内存地址、执行所有 CPU 指令、管理硬件设备(无权限限制)

用户态程序请求内核服务的方式是系统调用(System Call)。常见系统调用:readwriteopencloseforkexecvemmapbrk

中断与异常

操作系统不是”主动管理”硬件的,而是被动响应。CPU 通过中断和异常机制通知内核:

类型触发来源举例
硬件中断外部设备键盘按下、网卡数据到达、定时器到期
软件异常CPU 执行指令时缺页中断(page fault)、除零错误、非法指令
陷入(Trap)主动触发系统调用(应用程序主动请求进入内核)
flowchart TD
 A["用户态代码正常执行"] --> B{"发生中断/异常/系统调用?"}
 B -->|是| C["硬件保存上下文(PC, 寄存器)"]
 C --> D["切换到内核栈"]
 D --> E["查中断向量表(IVT)"]
 E --> F["跳转到对应的中断处理函数"]
 F --> G["硬件恢复上下文"]
 G --> H["回到用户态,继续执行"]
 B -->|否| A

中断向量表(IVT)是内核在启动时设置好的一张函数指针表,入口 0 对应除零错误,入口 14 对应缺页中断(x86),入口 0x80syscall 对应系统调用。

内核的类型

类型特点代表
宏内核(Monolithic)所有服务在内核态运行,高性能但内核庞大Linux, BSD
微内核(Microkernel)最小化内核,大部分服务跑在用户态,更安全但通信开销大Minix, QNX, seL4
混合内核结合两者优点Windows NT, macOS (XNU)

Linux 是宏内核,但支持可加载内核模块(LKM),允许动态扩展内核功能而不必重新编译。

启动过程

固件(BIOS/UEFI)→ 引导加载器(GRUB)→ 内核加载 → init/systemd → 用户空间

引导加载器将内核映像从磁盘读入内存,设置页表和栈,跳转到内核入口点 _start,内核初始化子系统后启动第一个用户进程(/sbin/init)。

本章与其他模块的链接