回到首页

输入关键词,多个关键词用空格分隔。

← 返回栏目

读薄/读厚 CSAPP

本系列脱胎于我的《深入理解计算机系统》学习笔记,做了精简和整合。这是一本非常经典的教材,也是一本大部头(一千多页),我希望以『读薄』和『读厚』的形式,让更多人能领略到经典的风采。

18 篇 · 按学习顺序阅读

专题目录

读薄:基础知识10 篇

  1. 【读薄 CSAPP】零 系列概览

    曾经的《深入理解计算机系统》课程笔记重新启航出发,更清晰的知识结构,更细致的概念分析,更紧密的课程关联。从文字到图片完全原创,希望能给大家不一样的阅读体验。

  2. 【读薄 CSAPP】壹 数据表示

    道生一,一生二,二生三,三生万物。计算机中的一二三是什么?它们又是如何构造出如此精彩纷呈的数字世界的?这一讲我们从最基本的数据表示开始,慢慢走进计算机系统的大门。

  3. 【读薄 CSAPP】贰 机器指令与程序优化

    计算机能读懂的只有零和一,而我们用汇编去和计算机『感同身受』。接近硬件底层,很多代码中再平常不过的概念,具体实现起来则并没有看起来那么『理所当然』。这一讲我们会了解程序到底是如何执行的,在知其所以然后,自然可以发现高效代码的秘密。

  4. 【读薄 CSAPP】叁 内存与缓存

    我们知道,速度越快的存储,价格也就越贵。计算机作为工程的结晶,是如何从一条规则出发,做到『物美价廉』的呢?这条规则又是什么呢?这一讲我们从不同的存储讲起,看看『带着镣铐跳舞』的最高境界。

  5. 【读薄 CSAPP】肆 链接

    不同的代码是如何被拼到一起协同工作的呢?所谓的静态库,动态库又是什么?编译和链接的不同在哪里?这一讲我们结合一丁点编译原理的内容,来说说链接那点事儿。

  6. 【读薄 CSAPP】伍 异常控制流

    异常控制流可能是很多人知道却说不清楚具体发生了什么的『著名』概念,什么是异常?系统又是怎么处理这个看起来『不一样』的机制的呢?信号在这里扮演了什么角色?这一讲我们就来讲讲异常与信号到底是怎么回事儿。

  7. 【读薄 CSAPP】陆 系统输入输出

    Linux 系统中 IO 的概念是非常有趣的,结合『所有东西都是文件』这个抽象,无论是输入输出重定向,还是挂载不同的设备,甚至是网络编程,都可以由系统输入输出这个统一的模型来进行描述。这一讲我们就来了解一下以 stdin, stdout 等为代表的系统输入输出。

  8. 【读薄 CSAPP】柒 虚拟内存与动态内存分配

    进程是操作系统中最重要的抽象,虚拟内存令这一切成为可能,为什么进程可以使用完整且连续的虚拟地址空间,而不需要关注物理内存呢?另外,计算机又是如何管理我们 new 的对象的?这一讲我们就来看看关于内存的这两个重要话题。

  9. 【读薄 CSAPP】捌 网络编程

    在这个网络成为『必需品』的时代,让我们从最原始的 Socket(套接字)开始,来看看程序是如何通过网络进行『沟通』的。更有意思的是,这一讲我们会介绍如何通过 C 语言从零开始实现自己的服务器程序。

  10. 【读薄 CSAPP】玖 并行与同步

    进程和线程有什么差别?超线程又是什么意思?为什么多线程能够提高程序执行的速度?是所有情况都适用吗?并行程序有没有什么限制?这一讲我们来聊聊并行与同步这两个『继往开来』的概念。在今后的学习中,大家一定会不止一次发现,很多问题说来说去,其实就是并行与同步的问题。

读厚:动手实验8 篇

  1. 【读厚 CSAPP】实验概览

    如果说《深入理解计算机系统》的课本是九十分的话,那么配套的实验少说得有一百五十分。完成实验的过程,也就是深入理解计算机系统的过程,真正动手去做,一是会发现『纸上得来终觉浅』,二是会意识到『知行合一』的重要性。

  2. 【读厚 CSAPP】I Data Lab

    万事开头难,尤其是和 0 与 1 打交道,和后面的实验相比,这次只能算个热身。但是喜欢运动的都知道,热身很重要!

  3. 【读厚 CSAPP】II Bomb Lab

    想体验拆弹部队的千钧一发吗?想当一回柯南来一次『真相只有一个』吗?那么这个实验绝对能给你非同寻常的感受:原来作业可以这么有趣!

  4. 【读厚 CSAPP】III Attack Lab

    漏洞天天听说,为什么溢出了就可以进行攻击呢?虽然做完这次实验并不能赋予自己给 iOS 越狱的能力,但是至少能实现简单的代码攻击了。

  5. 【读厚 CSAPP】IV Cache Lab

    缓存系统可谓是『随风潜入夜,润物细无声』的代表了,这次我们要当一次幕后英雄,来自己写一个缓存系统!

  6. 【读厚 CSAPP】V Shell Lab

    前面的实验都要在 shell 中运行,这次我们直接做一个自己的 shell!这之后无论是异常还是信号,都难不倒我们啦。

  7. 【读厚 CSAPP】VI Malloc Lab

    这次我们会实现自己的 malloc, free, realloc, calloc 函数,并借此深入理解堆中的内存分配机制。更有意思的是,gdb 在这次实验中基本没太多用处,我们要自己写堆检查器用来 debug。

  8. 【读厚 CSAPP】VII Proxy Lab

    很多人用过 tomcat,但很少人会想写一个自己的 tomcat,毕竟听起来就觉得浩大。不过不要紧张,这次我们用几百行代码写一个代理服务器,多线程还带缓存,甚至可以自己在浏览器里用!