知识架构¶
本站按“机制属于哪一层”和“读者为解决什么问题需要它”共同组织。层次提供稳定边界,问题提供跨层路径。
六条主轴¶
| 主轴 | 核心状态 | 主要成本 | 典型失败 |
|---|---|---|---|
| 执行 | 指令、依赖、流水线、执行资源 | 周期、停顿、推测浪费 | 错误预测、结构冲突、序列化 |
| 存储 | 寄存器、缓存、内存、块与日志 | 延迟、带宽、写放大 | 一致性缺口、数据丢失、恢复不完整 |
| 调度 | 线程、任务、协程、队列 | 排队、切换、唤醒 | 饥饿、优先级反转、取消泄漏 |
| 通信 | 分组、流、消息、集合通信 | RTT、序列化、拥塞 | 丢包、乱序、分区、背压失效 |
| 协调 | 锁、原子、事务、复制、共识 | 同步、冲突、协调轮次 | 竞态、死锁、脑裂、异常可见 |
| 观测 | 指标、日志、事件、追踪、样本 | 开销、偏差、数据量 | 盲区、时钟错位、误归因 |
任何重要系统机制至少落在两条轴上。例如虚拟内存既是存储寻址机制,也是隔离与调度机制;TCP 既是通信协议,也包含拥塞状态、重传计时和流量控制;垃圾回收既管理对象生命周期,也会改变调度与尾延迟。
站点分区¶
共同基础¶
共同基础给出贯穿全站的语言:抽象、契约、状态机、排队、局部性、数量级、工作负载和测量误差。新概念应尽量复用这些定义,而不是在各页重新发明。
硬件与操作系统¶
计算机体系结构解释硬件如何执行和移动数据;操作系统解释硬件资源如何被虚拟化、保护、调度和持久化。两者通过异常、页表、缓存、原子操作、中断和 DMA 互相连接。
并发与运行时¶
并发以正确性和生命周期为主线;语言与运行时说明同一机制如何被不同语义、编译器和调度器暴露。语言页面不做语法手册,而是集中解释对象、内存、并发、错误、异步和外部接口。
网络与存储¶
网络追踪跨机器的数据路径;存储追踪跨易失与持久介质的状态路径。超时、重试、缓存、日志和批处理是二者共享的核心设计。
并行与分布式¶
并行计算研究一个问题如何在多个执行资源上缩短完成时间;分布式系统进一步加入独立故障、通信延迟和不完美时钟。
工具与性能¶
工具链连接源码、目标文件、进程映像和调试信息;性能与可观测性负责验证其他页面的机制是否真的解释了目标工作负载。
页面的标准结构¶
实质页面通常遵循下面的因果次序:
- 问题与历史动机;
- 精确契约和术语;
- 状态、控制流与数据路径;
- 公式、状态机或最小实现;
- 跨层联系;
- 性能模型与测量方法;
- 失败模式、反例和版本边界;
- 相关页面与
Reference。
次序可以为叙事调整,但不能省略决定正确性的边界。代码不是独立练习区,而应紧邻它解释的机制;很长的辅助实现可以折叠,关键状态迁移应保持可见。
边界与重叠¶
重叠内容以“哪个页面负责定义”为准:
- CPU 页描述处理器整体,流水线页定义 ILP 与推测,缓存页定义一致性;
- 操作系统虚拟内存页负责策略与内核路径,体系结构页负责页表遍历与 TLB;
- 协程页负责挂起与恢复语义,各语言页只解释对应运行时怎样实现;
- 网络页负责协议,Node.js、Go、Python 页面只解释运行时怎样接入 I/O;
- 分布式事务页负责跨节点保证,数据库存储页负责单机页、日志和恢复;
- 性能页负责实验方法,领域页保留机制特有的计数器和诊断。
架构演进¶
当一个主题不断变长时,不以“文件行数”作为唯一拆分信号。更可靠的信号是:
- 同一术语在多个页面定义不一致;
- 一个页面同时服务互不相同的读者问题;
- 新增内容需要重复大段前置知识;
- 页面出现多个彼此独立的状态机或测量方法;
- 重要页面没有入链,或读者必须依赖搜索才能发现。
重构时先写目标地图,再移动内容和链接,最后同时检查导航、锚点、公式、代码与渲染,避免留下两套 canonical 解释。