如何阅读《深入理解计算机系统》这本书? (转载)

转载自:https://www.zhihu.com/question/20402534#answer-43539853

学CS的话,不太建议看书。凡是学一门课,看优秀的公开课视频以及写编程作业是最有效率的方法。对CSAPP也不例外。这本书对应的课是CMU 15213/15513。课程网站的官方地址是15-213/18-218/15-513: Introduction to Computer Systems。目前正在更新2017 fall的内容。刚看了下,第一节的教学视频是最新的。建议对计算机系统感兴趣的同学看视频,遇到问题或者对某些具体细节感兴趣的时候再去看书。15513的ppt和lecture提炼的很好,基本把书中最干活最重要的内容包含进来了。相比于看书可能能节省不少时间。

学习这门课我觉得收获最大是写lab。这门课一共有6个lab。分别是

Data Lab:bit 运算与float的相关操作

Bomb Lab:阅读汇编破解密码

Attack Lab:Buffer Overflow 攻击

Cache Lab:实现一个cache simulator已经一个cache efficient的矩阵转置。

Shell Lab:用多进程实现一个简单的linux shell。主要是熟悉进程控制与同步。

Malloc Lab:自己写一个C语言的malloc函数。

Proxy Lab:写一个支持HTML的多线程Server。熟悉Unix网络编程与多线程的控制与同步。

个人感觉收获比较大的是Shell Lab和Proxy Lab。因为线程,进程的控制与同步,光看视频或者教科书可能印象不是很深。可是一旦自己实现了就会对这个块内容理解地更加透彻。这里赞一下CMU的Autolab,每次作业都会提供很多测试用例。Handout也写得很详细,会告诉很多debug的方法与工具。

所以我的建议是,没必要直接啃书,先去看视频,然后一定要做对应部分的Lab。Lab的handout和start code可以在CS:APP3e, Bryant and O’Hallaron 这里找到。

有关其他计算机科学和机器学习的公开课推荐,可以参看我的另一个回答:李远:Coursera 上有哪些课程值得推荐?

如果你是第一遍看这书,那么还是别直接看了,去上交软件学院看计算机系统基础这门课的主页,按照上面的课件学(http://ipads.se.sjtu.edu.cn/courses/ics)。学完有兴趣再回头按需看书,记得看英文版(虽然废话多点)。

那课之前在复旦上,从大概2002开始,国内最早,比最早的中文版还早。

12.5更新:终于找到了labs for self-study stu的地址,不过有些不是今年的,凑合一下吧~
http://csapp.cs.cmu.edu/3e/labs.html
11.25更新:深入理解计算机系统第3版中文版终于出来了,全部升级成64bit,新增了一些内容,纸质和印刷都大幅提高~上图:

你可能感兴趣的:(服务器)