前言·

作用:系统入门

CMU 15-213: CSAPP - CS自学指南 (csdiy.wiki)

直接把csdiy的介绍摘过来

话说这个放到了体系结构分区里,另外难度5颗星+需要编程语言+数据结构的先修要求;之前一直以为是国外的计算机导论课程,广而不深

课程简介·

  • 所属大学:CMU
  • 先修要求:CS61A(python编程思想), CS61B(数据结构) (没学;就靠着之前学过的计算机基础先看吧)
  • 编程语言:C
  • 课程难度:🌟🌟🌟🌟🌟
  • 预计学时:150 小时

CMU 大名鼎鼎的镇系神课,以其内容庞杂,Project 巨难而闻名遐迩。课程内容覆盖了汇编语言、体系结构、操作系统、编译链接、并行、网络等,作为系统入门课,兼具深度和广度,如果自学确实需要相当的毅力和代码功底。

这门课配合的教材由 CMU 计算机系主任 Bryant 教授执笔,也即所谓的 CSAPP。这也是我第一本认认真真一页一页读过去的计算机教材,虽然很难啃,但着实收获良多。

北大购买了这门课的版权并开设了 Introduction to Computer System 这门课,但其实 CSAPP 所有的课程资源和实验代码都能在它的官方主页上访问到(具体参见下方链接)。

这门课由于过于出名,全世界的码农争相学习,导致其 Project 的答案在网上几乎唾手可得。但如果你真的想锻炼自己的代码能力,希望你不要借鉴任何第三方代码。

认真学完这一门课,你对计算机系统的理解绝对会上升一个台阶。

课程资源·

  • 课程网站:http://csapp.cs.cmu.edu/
  • 课程视频:https://www.bilibili.com/video/BV1iW411d7hd
  • 课程教材:Computer Systems: A Programmer’s Perspective, 3/E
  • 课程作业:11 个 Project,代码框架全部开源

英语有困难的同学可以参考B站UP主九曲阑干对 CSAPP 的中文讲解(据说CMU的中国留学生也在CMU的课堂上看这个视频呢)。另外如果大家在看完 CSAPP 后对书中的第七章链接有一定的疑问,推荐阅读《程序员的自我修养》这本书,书的副标题是链接,装载与库。这本书能够帮助我们完善对程序链接的理解,相信你在看完这本书以后可以对程序的链接,ELF 文件,动态库都将有一个更加深入的理解。十分推荐在读完 CSAPP,对计算机系统有一定的了解以后作为补充资料来阅读。

  • Computer Systems: A Programmer’s Perspective

国外原版课程链接:2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频_哔哩哔哩_bilibili

同学当时看的推荐的:深入理解计算机系统合集(周更中)_哔哩哔哩_bilibili

fengmuzi2003(之前看过一些up主的其他视频,感觉很有品味和技术能力):[原创] 深入理解计算机系统 - CSAPP重点导读(更新完毕)_哔哩哔哩_bilibili

csdiy推荐的九曲阑干,更详细:【CSAPP-深入理解计算机系统】1-1.计算机系统漫游_哔哩哔哩_bilibili目录更细,可以某个小点不懂再来看

书籍:自己买的纸质书是第三版

开始学习吧!


第01章:计算机系统漫游 - CSAPP重点解读 (gitbook.io)

九曲的课程讲的不紧不慢蛮好的,听着挺舒服,麻省理工那个有点干涩;另外一个则是只有重点导读

hello world C code:

1
2
3
4
#include<stdio.h>
int main(){
printf("hello world\n");
}

hello world shell:

1
2
3
4
桌面$ vim hello.c
桌面$ gcc -o hello hello.c
桌面$ ./hello
hello world

32bit: 1 word = 4 Byte | 64bit: 1 word = 8 Byte(64位系统1字8字节。PC程序计数器存储空间是1字)

计算机漫游部分没什么吃力,而且还能回顾之前上过的课程(的确是一章一本书了)