行走的西红柿
有up主做了精校的中英字幕,不过没有习题课的字幕
【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili![图标](https://i-blog.csdnimg.cn/blog_migrate/c2858404c0eaeff9b9acf5b743b90c9e.jpeg)
有人用类似3Blue1Brown的方法做了讲解视频
【CSAPP-深入理解计算机系统】1-1.计算机系统漫游_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili![图标](https://i-blog.csdnimg.cn/blog_migrate/60db9d167c9d357c7efd0b270d666250.jpeg)
也有国人做了讲解视频
深入理解计算机系统[00] - 无符号整数、二进制补码_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili![图标](https://i-blog.csdnimg.cn/blog_migrate/b87a570e550412112a34d3354ac7219e.jpeg)
还有这个
解读《深入理解计算机系统》一_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili![图标](https://i-blog.csdnimg.cn/blog_migrate/7000203b38d7f69a25619cfb192a5e7e.jpeg)
我在b站搬运了原始视频包含习题课
卡内基梅隆大学 Introduction to Computer Systems CMU 15-213 Fall_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili![图标](https://i-blog.csdnimg.cn/blog_migrate/acb05b3635fdf184de9a7245919f2198.jpeg)
华盛顿大学的课程覆盖了核心部分,包含实验部分
华盛顿大学软硬件接口 The Hardware/Software Interface_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili![图标](https://i-blog.csdnimg.cn/blog_migrate/a2f7f616112ca75d82440059b6b3d209.jpeg)
--------以下是原回答-----------------
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))。
![](https://i-blog.csdnimg.cn/blog_migrate/742edee2029379ff3443a62cbe28399c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/e461bbd4d2c69a0cca0d6185941c19b2.jpeg)
下面是两位作者讲课时的截图
![](https://i-blog.csdnimg.cn/blog_migrate/684506a7d212d59657fc98d3c1fa5b91.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ea8fd318e65ca1bc74a80ddb2d04a8f0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9081ce14175b514c490a2e38112d444a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/75e788e3f50fc0dee205cffe8d586e18.png)
周小伦
谢邀。
目前 哈工大已经用这本书取代了唐朔飞老师的计算机组成原理。而且是考研专业课最重要的一门。由于本科学过加上考研也学过,所以基本翻烂了
首先一本已经翻烂了的csapp镇楼
![](https://i-blog.csdnimg.cn/blog_migrate/642165d0cad296e925b921b649aa3829.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/48a68038c35c35d3259f0a9036f50278.jpeg)
0. 写在前面
这么多人都推荐深入理解计算机系统。也就是csapp。那它到底是一本什么样的书那。我们先来看它的英文名《ComputerSystem:A programer perspective》翻译过来就是程序员视角下的计算机系统。因此这本书的受众,一开始就不是面向普通人群。它更是一本计算机科班生,或者希望详细学习了解计算机的人的一本入门读物。
这本书是cmu(美国cs四大名校之一)计算机学院的院长的力作,而且基本上cmu计算机最火的课之一。每年都被抢爆。所以非常值得大家学习。
除了cmu之外目前国内许多的计算机名校都基于这本书开设了相关课程。比如北大、交大、哈工大等等。都对这门课给予了非常高的地位。其他学校不太了解。但是哈工大16级课改,直接用这门课取代了计算机组成原理(要知道唐奶奶的计组书有多出名)而且高达5个学分,可见这门课的重要性
好了说了这么多,那学习这门课需要什么样的基础。答案是只需要有c/c++的基础就可以
1. 如何学习
学好一门计算机的专业课,无外乎两个部分。掌握知识、学会实践。下面我就分别从这两个部分来说一下如何学好csapp。
掌握知识
首先要明确这是一本英文原著高于翻译版本的书。因为翻译版真的看的人很头痛,各种不通顺,各种百度翻译的痕迹。所以如果条件允许的话。强烈建议大家直接入手英文版。当然也可以英文版本和中文版本对照这读。这样你甚至可以发现中文版本的某些错误。我是觉得链接冲定位的知识,csapp讲的极为墨迹。尤其中文翻译非常冗杂,包括第二章有些地方也是如此。当然中文版比起自顶向下还是好很多的。我考研的时候也是看中文版居多,不过你英语水平如果足够高的话,是完全可以英文中文对照着看的
![](https://i-blog.csdnimg.cn/blog_migrate/c0be92483448a7b54968dba0487135c5.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/2b483b2119bdf6e7b8599bdfbdeb3b43.jpeg)
当然除了书本之外。好多人可能想要的是一门对应的视频课。cmu自身就给了我们一门这样的课。当然课程质量我个人觉得只是一般,讲的并没有很深入。
【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili![图标](https://i-blog.csdnimg.cn/blog_migrate/c2858404c0eaeff9b9acf5b743b90c9e.jpeg)
除了cmu自己的课国内好多大学也有很多优秀的mooc下面推荐两个我当时所看过的
首先推荐的是南大的计算机系统课。这门课的教材就是csapp的压缩改良本土化版本。不过它的架构是用的IA-32,所以我当时并没有仔细阅读。不过这门课的链接和虚拟内存部分还是非常值得一看的。
计算机系统基础(一):程序的表示、转换与链接_南京大学_中国大学MOOC(慕课)![图标](https://i-blog.csdnimg.cn/blog_migrate/35c6f78e8944e09bef321bd3eb592763.png)
除此之外那,可能很多人都没有听说过上海交大也出过相关的mooc
计算机组成与系统结构_上海交通大学_中国大学MOOC(慕课)![图标](https://i-blog.csdnimg.cn/blog_migrate/bc81d16b14cf033dbf94b578f6d33447.png)
就是这门看起来不像csapp但使用的教材确实是csapp的课。这门课是2020年新出的一门课。讲的非常不错,大家可以去看一下。另外这里附上交大自己的csapp学习网站。里面有对应的ppt和一些homework。配合使用效果更佳哟
SE101 / 2019 / Welcome当然这些视频课只能给大家一些帮助,剩下的还需要自己去理解。
下面推荐一些对于学习这门课会有帮助的一些书。
![](https://i-blog.csdnimg.cn/blog_migrate/7e76216f4de96498d07f7f2e774e4f62.jpeg)
csapp更像是汇编+计组+操作系统+计网的一个大杂烩。它不会在某一个知识点给你非常深入的讲解。但是它会让你对整个计算机系统有一个体系上的认识。
王爽的汇编书,是我们本科上课的时候用的书,当时也不知道咋想的选修了汇编。正好对后面学习csapp
起到了很大的帮助。所以说大家一定不要太有功利性的学习。你现在学的东西对你后面都会有很大的帮助。
现代操作系统真的是我一直想看但还没看的书。但是要想学好操作系统,感觉直接入手mit
的6.828
会更好一点,实验做完直接就够了吧应该。
书上的练习题一定要配合着阅读做完。课本自带了练习题的答案,当然除此之外还有家庭作业,大家可以根据自己的能力,选做一些家庭作业的题。下附上一个家庭作业答案的链接。
https://pan.baidu.com/s/1jQf4cgEpjqsRrTdvpVruXw密码: 0ba8
关于练习题。
练习题大家一定要好好做。这个是帮助大家理解书本知识最好的方法,csapp里面的练习题设计的都非常好。做练习题的时候就会知道自己哪几个知识点不熟悉,然后回头再看,在独立完成练习题,效果是最好的,
![](https://i-blog.csdnimg.cn/blog_migrate/1ffbbb40c55321229b762c270ae1e956.jpeg)
附上一个我自己做练习题的图片。每道题基本都做过好几遍。都是用铅笔写完,在擦掉那种
学会实践
这本书的精华我个人觉得就在于cmu精心设计的几个实验。如果大家能认真做完这些实验,真的会收获非常多,不仅是对计算机知识的提示,对于编程能力,debug能力,动手能力都有非常大的帮助。下面简单介绍一下这几个实验。
dadaLab
要求大家用限制好的位运算完成它要求的操作bombLab
要求大家根据提示阅读汇编代码,输入对应的正确输入拆掉炸弹,如果输入错误炸弹就会爆炸整个实验就会失败。这个实验的整体设定和难度安排都非常有意思,强烈建议大家必做attackLab
要求大家利用缓冲区溢出,来进行攻击模拟当黑客的感觉,同时可以学会如何预防这些攻击手段cacheLab
要求大家模拟实现一个cache和对矩阵转置进行优化,如何能够写出一个满分的代码,非常有挑战性shellLab
要求大家实现一个简易的shell程序。这个实验需要考虑信号并发会出现的一些问题。mallocLab
需要大家实现一个malloc程序。帮助大家理解内存分配和管理proxyLab
要求写一个支持HTML的多线程Server。可以帮助熟悉Unix网络编程与多线程的控制与同步。
看完这些实验的简介是不是觉得非常有意思,大家可以去cmu的官网下载和实现这些实验
CS:APP3e, Bryant and O'Hallaron当然大家如果想做实验的话,可以关注我的csapp实验专栏。马上就会更新完所有的7个lab
CSAPP-Lab![图标](https://i-blog.csdnimg.cn/blog_migrate/43b0c591d532741d0bb41652030068cf.jpeg)
非常详细的讲解了实验的实现和具体细节。
2. 如何深入学习
由于csapp其实算是对整个计算机系统对大概括。它虽然讲了虚拟内存,但是并没有深入讲解各种页置换算法,没有讲解操作系统里非常重要大文件系统。虽然讲了cache但是对于计算机组成原理并没有很深入。虽然也讲了补码计算等等但都没有很深入。所以如果看完这本书,想对下面这几个方向深入学习。这里有一些自己的建议(自己也是个菜b啦,只是一些建议
1 关于操作系统
首先,推荐两个非常好的mooc。一个是hit李治军老师的mooc这个课其实也算声明在外。在b站出名度还是非常高的(好多人说是b站最好的中文操作系统教程
操作系统(哈工大李治军老师)32讲(全)超清_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili![图标](https://i-blog.csdnimg.cn/blog_migrate/400f72126f4330ff1d5e1cc46962ce80.jpeg)
当然除了课程,最重要的也是实验这个实验也是非常有难度而且非常有意思,需要魔改Linux的0.11系统。如果面试的时候简历上有一个自己的os。想一想是不是非常酷炫
https://github.com/hoverwinter/HIT-OSLab这里有一个大佬对于实验的实现。
另外一个就是伯克利的操作系统课程。这个也是非常多的人推荐(但我本人并没有看过
https://www.youtube.com/watch?v=hry_qqXLej8&list=PLRdybCcWDFzCag9A0h1m9QYaujD0xefgM这个就得去youtube上看啦。
除了这些之外当然还有mit的6.824。但是mit并没有放出录制很好的视频。但是我们可以把重心放到它的实验室。
除此之外,之前我还有见到伊诺香槟分校的ECE 391。这个课程虽然没有视频而且不是很出名,但是它的实验真的超级硬核,之前见到那个楼主靠这个实验去了apple的操作系统部。感兴趣的同学可以去看看
2 深入计算机网络
计算机网络。我并没有看过很多课好像国外名校公开的计网课并不是很多,因此这里强烈推荐李全龙老师的计算机网络。也是国家精品课,基于的教材是自顶向下,讲的真的无敌
计算机网络_7_哈工大(李全龙) 国家级精品课程 哈尔滨工业大学_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili![图标](https://i-blog.csdnimg.cn/blog_migrate/ce0efcf05090f0ffee58ed9d40ec0a21.jpeg)
关于实验,我只听说过斯坦福的实验是要用c++手写一个tcp。这里有我当时关注的连接
CS144计算机网络![图标](https://i-blog.csdnimg.cn/blog_migrate/43b0c591d532741d0bb41652030068cf.jpeg)
当然提到计算机网络要推荐的书就是那本unix网络编程的神书了,这也是我准备下学期回来刷的书。确实计网看不看这个书都无所谓。但是李全龙老师的MOOC讲的是真的很好,还有斯坦福这个实验其实也很有用。计网又不是只背书就能学好的。我是觉得需要一些这样的实验来帮助学习。
![](https://i-blog.csdnimg.cn/blog_migrate/d3c0018dfcd34480bc2f39aa56722729.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/9ea7ec2f521e9cd84031db7d52fadf24.jpeg)
3 深入数据库
对于数据库这个,其实之前我有回答过另一个问题。就是如何学好数据库,大家可以去看看
数据库这门课为什么这么难学,该怎么学?![图标](https://i-blog.csdnimg.cn/blog_migrate/cc9395ee6be69121b07bcaf08aec8be7.png)
最后如果大家觉得回答的还不错的嘛,点一个关注和赞同吧yes!
![](https://i-blog.csdnimg.cn/blog_migrate/c95f653f07b8e700f310561947621de2.jpeg)