2434 字
12 分钟
操作系统面试学习路线与知识地图
这份导读面向后端校招与初级岗位,目标是先建立能讲清机制的基础,再按岗位需要扩展。下面的“必会”是学习优先级判断,不是题频统计,也不代表任何招聘方的统一考纲。不需要按 35 篇编号顺序逐篇读;先走一遍主线,掌握每站标准,再按追问补专题。
知识地图
处理器权限与执行实体├─ 用户态 / 内核态 → 系统调用└─ 进程 → 线程 → 状态转换、创建与回收、调度 ├─ 并发共享状态 → 竞态 / 临界区 → 锁、信号量、条件变量、原子操作 │ └─ 多资源等待 → 死锁条件 → 预防 / 避免 / 检测与恢复 ├─ 虚拟地址空间 → 页表与 TLB → 缺页处理 │ └─ 内存压力 → 页面回收 → 工作集与抖动 └─ 等待外部事件 → I/O 模型 → 多路复用 / 异步完成进程间共享与协作 → IPC 选择(管道、共享内存、信号、Socket)因果关系可以这样记:进程与线程说明“谁在执行、共享什么”;多个执行流共享数据后,必须解决竞态和同步;资源获取顺序不当可能形成死锁。内存管理把进程看到的地址映射到物理页面,缺页是按需映射或访问错误的处理入口;内存压力才会进一步涉及换页和抖动。线程等待文件、网络等事件时,则要选择阻塞、非阻塞、多路复用或异步模型;不同进程之间还需 IPC 建立数据通道和同步协议。
建议先读的 10 站主线
每站给出一个主入口和可选补充。主入口掌握后即可继续;可选文章用于遇到相关追问或想看机制细节时查阅,不要求把所有链接都读完。
- 进程与线程:进程和线程有什么区别。掌握标准:说清资源/地址空间与执行流的区别、共享与私有状态,以及多线程为何不一定更快。
- 生命周期:进程有哪些状态。掌握标准:能区分就绪与阻塞,并说明 I/O 完成后通常先回就绪队列;挂起不等于整个进程都换出。
- 权限边界:主入口读用户态和内核态。可选补充:系统调用机制。掌握标准:能讲系统调用如何进入内核,并说明态切换不等同于线程上下文切换。
- 创建和回收:主入口读fork、exec 和 wait。可选补充:僵尸进程和孤儿进程。掌握标准:区分创建进程、替换程序映像和回收退出状态;进阶时能分辨僵尸与孤儿。
- 竞态问题:竞态条件和临界区。掌握标准:用读改写交错的例子解释丢失更新,并说明互斥、进展和有界等待的含义。
- 同步工具:主入口读互斥锁和自旋锁。可选补充:信号量与条件变量,按实际项目或面试追问选择。掌握标准:能解释互斥锁和自旋等待的差别,以及自旋不适合长时间等待;若选读补充,再掌握信号量计许可、条件变量等待谓词。
- 死锁:死锁四条件与预防。掌握标准:准确说出四个必要条件,并能用锁顺序破坏循环等待;“避免、预防、检测”不能混为一谈。
- 虚拟内存与缺页:主入口读缺页异常与虚拟内存边界,它覆盖常见映射来源与错误分支。可选补充:虚拟内存概览。掌握标准:能按匿名页、文件映射、换出页、非法访问解释缺页,并说明虚拟地址空间不等于 RAM 或 Swap。
- 调度:主入口读抢占式调度、SJF 与 MLFQ。可选速览:进程调度算法概览。掌握标准:能区分抢占与非抢占,解释 SJF 最优结论依赖的假设及 MLFQ 如何反馈;若要对比 FCFS、RR、优先级,再看概览。
- 通信与 I/O:IPC 主入口读进程间通信选型;I/O 主入口读阻塞、非阻塞、同步、异步。可选概览:IPC 方式和I/O 模型;Linux 网络场景再查 select/poll/epoll。掌握标准:能按本机/跨机器和数据交换方式选择 IPC;能区分阻塞/非阻塞与同步/异步。若继续看多路复用,知道就绪通知后仍要由应用读写即可。
分类目录
目录编号与页面的系列导航一致:导读是第 1 篇,后续专题按基础主干、追问深化、场景拓展排列。主线用于第一轮学习,完整目录用于按问题查阅。
以下 35 篇全部纳入地图。先按主线里的主入口学习;“常见追问”和“岗位场景拓展”按面试追问、项目场景选择,不是额外必读清单。同一主题的概览与机制专题不必重复背诵,按下面的首选路径学习即可。
基础必会
- 用户态和内核态:权限级和内核入口。
- 系统调用:系统调用、普通函数调用与上下文切换的差别。
- 进程和线程:地址空间、资源和执行流。
- 进程状态:就绪、运行、阻塞、终止与挂起。
- fork、exec、wait:创建、执行映像替换、等待回收。
- 竞态条件和临界区:共享状态与互斥目标。
- 互斥锁和自旋锁:阻塞等待和忙等的适用边界。
- 死锁四条件与预防:四必要条件及工程预防。
- 缺页异常与虚拟内存边界:按缺页原因分支回答。
- 阻塞、非阻塞、同步、异步:把等待阶段和完成责任分开。
- 抢占式调度、SJF 与 MLFQ:调度抢占与经典算法的适用条件。
- 进程间通信选型:按数据量、进程关系和同步需求选择通道。
常见追问
- 线程切换过程:同进程线程共享地址空间时的切换概览。它与下篇有重叠;先读本篇即可,想补进程切换和 TLB 再读详解。
- 进程上下文切换:保存恢复、地址空间与缓存成本;与线程切换文章重复处可跳过。
- 死锁概览:用于快速回顾定义和预防思路;四条件及其对应策略以死锁四条件与预防为主,银行家算法和检测恢复见专题。
- 银行家算法、检测与恢复:安全序列与避免/检测的区别。
- 活锁、饥饿和死锁:区分“忙但没进展”和等待不公平。
- 调度算法概览:FCFS、SJF、优先级、RR、MLFQ 的速览。
- 调度指标与优先级反转:等待/响应/周转与优先级继承。
- 虚拟内存概览:地址空间、隔离与 Swap 的整体速览;缺页分支以基础主线专题为主。
- 地址转换、TLB 和多级页表:补页表遍历和 TLB miss 与缺页的区别。
- 分段与分页:传统内存管理模型对比;有了虚拟内存和缺页基础后再读。
- 页面置换算法:FIFO、LRU、Clock 与实际回收策略。
- 信号量:计数许可与生产者消费者同步。
- 条件变量:围绕共享谓词等待与唤醒。
- 进程间通信方式概览:六类 IPC 的特点;具体场景以基础主线的选型专题为主。
- I/O 模型概览:五种常见模型的速览;阻塞/异步语义以主线对照专题为主。
- select、poll、epoll:Linux 多路复用接口及连接规模取舍。
- epoll 的 LT 与 ET:掌握非阻塞读到 EAGAIN 的原因和漏事件风险。
- 异步 I/O:就绪通知和完成通知的细分,知道接口语义依实现而异即可。
- 僵尸与孤儿进程:进程回收的常见追问。
岗位场景拓展
重复主题怎么读
- 死锁:主读四条件与预防;按追问读银行家算法与检测恢复。死锁概览可用于快速复习。
- 虚拟内存:主读缺页边界;虚拟内存概览用于快速建立全局印象。之后按追问读TLB/页表或分页/分段。
- 调度:主读抢占式调度、SJF 与 MLFQ;算法概览用于快速扫过其他算法。
- I/O:主读阻塞/非阻塞/同步/异步对照;I/O 模型概览用于速览。Linux 网络服务场景再看select/poll/epoll和LT/ET。
- 进程切换:先读线程切换;若要理解地址空间差异,再看进程切换详解。
- IPC:主读IPC 选型并按场景理解同步和数据通道;通信方式概览可作为类别速查。
到什么程度算学会
后端校招和初级岗位,优先达到三点:能用自己的话讲清概念;能画出关键流程或举一个并发/地址映射例子;能解释常见取舍和一个边界条件。银行家算法的多轮数字模拟、优先级反转协议细节、工作集模型推导、mmap 持久化细节等属于按岗位与面试追问加学,不必一开始全部背熟。
操作系统面试学习路线与知识地图
https://blog.xqcherry.top/posts/interview/operating-system/operating-system-interview-roadmap/ 目录