主题
操作系统技术栈总览
一句话定位:操作系统 = 管理硬件与软件资源的内核程序,四大核心子系统:进程/线程管理(调度、状态、IPC)、内存管理(分页/分段、虚拟内存)、文件系统(目录、挂载、专用文件)、I/O 管理。面试主线集中在进程线程与内存两大块。
子系统地图
| 子系统 | 核心概念 | 面试高频 |
|---|---|---|
| 进程/线程 | 进程状态(三态/五态/七态)、PCB、调度算法、IPC | 进程 vs 线程、调度、通信、死锁 |
| 内存管理 | 连续/非连续分配、分页/分段、快表/多级页表、虚拟内存、页面置换 | 虚拟内存、分页 vs 分段、LRU |
| 文件系统 | 层次目录、挂载、专用文件(块/字符/管道) | 较少 |
| I/O | 字符设备/块设备/网络设备 | 较少 |
| 内核 | 用户态/内核态、系统调用 | 系统调用 |
进程 vs 线程(一句话)
进程是操作系统资源分配的最小单位,线程是处理器调度执行的最小单位。 进程有独立地址空间、切换开销大、一个崩溃不波及其他;线程共享进程地址空间、切换开销小、一个崩溃全进程死。详见 概念卡片:进程与线程。
进程管理主线
- 状态模型:三态(就绪/执行/阻塞)→ 五态(+创建/终止)→ 七态(+挂起就绪/挂起阻塞)。
- 调度:FCFS(先来先服务)、SJF(短作业优先)、RR(时间片轮转)、多级反馈队列(公认较好,UNIX 采用)、优先级调度。
- 通信:管道/有名管道/信号/消息队列/信号量/共享内存/套接字七种。
- 死锁:互斥 + 请求保持 + 不可剥夺 + 循环等待四条件。
内存管理主线
- 分配方式:连续(块式)vs 非连续(页式/段式)。
- 地址转换:逻辑地址 → 物理地址,靠 MMU;快表(TLB)加速、多级页表省空间。
- 虚拟内存:基于局部性原理(时间/空间),定义连续虚拟地址空间,内存可超物理内存。
- 页面置换:OPT(理想)/FIFO/LRU/LFU。
不变量(必须成立的约束)
- 进程 = 资源分配单位,线程 = 调度单位;线程是进程的一部分,不能独立执行。
- 死锁必须四条件同时成立,破坏任一即可预防。
- 虚拟内存的实现建立在离散分配基础上(请求分页/分段/段页式),依赖缺页中断 + 页面置换。
- 用户态程序访问内核级资源必须走系统调用。
常见误解
- 以为「进程一定比线程慢所以少用进程」→ 进程更健壮,隔离性需求场景(如多服务)必须用进程。
- 以为「虚拟内存就是拿硬盘当内存」→ 更本质是定义连续虚拟地址空间 + 内存外存两级存储。
- 以为「快表是页表的一部分」→ 快表是页表的高速缓存(TLB),存部分页表项。
关联
- 进程线程:概念卡片:进程与线程
- IPC 与同步:概念卡片:进程间通信与线程同步
- 死锁:概念卡片:死锁
- 内存:概念卡片:内存管理与虚拟内存
- 面试:面试题蒸馏卡:操作系统