这页补大学计算机专业里最关键的系统课之一:操作系统。它不是 Linux 命令速查,也不是直接钻内核源码;它回答课程视角的问题:多个程序怎样共享 CPU、内存、文件、设备和网络资源,为什么需要进程线程、虚拟内存、系统调用、文件系统、同步互斥、IO 多路复用和资源隔离。
操作系统课不是背概念清单,而是理解“应用程序如何安全、公平、高效地使用一台真实机器”。
| 课程 / 模块 | 主问题 | 关键对象 | 继续下钻 |
|---|---|---|---|
| OS 抽象与启动 | 为什么需要内核,机器怎样进入可运行状态 | Bootloader、内核态 / 用户态、中断、异常、第一个进程 | 如何设计操作系统 |
| 进程、线程与调度 | 多个执行流怎样共享 CPU | 进程、线程、上下文切换、Run Queue、阻塞唤醒、抢占、优先级 | 操作系统内核机制 |
| 同步互斥与并发 | 共享状态怎样避免竞争、死锁和可见性错误 | 锁、信号量、条件变量、原子操作、死锁、生产者消费者 | 体系结构底座 |
| 虚拟内存与地址空间 | 程序怎样看到独立内存,内存不足时怎样处理 | 页表、TLB、缺页异常、mmap、Copy-on-write、RSS、swap、OOM | 内核机制底座 |
| 文件系统与 IO | 设备和磁盘怎样被抽象成可读写对象 | VFS、inode、文件描述符、page cache、fsync、mmap、块设备 | OS 设计训练 |
| 网络与事件模型 | 应用怎样通过 OS 使用网络 | Socket、epoll、TCP 栈、缓冲区、软中断、连接状态 | 网络课群 |
| 资源限制与隔离 | 操作系统怎样限制和隔离进程资源 | 权限、进程组、资源限制、namespace、cgroup、CPU quota、OOMKilled | 云原生专题 |
从“多程序共享硬件”出发理解内核态、用户态、系统调用、中断和异常。不要一上来就背 Linux 参数,先知道 OS 要解决哪些资源与隔离问题。
进程是资源边界,线程是执行单元;调度、阻塞、唤醒、锁、死锁和上下文切换,决定了“CPU 不高但系统慢”为什么常见。
虚拟内存、页表、page cache、文件描述符、mmap、fsync 和 IO 等待,把操作系统课和数据库、运行时、性能工程接到一起。
Socket、epoll、TCP、权限、namespace 和 cgroup,是大学 OS 课向网络、数据库和系统性能分析延伸的关键接口。
| 现象 | 优先回到哪门课 | 为什么 | 不要只做 |
|---|---|---|---|
| CPU 不高但接口很慢 | 调度 + 阻塞 + IO | 线程可能在等锁、连接池、磁盘、网络、下游或 cgroup quota,而不是在 CPU 上运行 | 只优化业务函数 |
| 线程越多吞吐越差 | 调度 + 并发控制 + 体系结构 | 上下文切换、锁竞争、共享缓存行和内存带宽都会限制扩展性 | 继续加线程池 |
| OOMKilled 但语言堆不高 | 虚拟内存 + cgroup + 运行时 | RSS 包含堆外、线程栈、mmap、native、page cache;容器看的是 cgroup limit | 只调大 heap |
| 磁盘删了文件但空间不释放 | 文件系统 + 文件描述符 | 文件名删除不等于 inode 空间释放,进程持有 fd 时空间仍被占用 | 继续盲删目录 |
| 大量连接后服务不接新请求 | Socket + fd + 网络队列 | fd 上限、连接泄漏、TIME_WAIT、CLOSE_WAIT、监听队列和连接池都可能参与 | 只调大 ulimit |
| 隔离环境里慢,本机不慢 | namespace + cgroup + 网络视图 | 隔离环境看到的是受限后的资源和网络视图,不等于宿主机全局视图 | 只看宿主机 top |
| 页面 | 负责什么 | 什么时候看 |
|---|---|---|
| 本页:操作系统、进程线程、内存与并发课群 | 负责把 OS 按课程依赖、关键抽象和工程卡点接成学习路线 | 你要补大学操作系统课,而不是直接查 Linux 命令时 |
| 组成原理、体系结构与数字硬件课群 | 负责 OS 下面的机器表示、指令、Cache、内存层级和硬件接口 | 你想知道 OS 依赖哪些硬件机制时 |
| 编译原理、运行时与语言实现课群 | 负责语言运行时怎样通过 OS 使用线程、内存、文件和系统调用 | 你要解释 JVM、Go runtime、Node、Python、Rust / C++ 的运行差异时 |
| 如何设计操作系统 | 负责用 ToyOS 解释启动、进程、内存、系统调用、文件、设备和安全边界为什么这样设计 | 你想从设计角度理解 OS 抽象时 |
| 操作系统内核机制底座 | 负责 Linux 调度、虚拟内存、VFS、epoll、TCP、cgroup、namespace 和排障证据 | 你已经遇到 Linux / 容器 / 线上资源问题时 |