第 13 章 计算与操作系统
从晶体管、逻辑门到进程、线程、缓存与容器,本章带你理解一台计算机到底是怎么"算"出来的。你会从离散数学和计算机体系结构出发,看清 CPU、存储层次和虚拟内存如何共同支撑起每一次矩阵乘法;再进入操作系统、并发并行与编程语言,弄懂调度、同步、死锁、JIT 与内存管理这些"看不见却决定性能"的机制。理解计算机如何工作,是从"会写 ML 代码"到"能优化和部署 ML 系统"的关键一步。
本章简介
计算基础(computing fundamentals)是整本教程中承上启下的支柱。前 12 章聚焦于"要算什么"——向量、矩阵、微积分、概率、深度学习模型与各类模态;而要真正把模型训得快、部署得稳,就必须理解"在什么上算、怎么算得高效"。本章把视角下沉到硬件与系统软件:离散数学提供形式化推理的语言,计算机体系结构揭示 CPU、IEEE 754 浮点、存储层次和虚拟内存为何决定了一次前向传播的速度,操作系统解释了进程、线程、调度与文件系统如何让多个训练任务和平共处,并发与并行则直接对应分布式训练里的梯度同步、数据管道重叠和阿姆达尔定律带来的加速上限,编程语言部分则帮你理解为什么 PyTorch 用 Python、内核却用 C++/CUDA、而 Rust 正在渗透进推理运行时。
本章为后续高性能计算章节打底。第 16 章会在本章的 CPU/存储层次与指令集基础上展开 SIMD 与 GPU 编程;第 17 章会把操作系统、内存管理与并发概念直接用到 AI 推理引擎的调度、批处理与内核优化上;第 18 章 ML 系统设计则会反复调用本章关于容器、网络、调度与扩展定律的内容。换句话说,本章是把"懂算法"升级为"懂系统"的桥梁。
本章小节
- 离散数学(Discrete Maths):命题与谓词逻辑、证明技术、集合、关系、函数、图论基础、递推关系、可计算性与 P vs NP——为所有计算推理提供形式化语言,并划清"计算机能算什么、不能算什么"的边界。
- 计算机体系结构(Computer Architecture):数制与二进制补码、IEEE 754 浮点、逻辑门、CPU 与 ALU、ISA(CISC/RISC)、流水线与冒险、存储层次与缓存、虚拟内存、I/O 与 DMA——解释每一次张量运算最终如何在硬件上发生。
- 操作系统(Operating Systems):进程与线程、CPU 调度(FCFS、RR、MLFQ、CFS)、内存管理(分页、缺页、堆)、文件系统(inode、ext4、日志)、系统调用与内核态、TCP/IP 网络栈、虚拟机与容器、安全基础——协调资源、提供抽象并强制隔离的系统软件层。
- 并发与并行(Concurrency and Parallelism):并发 vs 并行的区别、同步原语(互斥锁、信号量、条件变量)、经典问题(生产者-消费者、读者-写者、哲学家就餐)、死锁四条件与对策、无锁/无等待与 CAS、OpenMP 与 MPI、async/await 与事件循环、阿姆达尔定律与古斯塔夫森定律——多核与分布式训练的理论与实践根基。
- 编程语言(Programming Languages):命令式/面向对象/函数式/逻辑式范式、静态与动态类型、手动内存管理与 GC 与所有权、编译流水线(词法→语法→语义→优化→codegen)、解释与 JIT、闭包、模式匹配、代数数据类型、领域特定语言、性能/安全/表达力的设计权衡——帮你为不同任务选对工具并看懂 ML 栈的每一层。
学习路径
- 前置知识:本章默认你已学完第 1-12 章。第 1 章线性代数与第 2 章矩阵会反复被引用(GPU 上的矩阵乘法、缓存友好访问的行/列主序);第 3 章微积分为理解浮点误差累积和数值不稳定提供背景;第 5 章概率里的集合运算、组合计数会直接出现在离散数学一节;第 6 章深度学习则是本章所有概念落地的场景——混合精度训练、数据并行与流水线并行、梯度同步、batch size 对带宽的影响都会被反复类比。第 12 章图论基础为离散数学中的图算法部分提供了更深的背景。
- 后续章节:本章是第 16 章 SIMD 与 GPU 编程的直接前置——存储层次、IEEE 754、指令集与流水线概念会在那里扩展为 CUDA/SIMT 编程模型;第 17 章 AI 推理会把进程/线程、内存管理、并发与 JIT 编译直接用到推理引擎的调度、kernel 融合与批处理上;第 18 章 ML 系统设计会调用容器、Kubernetes、网络(TCP/带宽/延迟)和阿姆达尔定律来讨论服务架构与扩展性。如果你目标是做系统方向或 infra 岗位,本章是必经之路。
关键概念速览
- IEEE 754 浮点(IEEE 754):用"符号 + 指数 + 尾数"表示实数的标准;float16/bfloat16/float32/float64 在范围、精度和带宽间各有取舍,是混合精度训练和数值稳定性的物理基础。
- 存储层次(Memory Hierarchy):寄存器 → L1/L2/L3 缓存 → RAM → SSD → HDD,速度差距可达数千万倍;缓存命中与否、行/列主序访问、batch 大小,决定了矩阵运算的真实速度。
- 虚拟内存(Virtual Memory):通过页表与 TLB 给每个进程一个独立、连续的地址空间错觉,同时提供隔离;缺页与颠簸是训练 OOM 和性能崩溃的常见根源。
- 上下文切换与线程(Context Switch / Thread):进程/线程是 OS 调度的基本单位;上下文切换、内核线程与用户线程、线程池解释了为什么推理服务器采用事件驱动或线程池架构。
- CAS 与无锁编程(Compare-And-Swap / Lock-Free):用单条硬件原子指令实现无锁数据结构,避免锁带来的争用与死锁,是高性能并发系统的核心机制。
- 阿姆达尔定律(Amdahl's Law):\text{Speedup}(n) = \frac{1}{(1-p) + p/n}——程序中那部分无法并行的串行代码,决定了加多少核能达到的加速上限,是评估分布式训练扩展性的根本约束。