跳转至

操作系统

操作系统课程的目标不是让后端工程师去写内核,而是理解服务为什么会慢、会卡、会 OOM、会连接泄漏,以及这些问题如何被定位和解释。

学习目标

学完本课程后,学习者应该能够:

  1. 解释用户态、内核态、系统调用、进程、线程、虚拟内存、文件描述符等核心概念。
  2. 理解 CPU、内存、磁盘 IO、网络 IO 如何影响 Go 后端服务。
  3. 能初步分析 CPU 飙高、内存上涨、OOM、文件描述符耗尽、连接泄漏等线上问题。
  4. 理解容器并不是轻量虚拟机,而是 Linux namespace、cgroups、文件系统等机制的组合。
  5. 能把操作系统知识和 Go runtime、网络编程、容器部署、Kubernetes 排障自然连接起来。

课程结构

建议按下面顺序学习:

  1. 操作系统基础
  2. 进程、线程与协程
  3. CPU 调度与负载
  4. 内存管理
  5. 文件系统与 IO
  6. Linux 网络栈基础
  7. 容器底层原理
  8. Go 与操作系统

为什么后端工程师要学操作系统

很多线上问题表面看是“接口慢”或“服务挂了”,底层往往是操作系统资源出了问题:

  • CPU 被打满,Go 服务无法及时调度请求。
  • 内存持续上涨,容器被 Kubernetes 标记为 OOMKilled
  • 文件描述符耗尽,新的 socket、文件或日志句柄无法打开。
  • 网络连接没有关闭,CLOSE_WAIT 越积越多。
  • 日志写入过慢,业务请求被磁盘 IO 拖住。
  • 容器 CPU limit 设置过小,延迟出现周期性抖动。

操作系统知识能帮助你从“猜问题”变成“定位资源、验证假设、解释原因”。

学习方式

  • 先建立资源视角:CPU、内存、文件、网络、进程都有限。
  • 每个概念都要对应一个 Go 后端场景,不停留在定义。
  • 遇到命令时,优先理解命令观察的是什么系统状态。
  • 不追求背诵所有内核细节,重点掌握能排查问题的主干知识。
  • 实战任务先独立完成,再展开参考答案检查思路。

学习提醒

操作系统是 Go runtime、网络编程、Docker、Kubernetes 和线上排障的共同地基。前期学得稍微慢一点,后面排查问题会快很多。