Morning Edition
星期日, 二月 15, 2026

折鸦夜明け前

我们的同志在困难的时候,要看到成绩,要看到光明,要提高我们的勇气。

CSAPP Cache Lab 笔记

现代计算机通过每一层都是下一层的缓存的抽象构建出存储器的层次结构, 依据程序的局部性原理巧妙解决了存取信息的速度远小于 CPU 处理速度的问题.

前置知识可看: CSAPP3e第六章(存储器层次结构) | Amiriox’s Storage

Cache lab 分为两个部分:

  1. 第一部分写一个模拟程序, 模拟缓存的行为; 如果对缓存的原理和行为理解透了难度不高, 主要难点是必须用 C 写
  2. 第二部分是优化一个矩阵转置的函数, 转置有着鲜明的”两个数组访问模式相反”的特点, 导致必然有一个数组的访问模式缓存不友好. 要理解分块技术和缓存冲突不命中的常见情况及调整措施. 这个 lab 要求比较极端, 给定的缓存组关联度是 \(1\), 也就是说只要是同一组的就会冲突不命中抢夺缓存行.

这是我做起来体感最痛苦的一个, 很多人也有相同的感受. 不过 lab 本身是没什么问题的, CMU 是一款我的问题

CSAPP Data Lab 笔记

禁用大量常见运算符, 强制规定特定位运算运算符和运算符数量限制实现特定运算

所谓 Hacker’s Delight

在写 CSAPP Lab 之前一定要仔细阅读文档, 一行要求都不能落下, 比如这个 lab 就有一些无聊的要求:

  1. 要求变量声明必须在开头(这 C89 古董规则太搞了)
  2. 不允许使用大字面量(超过 0xFF 的)

为了您的阅读方便, 本文对于特定位/位模式采用行内引用 (01, 1000, 1101), 对于数字的十进制值, 位的编号等采用 \(\LaTeX\) 的数字字体 (\(3, 4, 5, 6\))

CPU/内存虚拟化, 调度和并发

本文是 OSTEP (Operating System: Three Easy Pieces) 的简单笔记, 由于 OSTEP 和我写博客的叙述思路很像(日常往自己脸上贴金hhh), 所以这里就只列一个大纲供自己复习.

并且本文建立在 一条操作系统的使命 | Amiriox’s StorageCSAPP3e第六章(存储器层次结构) | Amiriox’s Storage 两篇文章的叙述之上, 仅仅增量补充了必要的内容

一些重要的主题 (如调度和并发) 可能 (几乎是一定) 会单独开一篇文章, 在基于这本书介绍的内容下再补充一些我其他地方学到的相关知识和经验.

OSTEP 是一本无论从知识本身还是讲解技巧上都比较不错的书, 推荐读原书而非总结博客.