2434 字
12 分钟
操作系统面试学习路线与知识地图
  1. 1操作系统面试学习路线与知识地图本文
  2. 2什么是用户态和内核态
  3. 3什么是系统调用?它和普通函数调用有什么区别
  4. 4进程和线程有什么区别
  5. 5进程的五种状态:新建、就绪、运行、阻塞与终止
  6. 6fork、exec 和 wait 分别做什么
  7. 7什么是竞态条件和临界区?如何保证互斥
  8. 8互斥锁和自旋锁有什么区别?分别适合什么场景
  9. 9死锁的四个必要条件是什么?如何逐个预防
  10. 10缺页异常如何处理?虚拟内存不等于 Swap
  11. 11阻塞、非阻塞、同步、异步 I/O 怎么区分
  12. 12抢占式调度是什么?SJF 和 MLFQ 适合什么假设
  13. 13进程间通信如何选择?管道、共享内存、信号和 Socket
  14. 14线程切换时,操作系统要做哪些操作
  15. 15进程上下文切换要保存什么?为什么有开销
  16. 16死锁是什么?如何预防和避免死锁?
  17. 17银行家算法如何避免死锁?死锁检测后怎样恢复
  18. 18活锁、饥饿和死锁有什么区别
  19. 19进程调度算法:FCFS、SJF、优先级、时间片轮转与多级反馈队列
  20. 20调度指标有哪些?什么是优先级反转
  21. 21为什么要有虚拟内存
  22. 22TLB、多级页表和虚拟地址转换是怎么工作的
  23. 23什么是分段,什么是分页
  24. 24页面置换算法有哪些?FIFO、LRU 和 Clock
  25. 25信号量是什么?计数信号量和二元信号量怎么用
  26. 26条件变量是什么?为什么要和互斥锁配合使用
  27. 27进程间通信方式:管道、消息队列、共享内存、信号量与套接字
  28. 28I/O 模型有哪些:阻塞、非阻塞与多路复用
  29. 29select、poll 和 epoll 有什么区别
  30. 30epoll 的 LT 和 ET 模式有什么区别
  31. 31什么是异步 I/O?它和非阻塞、多路复用的区别
  32. 32什么是僵尸进程和孤儿进程?如何处理
  33. 33原子操作是什么?原子性、可见性和有序性有什么区别
  34. 34什么是工作集和抖动?内存不足时为何系统变慢
  35. 35mmap 是什么?文件映射和匿名映射怎么理解
  36. 36什么是写时复制?fork 和私有映射如何利用 COW

这份导读面向后端校招与初级岗位,目标是先建立能讲清机制的基础,再按岗位需要扩展。下面的“必会”是学习优先级判断,不是题频统计,也不代表任何招聘方的统一考纲。不需要按 35 篇编号顺序逐篇读;先走一遍主线,掌握每站标准,再按追问补专题。

知识地图#

处理器权限与执行实体
├─ 用户态 / 内核态 → 系统调用
└─ 进程 → 线程 → 状态转换、创建与回收、调度
├─ 并发共享状态 → 竞态 / 临界区 → 锁、信号量、条件变量、原子操作
│ └─ 多资源等待 → 死锁条件 → 预防 / 避免 / 检测与恢复
├─ 虚拟地址空间 → 页表与 TLB → 缺页处理
│ └─ 内存压力 → 页面回收 → 工作集与抖动
└─ 等待外部事件 → I/O 模型 → 多路复用 / 异步完成
进程间共享与协作 → IPC 选择(管道、共享内存、信号、Socket)

因果关系可以这样记:进程与线程说明“谁在执行、共享什么”;多个执行流共享数据后,必须解决竞态和同步;资源获取顺序不当可能形成死锁。内存管理把进程看到的地址映射到物理页面,缺页是按需映射或访问错误的处理入口;内存压力才会进一步涉及换页和抖动。线程等待文件、网络等事件时,则要选择阻塞、非阻塞、多路复用或异步模型;不同进程之间还需 IPC 建立数据通道和同步协议。

建议先读的 10 站主线#

每站给出一个主入口和可选补充。主入口掌握后即可继续;可选文章用于遇到相关追问或想看机制细节时查阅,不要求把所有链接都读完。

  1. 进程与线程:进程和线程有什么区别。掌握标准:说清资源/地址空间与执行流的区别、共享与私有状态,以及多线程为何不一定更快。
  2. 生命周期:进程有哪些状态。掌握标准:能区分就绪与阻塞,并说明 I/O 完成后通常先回就绪队列;挂起不等于整个进程都换出。
  3. 权限边界:主入口读用户态和内核态。可选补充:系统调用机制。掌握标准:能讲系统调用如何进入内核,并说明态切换不等同于线程上下文切换。
  4. 创建和回收:主入口读fork、exec 和 wait。可选补充:僵尸进程和孤儿进程。掌握标准:区分创建进程、替换程序映像和回收退出状态;进阶时能分辨僵尸与孤儿。
  5. 竞态问题:竞态条件和临界区。掌握标准:用读改写交错的例子解释丢失更新,并说明互斥、进展和有界等待的含义。
  6. 同步工具:主入口读互斥锁和自旋锁。可选补充:信号量与条件变量,按实际项目或面试追问选择。掌握标准:能解释互斥锁和自旋等待的差别,以及自旋不适合长时间等待;若选读补充,再掌握信号量计许可、条件变量等待谓词。
  7. 死锁:死锁四条件与预防。掌握标准:准确说出四个必要条件,并能用锁顺序破坏循环等待;“避免、预防、检测”不能混为一谈。
  8. 虚拟内存与缺页:主入口读缺页异常与虚拟内存边界,它覆盖常见映射来源与错误分支。可选补充:虚拟内存概览。掌握标准:能按匿名页、文件映射、换出页、非法访问解释缺页,并说明虚拟地址空间不等于 RAM 或 Swap。
  9. 调度:主入口读抢占式调度、SJF 与 MLFQ。可选速览:进程调度算法概览。掌握标准:能区分抢占与非抢占,解释 SJF 最优结论依赖的假设及 MLFQ 如何反馈;若要对比 FCFS、RR、优先级,再看概览。
  10. 通信与 I/O:IPC 主入口读进程间通信选型;I/O 主入口读阻塞、非阻塞、同步、异步。可选概览:IPC 方式和I/O 模型;Linux 网络场景再查 select/poll/epoll。掌握标准:能按本机/跨机器和数据交换方式选择 IPC;能区分阻塞/非阻塞与同步/异步。若继续看多路复用,知道就绪通知后仍要由应用读写即可。

分类目录#

目录编号与页面的系列导航一致:导读是第 1 篇,后续专题按基础主干、追问深化、场景拓展排列。主线用于第一轮学习,完整目录用于按问题查阅。

以下 35 篇全部纳入地图。先按主线里的主入口学习;“常见追问”和“岗位场景拓展”按面试追问、项目场景选择,不是额外必读清单。同一主题的概览与机制专题不必重复背诵,按下面的首选路径学习即可。

基础必会#

  1. 用户态和内核态:权限级和内核入口。
  2. 系统调用:系统调用、普通函数调用与上下文切换的差别。
  3. 进程和线程:地址空间、资源和执行流。
  4. 进程状态:就绪、运行、阻塞、终止与挂起。
  5. fork、exec、wait:创建、执行映像替换、等待回收。
  6. 竞态条件和临界区:共享状态与互斥目标。
  7. 互斥锁和自旋锁:阻塞等待和忙等的适用边界。
  8. 死锁四条件与预防:四必要条件及工程预防。
  9. 缺页异常与虚拟内存边界:按缺页原因分支回答。
  10. 阻塞、非阻塞、同步、异步:把等待阶段和完成责任分开。
  11. 抢占式调度、SJF 与 MLFQ:调度抢占与经典算法的适用条件。
  12. 进程间通信选型:按数据量、进程关系和同步需求选择通道。

常见追问#

  1. 线程切换过程:同进程线程共享地址空间时的切换概览。它与下篇有重叠;先读本篇即可,想补进程切换和 TLB 再读详解。
  2. 进程上下文切换:保存恢复、地址空间与缓存成本;与线程切换文章重复处可跳过。
  3. 死锁概览:用于快速回顾定义和预防思路;四条件及其对应策略以死锁四条件与预防为主,银行家算法和检测恢复见专题。
  4. 银行家算法、检测与恢复:安全序列与避免/检测的区别。
  5. 活锁、饥饿和死锁:区分“忙但没进展”和等待不公平。
  6. 调度算法概览:FCFS、SJF、优先级、RR、MLFQ 的速览。
  7. 调度指标与优先级反转:等待/响应/周转与优先级继承。
  8. 虚拟内存概览:地址空间、隔离与 Swap 的整体速览;缺页分支以基础主线专题为主。
  9. 地址转换、TLB 和多级页表:补页表遍历和 TLB miss 与缺页的区别。
  10. 分段与分页:传统内存管理模型对比;有了虚拟内存和缺页基础后再读。
  11. 页面置换算法:FIFO、LRU、Clock 与实际回收策略。
  12. 信号量:计数许可与生产者消费者同步。
  13. 条件变量:围绕共享谓词等待与唤醒。
  14. 进程间通信方式概览:六类 IPC 的特点;具体场景以基础主线的选型专题为主。
  15. I/O 模型概览:五种常见模型的速览;阻塞/异步语义以主线对照专题为主。
  16. select、poll、epoll:Linux 多路复用接口及连接规模取舍。
  17. epoll 的 LT 与 ET:掌握非阻塞读到 EAGAIN 的原因和漏事件风险。
  18. 异步 I/O:就绪通知和完成通知的细分,知道接口语义依实现而异即可。
  19. 僵尸与孤儿进程:进程回收的常见追问。

岗位场景拓展#

  1. 原子操作:无锁结构、内存顺序和 ABA 等并发追问。
  2. 工作集与抖动:内存压力、换页和系统变慢的诊断概念。
  3. mmap 文件映射:文件映射、共享/私有映射和落盘边界。
  4. 写时复制:fork 与私有映射的延迟复制机制。

重复主题怎么读#

到什么程度算学会#

后端校招和初级岗位,优先达到三点:能用自己的话讲清概念;能画出关键流程或举一个并发/地址映射例子;能解释常见取舍和一个边界条件。银行家算法的多轮数字模拟、优先级反转协议细节、工作集模型推导、mmap 持久化细节等属于按岗位与面试追问加学,不必一开始全部背熟。

操作系统面试学习路线与知识地图
https://blog.xqcherry.top/posts/interview/operating-system/operating-system-interview-roadmap/
作者
xqcherry
发布于
2026-10-12
许可协议
CC BY-NC-SA 4.0