操作系统专题:进程线程、内存管理、文件系统、I/O 多路复用、Linux 与 Shell
操作系统知识点多而散,这张学习地图把它收成四组主题:程序运行、内存管理、持久化与 I/O、系统实践。每组标注依赖关系和推荐顺序,每个主题配一句话说明它解决什么问题。
操作系统在学什么
操作系统夹在应用与硬件之间:向上提供进程、虚拟内存、文件、Socket 这些抽象,向下管理 CPU、内存、磁盘和设备。它的核心目标不是让资源看起来无限,而是在有限硬件上做好共享、隔离、保护与可观测。学习它的主线不是背定义,而是回答一个问题——一条请求从代码到硬件,中间经过哪些状态转换、各花什么代价。所有主题都是这条主线上的站点。
主题分组
第一组:程序如何运行
- 进程与线程:进程是资源与隔离的边界,线程是 CPU 调度的执行流。
- 中断、异常与系统调用:用户态进入内核态的三扇门,理解一次
read()到底经历了什么。 - CPU 调度与负载:调度器决定谁先跑,load average 告诉你队伍排了多长。
- 锁与同步:临界区、互斥锁、信号量、条件变量,解决并发访问的秩序问题。
- 死锁:循环等待的成因、四个必要条件与排查方法。
- 进程间通信:地址空间彼此隔离之下,数据怎么过墙。
第二组:内存如何管理
- 内存管理:分配策略、碎片、伙伴系统、页面回收与 OOM。
- 虚拟内存:分页、页表、TLB、缺页异常,把”地址”和”内存条”解耦。
第三组:数据如何持久与进出
- 文件系统:从路径到 inode 再到数据块,外加缓存与崩溃恢复。
- I/O 多路复用:select/poll/epoll,一个线程看管海量连接的原理。
- 零拷贝:mmap、sendfile、splice 分别省掉了哪几次数据搬运。
第四组:上手实践
- Linux 基础:发行版、目录结构、权限与常用命令。
- Shell 编程:变量、管道、重定向与脚本,把命令串成自动化流程。
依赖关系与推荐顺序
进程与线程 ──→ 系统调用/中断 ──→ CPU 调度 |
推荐按五步推进:
- 进程与线程:一切概念的起点,先弄清资源归属与执行流的区别。
- 系统调用与中断、CPU 调度:理解内核入口,以及”谁在跑、谁在等”。
- 同步机制 → 死锁 → IPC:并发三件套彼此咬合,连着学最省力。
- 内存管理 → 虚拟内存:分页与缺页是理解文件缓存的前置知识。
- 文件系统 → I/O 多路复用 → 零拷贝:收束到高性能服务端最关心的主题;Linux 与 Shell 穿插全程,边学边敲。
学习建议
- 以”一次请求”为线索串联:程序调
read,经系统调用进内核,查页缓存,缺页则读盘,I/O 完成后中断唤醒进程——把名词挂到流程上才算真正学会。 - 配合工具验证:
strace看系统调用、top/vmstat看 CPU 与内存、lsof看进程打开的文件,让每个概念都能被观察。 - 面向应用回扣:学虚拟内存联想 JVM,学 epoll 联想 Nginx/Redis,学零拷贝联想 Kafka——操作系统的价值最终体现在理解上层组件的行为上。
小结
- 四组主题:程序运行、内存管理、持久化与 I/O、Linux/Shell 实践。
- 依赖主线:进程线程 → 系统调用与调度 → 同步/死锁/IPC → 内存 → 文件系统与高性能 I/O。
- 方法:沿请求路径学习,用工具观察,向上层组件回扣。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Dai Wei!
评论

