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

在这里插入图片描述

行走的西红柿

有up主做了精校的中英字幕,不过没有习题课的字幕

【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili www.bilibili.com图标

有人用类似3Blue1Brown的方法做了讲解视频

【CSAPP-深入理解计算机系统】1-1.计算机系统漫游_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili www.bilibili.com图标

也有国人做了讲解视频

深入理解计算机系统[00] - 无符号整数、二进制补码_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili www.bilibili.com图标

还有这个

解读《深入理解计算机系统》一_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili www.bilibili.com图标

我在b站搬运了原始视频包含习题课

卡内基梅隆大学 Introduction to Computer Systems CMU 15-213 Fall_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili www.bilibili.com图标

华盛顿大学的课程覆盖了核心部分,包含实验部分

华盛顿大学软硬件接口 The Hardware/Software Interface_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili www.bilibili.com图标


--------以下是原回答-----------------


15-213/18-218/15-513: Introduction to Computer Systems / Schedule Fall 2016
CMU15-213的课程主页,有ppt,代码还有录像,主讲人就是这本书的作者。

下图显示了213这门课在整个课程体系中的重要性,它是众多课程的先修要求。至于15213的先修课程则是122使用C0语言教学(C语言的一个子集)15-122 S16。 如果没有编程基础则可先修15112,使用Python教学(15-112 Schedule (Fall 16))。


下面是两位作者讲课时的截图


深入理解计算机系统(原书第3版)
京东
¥ 106.70
去购买 ​
领红包
最高 18,618 元京享红包!
算法导论(原书第3版)/计算机科学丛书
京东
¥ 93.90
去购买 ​
算法(第4版)(图灵出品)
京东
¥ 77.10
去购买 ​

赞同 3991​ 105 条评论
分享
收藏 ​ 喜欢
收起

周小伦

谢邀。

目前 哈工大已经用这本书取代了唐朔飞老师的计算机组成原理。而且是考研专业课最重要的一门。由于本科学过加上考研也学过,所以基本翻烂了

首先一本已经翻烂了的csapp镇楼

0. 写在前面

这么多人都推荐深入理解计算机系统。也就是csapp。那它到底是一本什么样的书那。我们先来看它的英文名《ComputerSystem:A programer perspective》翻译过来就是程序员视角下的计算机系统。因此这本书的受众,一开始就不是面向普通人群。它更是一本计算机科班生,或者希望详细学习了解计算机的人的一本入门读物。

这本书是cmu(美国cs四大名校之一)计算机学院的院长的力作,而且基本上cmu计算机最火的课之一。每年都被抢爆。所以非常值得大家学习。

除了cmu之外目前国内许多的计算机名校都基于这本书开设了相关课程。比如北大、交大、哈工大等等。都对这门课给予了非常高的地位。其他学校不太了解。但是哈工大16级课改,直接用这门课取代了计算机组成原理(要知道唐奶奶的计组书有多出名)而且高达5个学分,可见这门课的重要性

好了说了这么多,那学习这门课需要什么样的基础。答案是只需要有c/c++的基础就可以

1. 如何学习

学好一门计算机的专业课,无外乎两个部分。掌握知识、学会实践。下面我就分别从这两个部分来说一下如何学好csapp。

掌握知识

首先要明确这是一本英文原著高于翻译版本的书。因为翻译版真的看的人很头痛,各种不通顺,各种百度翻译的痕迹。所以如果条件允许的话。强烈建议大家直接入手英文版。当然也可以英文版本和中文版本对照这读。这样你甚至可以发现中文版本的某些错误。我是觉得链接冲定位的知识,csapp讲的极为墨迹。尤其中文翻译非常冗杂,包括第二章有些地方也是如此。当然中文版比起自顶向下还是好很多的。我考研的时候也是看中文版居多,不过你英语水平如果足够高的话,是完全可以英文中文对照着看的

当然除了书本之外。好多人可能想要的是一门对应的视频课。cmu自身就给了我们一门这样的课。当然课程质量我个人觉得只是一般,讲的并没有很深入。

【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili www.bilibili.com图标

除了cmu自己的课国内好多大学也有很多优秀的mooc下面推荐两个我当时所看过的

首先推荐的是南大的计算机系统课。这门课的教材就是csapp的压缩改良本土化版本。不过它的架构是用的IA-32,所以我当时并没有仔细阅读。不过这门课的链接虚拟内存部分还是非常值得一看的。

计算机系统基础(一):程序的表示、转换与链接_南京大学_中国大学MOOC(慕课) www.icourse163.org图标

除此之外那,可能很多人都没有听说过上海交大也出过相关的mooc

计算机组成与系统结构_上海交通大学_中国大学MOOC(慕课) www.icourse163.org图标

就是这门看起来不像csapp但使用的教材确实是csapp的课。这门课是2020年新出的一门课。讲的非常不错,大家可以去看一下。另外这里附上交大自己的csapp学习网站。里面有对应的ppt和一些homework。配合使用效果更佳哟

SE101 / 2019 / Welcome ipads.se.sjtu.edu.cn

当然这些视频课只能给大家一些帮助,剩下的还需要自己去理解。

下面推荐一些对于学习这门课会有帮助的一些书。

csapp更像是汇编+计组+操作系统+计网的一个大杂烩。它不会在某一个知识点给你非常深入的讲解。但是它会让你对整个计算机系统有一个体系上的认识。

王爽的汇编书,是我们本科上课的时候用的书,当时也不知道咋想的选修了汇编。正好对后面学习csapp起到了很大的帮助。所以说大家一定不要太有功利性的学习。你现在学的东西对你后面都会有很大的帮助。

现代操作系统真的是我一直想看但还没看的书。但是要想学好操作系统,感觉直接入手mit6.828会更好一点,实验做完直接就够了吧应该。

书上的练习题一定要配合着阅读做完。课本自带了练习题的答案,当然除此之外还有家庭作业,大家可以根据自己的能力,选做一些家庭作业的题。下附上一个家庭作业答案的链接。

https://pan.baidu.com/s/1jQf4cgEpjqsRrTdvpVruXw pan.baidu.com

密码: 0ba8

关于练习题。

练习题大家一定要好好做。这个是帮助大家理解书本知识最好的方法,csapp里面的练习题设计的都非常好。做练习题的时候就会知道自己哪几个知识点不熟悉,然后回头再看,在独立完成练习题,效果是最好的,

附上一个我自己做练习题的图片。每道题基本都做过好几遍。都是用铅笔写完,在擦掉那种

学会实践

这本书的精华我个人觉得就在于cmu精心设计的几个实验。如果大家能认真做完这些实验,真的会收获非常多,不仅是对计算机知识的提示,对于编程能力,debug能力,动手能力都有非常大的帮助。下面简单介绍一下这几个实验。

  • dadaLab要求大家用限制好的位运算完成它要求的操作
  • bombLab要求大家根据提示阅读汇编代码,输入对应的正确输入拆掉炸弹,如果输入错误炸弹就会爆炸整个实验就会失败。这个实验的整体设定和难度安排都非常有意思,强烈建议大家必做
  • attackLab要求大家利用缓冲区溢出,来进行攻击模拟当黑客的感觉,同时可以学会如何预防这些攻击手段
  • cacheLab要求大家模拟实现一个cache和对矩阵转置进行优化,如何能够写出一个满分的代码,非常有挑战性
  • shellLab要求大家实现一个简易的shell程序。这个实验需要考虑信号并发会出现的一些问题。
  • mallocLab需要大家实现一个malloc程序。帮助大家理解内存分配和管理
  • proxyLab要求写一个支持HTML的多线程Server。可以帮助熟悉Unix网络编程与多线程的控制与同步。

看完这些实验的简介是不是觉得非常有意思,大家可以去cmu的官网下载和实现这些实验

CS:APP3e, Bryant and O'Hallaron csapp.cs.cmu.edu

当然大家如果想做实验的话,可以关注我的csapp实验专栏。马上就会更新完所有的7个lab

CSAPP-Lab www.zhihu.com图标

非常详细的讲解了实验的实现和具体细节。

2. 如何深入学习

由于csapp其实算是对整个计算机系统对大概括。它虽然讲了虚拟内存,但是并没有深入讲解各种页置换算法,没有讲解操作系统里非常重要大文件系统。虽然讲了cache但是对于计算机组成原理并没有很深入。虽然也讲了补码计算等等但都没有很深入。所以如果看完这本书,想对下面这几个方向深入学习。这里有一些自己的建议(自己也是个菜b啦,只是一些建议

1 关于操作系统

首先,推荐两个非常好的mooc。一个是hit李治军老师的mooc这个课其实也算声明在外。在b站出名度还是非常高的(好多人说是b站最好的中文操作系统教程

操作系统(哈工大李治军老师)32讲(全)超清_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili www.bilibili.com图标

当然除了课程,最重要的也是实验这个实验也是非常有难度而且非常有意思,需要魔改Linux的0.11系统。如果面试的时候简历上有一个自己的os。想一想是不是非常酷炫

https://github.com/hoverwinter/HIT-OSLab github.com

这里有一个大佬对于实验的实现。

另外一个就是伯克利的操作系统课程。这个也是非常多的人推荐(但我本人并没有看过

https://www.youtube.com/watch?v=hry_qqXLej8&list=PLRdybCcWDFzCag9A0h1m9QYaujD0xefgM www.youtube.com

这个就得去youtube上看啦。

除了这些之外当然还有mit的6.824。但是mit并没有放出录制很好的视频。但是我们可以把重心放到它的实验室。

除此之外,之前我还有见到伊诺香槟分校的ECE 391。这个课程虽然没有视频而且不是很出名,但是它的实验真的超级硬核,之前见到那个楼主靠这个实验去了apple的操作系统部。感兴趣的同学可以去看看

2 深入计算机网络

计算机网络。我并没有看过很多课好像国外名校公开的计网课并不是很多,因此这里强烈推荐李全龙老师的计算机网络。也是国家精品课,基于的教材是自顶向下,讲的真的无敌

计算机网络_7_哈工大(李全龙) 国家级精品课程 哈尔滨工业大学_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili www.bilibili.com图标

关于实验,我只听说过斯坦福的实验是要用c++手写一个tcp。这里有我当时关注的连接

CS144计算机网络 www.zhihu.com图标

当然提到计算机网络要推荐的书就是那本unix网络编程的神书了,这也是我准备下学期回来刷的书。确实计网看不看这个书都无所谓。但是李全龙老师的MOOC讲的是真的很好,还有斯坦福这个实验其实也很有用。计网又不是只背书就能学好的。我是觉得需要一些这样的实验来帮助学习。

3 深入数据库

对于数据库这个,其实之前我有回答过另一个问题。就是如何学好数据库,大家可以去看看

数据库这门课为什么这么难学,该怎么学? www.zhihu.com图标

最后如果大家觉得回答的还不错的嘛,点一个关注和赞同吧yes!

赞同 2365​ 104 条评论
分享
收藏 ​ 喜欢
收起
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值