《深入理解计算机系统》
发布日期:2021-11-03 16:26:30 浏览次数:2 分类:技术文章

本文共 2527 字,大约阅读时间需要 8 分钟。

原文链接:http://wdxtub.com/2016/04/16/thin-csapp-0/

知乎《深入理解计算机系统》这本书需要什么水平能看懂?:https://www.zhihu.com/question/20354069

如何阅读《深入理解计算机系统》这本书?:https://www.zhihu.com/question/20402534

链接失效则:   (http://www.cs.cmu.edu/~./213/schedule.html)
CMU15-213的课程主页,有ppt,代码还有录像,主讲人就是这本书的作者。

备注

备注:详细内容请看原博主,这里仅自己做记录

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

更新历史

  • 2017.03.18: 更新链接
  • 2016.12.20: 内容更新
  • 2016.04.16: 完成初稿

《深入理解计算机系统》是 CMU 教授 Bryant 和 O’Hallaron 共同撰写的一本计算机学科经典入门教材。先从数据的表示开始,自然而然引出用汇编描述的计算机基本运行的方式,接着介绍控制流、过程调用到跳转等高级话题,以了解了计算机运行的模式,并据此给出一些程序设计的技巧作为过渡。这之后开始涉及诸如内存、编译器、进程、信号、I/O、虚拟内存、动态内存分配等知识。这些东西看起来都非常吓人,但是老师很科学地把握好了『度』,让我们理解基本原理的同时却不会过早陷入无谓的复杂度,这样以后想要深入学习可以自己去探索。在单机的知识基本完备之后,开始涉及网络、同步、并行编程等高级话题,为后面的学习打下基础。

这个系列脱胎于我之前连载的《深入理解计算机系统》学习笔记(因为包含课程相关信息,在学校的要求下删除)。当时是一边学习一边记录,这次是完成所有课程内容之后再回顾,所以会更加清晰透彻。当然,从文字到图片全部都是个人原创,也就不存在版权问题了。

下面通过问答的形式,来对这个系列做简要的介绍。

为什么要写?

  • 这是一本非常经典的教材,也是一本大部头,第三版一千多页,并不是所有人都能坚持看完,希望以『读薄』的形式,让更多人能领略到经典的风采。
  • 我在 CMU 的时候在书本作者的亲自教授下修完了以这本书为教材的『镇校神课』并完成了所有实验,一是总结,二是分享,在交流的过程中加深对知识的理解。
  • 老版本的课程笔记因为涉及到部分课件内容,在校方的要求下删除,这个新版无论是文字还是配图都由我亲自制作,力争做到源于课程,高于课程。
  • 这是一本非常值得学习的教材,原来的文章删除之后很多朋友表达了遗憾之情。但是我完全可以做得更好,真正把知识融会贯通展示给大家。

经过大概一个星期的筹划,老版课程笔记以『读薄/读厚』系列重生。不是为了输赢,就是想做点什么,这就是写这个系列的原因。

能带给读者什么?

  • 对计算机系统有更加全面且深入的认识。
  • 扎实的基础,无论是想要进阶学习编译原理、操作系统还是网络,基本的概念在这个系列都已覆盖。
  • 从机器代码(汇编)开始,逐步了解编程本身的进化。
  • 培养朝抵抗力最大的路径走的坚定,学会如何去学习。

这也是我写新技术系列的一次尝试,让互联网上高质量的中文内容多一些,再多一些。

有什么局限?

  • 这不是一个可以速成,看看就懂的系列,需要自己动手去实践。话说回来,天底下的真功夫,也没有能够速成的。
  • 相对国内的课程和文章,比较深入,很多内容学习工作中并不会直接遇到,但本系列的重点是『知其所以然』。真正的高手,飞花落叶皆可伤敌,打通任督二脉,苦练内力,功夫才可大成。
  • 工作量比较大,会花费很多实践,需要不断尝试,不断跌倒再爬起,而这正是『深入理解计算机系统』的必经之路。
  • 需要自行探索的部分很多,我个人的知识体系并不完备,欢迎大家在评论中各抒己见,让这个系列更加完美。

在这个快节奏的时代,慢一点,再慢一点。

主要写什么?

  • 从基本概念入手,辅以图片,尽量用具体实例阐述推导和思考的过程,不用『显然』偷懒,不用『易知』搪塞。
  • 逆推设计过程,还原具体情境,为什么会有不同的设计不同的系统,寻找『三江源』。
  • 结合 CMU 官方课程,对全书内容进行重新编排,加入更多个人的理解和思考,利用文字跨域时空限制,和读者一起进步。
  • 具体实验中进行尝试和拓展,不只给出行得通的解法,更应该去了解行不通的解法到底问题出在哪里

对自己的要求是写作的时候,细致一点,再细致一点。

不会写什么?

  • 不会过多重复课本中已有的概念,这个系列并不是《深入理解计算机系统》的缩写版,而应该是『学习伴侣』,有自己的思考,再来看看我的思考和大家的思考,这样才是最高效的学习。
  • 不会贴出答案,这个系列并不能让你快速完成作业,但是能在你遇到问题的时候,或多或少给出一些提示和启发。
  • 不会详述只需要简单搜索就可以找到答案的问题,希望能专注于那些『不懂甚至不知道如何搜索』的问题,并以此鼓励大家培养自己主动探索解决问题的能力

对读者的要求是学习的时候,走一步,再走一步。

具体编排

『读薄』主要是点出书本中的重点概念,『读厚』则是专注于七个实验的思考,希望大家喜欢这个系列(反正我是很喜欢)。

读薄部分

    • 无符号数,补码,浮点数,位操作,数学计算,汇编程序
    • C 控制流程的表示,数据结构的分配和访问,体系架构和编译器,栈分配,寄存器,参数传递,运算指令,安全漏洞,指针
    • 内存技术,内存层级,缓存,磁盘,局部性,体系架构和操作系统
    • 静态和动态链接,目标文件,符号解析,重定位,静态库,共享目标库,位置无关代码,库打桩
    • 硬件异常,进程,进程控制,Unix 信号,非本地跳转
    • 高层和底层 IO
    • 虚拟内存,地址翻译,动态存储分配
    • Internet 服务,Web 服务器
    • 并行,并行服务器设计,线程,IO 复用,信号量,竞争条件,死锁

读厚部分

谁不想用最简单的方法获得最强大的能力,但是这又怎么可能。捷径,如果指的是最短的路径,那么也就是梯度上升最快的路径,更是最难的路径。靠什么去走完这段旅程呢?

靠自己。靠自己的思考。靠自己的百折不挠。

相关链接

转载地址:https://blog.csdn.net/whulovely/article/details/69660521 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:选择Yii 2框架的7个理由
下一篇:关于PHP程序员技术职业生涯规划

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月12日 03时15分14秒