跳到内容
第三卷

深入计算机系统

追踪一行代码如何经过编码、CPU、内存与操作系统,
最终变成机器可执行的动作。

算法森林只告诉你一段程序要做多少工作,却没有解释工作怎样落到机器上。你们沿着一次函数调用进入计算机地心,从字节、指令和缓存一路追到进程、虚拟内存与文件系统,找出性能和故障背后的物理边界。

旅程位置:算法森林 → 计算机地心(理解程序如何执行)→ 网络驿道

前置要求

需要系统基础。熟悉 C/Java 编程,了解 Linux 基本命令。完成 Vol 1-2 后再阅读。

第1章 数据编码——计算机的符文系统 已写完

二进制、十六进制、ASCII、Unicode、UTF-8——0和1是计算机世界最基础的符文。

第2章 整数与浮点——数字的奥秘 已写完

有符号/无符号整数、补码、IEEE 754 浮点标准、精度陷阱。

第3章 数字逻辑——从逻辑门到计算机 已写完

逻辑门、MUX、加法器、ALU、状态机——计算机的物理基础。

第4章 CPU与ISA——地心引擎 已写完

指令集架构、RISC vs CISC、寄存器文件、指令流水线基础。

第5章 缓存体系——速度的缓冲带 已写完

缓存层次、局部性、缓存行、写策略、缓存友好的代码优化。

第6章 虚拟内存——内存的幻术 已写完

页表、TLB、分页与分段、地址转换、内存映射文件。

第7章 异常与系统调用——用户态的边界 已写完

中断、异常、陷阱、系统调用、用户态与内核态切换。

第8章 进程上下文——谁在运行你的代码 已写完

进程状态机、上下文切换、调度策略、PCB、fork/exec。

第9章 线程与同步——分身与协作 已写完

线程模型、互斥锁、信号量、条件变量、死锁预防。

第10章 CPU调度——谁先上CPU 已写完

FCFS/SJF/MLFQ/RR/CFS 调度算法、实时调度。

第11章 锁与动态内存 已写完

原子操作、自旋与 futex;空闲块、碎片及并发分配。

第12章 死锁 已写完

等待图、锁顺序、银行家算法与跨运行时现场诊断。

第13章 文件系统与崩溃恢复 已写完

路径与 inode、日志与 COW、持久化协议、RAID 与备份。

第14章 虚拟化与容器 已写完

vCPU、两阶段页表、虚拟 I/O、Linux 容器与 KVM API。

第15章 CPU 流水线 已写完

经典流水线、数据冒险、分支预测、超标量与乱序执行。

第16章 C 对象与内存模型 已写完

存储期、对齐与别名、volatile、原子操作与 happens-before。

第17章 汇编基础与调用约定 已写完

SysV AMD64 参数分类、寄存器保存、栈对齐与聚合返回。

第18章 性能工程 已写完

SLO、基准方法、Amdahl/Little 定律与 Linux perf。

本卷共 18 章,已全部完成

完整课目

本卷按“章 → 编号课次”组织。8.1、8.2 这样的文件是第 8 章下连续的短课,不是两个重复章节。

第 1 章:比特、字节与进制

第 2 章:整数表示与溢出

第 3 章:组合逻辑

第 4 章:CPU、ISA 与 RISC-V

第 5 章:缓存、局部性与映射

第 6 章:虚拟地址、页表与 TLB

第 7 章:异常、中断与系统调用

第 8 章:进程、任务与上下文

第 9 章:线程、数据竞争与互斥

第 10 章:调度指标与经典算法

第 11 章:锁是怎样工作的

第 12 章:死锁为何形成

第 13 章:路径、inode 与数据块

第 14 章:虚拟机如何共享一台主机

第 15 章:流水线与数据冒险

第 16 章:对象布局、别名与 volatile

第 17 章:汇编基础与调用约定

第 18 章:从测量到性能结论

Built with VitePress | Software Systems Atlas