跳转至

CS:APP: Computer Systems: A Programmer's Perspective

教材简介

  • 来源:CMU(Randal Bryant、David O'Hallaron)
  • 先修要求:C 语言基础
  • 课程难度:🌟🌟🌟🌟
  • 预计学时:80 小时 +

CS:APP(Computer Systems: A Programmer's Perspective)是 CMU 的经典教材,也是全球最受欢迎的计算机系统教材之一。它的独特视角是:从程序员的角度理解计算机系统。

不同于传统的体系结构教材从硬件设计者出发,CS:APP 关注的是:作为一个写 C 程序的程序员,你需要理解计算机的哪些底层知识才能写出正确、高效的代码?

这本书覆盖了从数据表示、汇编语言、处理器架构、缓存优化、链接、虚拟内存、系统 I/O、网络编程到并发的完整知识链。

教材资源

  • 官方网站:csapp.cs.cmu.edu
  • 配套课程:CMU 15-213(课程网站有完整视频和实验)
  • 实验代码:CS:APP Labs(所有实验代码可下载)
  • 中文翻译:《深入理解计算机系统》(第 3 版)

核心内容

第一部分:程序结构和执行

  • 数据表示、汇编语言、处理器架构、优化程序性能

第二部分:在系统上运行程序

  • 链接、异常控制流、虚拟内存

第三部分:程序间的交互和通信

  • 系统级 I/O、网络编程、并发编程

实验列表

实验 内容 难度
Lab 1: Data Lab 位操作和整数/浮点数表示 🌟🌟
Lab 2: Bomb Lab 汇编语言逆向工程 🌟🌟🌟
Lab 3: Attack Lab 缓冲区溢出攻击 🌟🌟🌟
Lab 4: Architecture Lab Y86-64 处理器设计 🌟🌟🌟🌟
Lab 5: Cache Lab 缓存优化 🌟🌟🌟
Lab 6: Shell Lab 实现一个 Unix Shell 🌟🌟🌟🌟
Lab 7: Malloc Lab 实现 malloc/free 🌟🌟🌟🌟🌟
Lab 8: Proxy Lab 实现一个 Web 代理 🌟🌟🌟🌟

自学建议

做所有的实验。 CS:APP 的实验是这本书的灵魂。Bomb Lab 和 Attack Lab 尤其经典,能让你真正理解汇编语言和内存安全。

配合 CMU 15-213 课程视频。 课程视频质量极高,Bryant 教授讲得非常透彻。

不要跳过汇编部分。 第 3 章(机器级表示)是最难但也是最重要的章节。理解 x86-64 汇编是理解计算机底层的关键。

备注

CS:APP 是连接"编程"和"系统"的桥梁。学完这本书,你会理解从 C 代码到机器执行的完整过程。

这本书也是很多大厂面试的参考书。Bomb Lab 和 Attack Lab 是面试官最喜欢问的项目经验之一。