本专栏为个人 CSAPP 读书笔记,如有兴趣请购买正版书籍。
狗东飞机票
豆瓣书评
0x00 – 前言
CSAPP,汉语译为《深入理解计算机系统》,个人觉得少了直译的一点点意思。
英文名《Computer Systems: A Programmer’s Perspective》(计算机系统:程序员的视角)
前言
我们的目的是解释所有计算机系统的本质概念,并想你展示这些概念是如何实实在在地影响应用程序的正确性、性能和实用性的。其他的系统类书籍都是从构建者的角度来写的,讲述如何实现硬件或系统软件,包括操作系统、编译器和网络接口。而本书是从程序员的角度来写的,讲述应用程序如何能够利用系统知识来编写出更好的程序。当然,学习一个计算机系统应该做些什么,是学习如何构建一个计算机系统的很好的出发点,所以,对于希望继续学习系统软硬件实现的人来说,本书也是一本很有价值的介绍性读物。大多数系统书籍还倾向于终点关注系统的某一个方面,比如:硬件架构、操作系统、编译器或者网络。本书则以程序员的视角统一覆盖了上述所有方面的内容。
⬇️
如果你研究和领会了这本书里的概念,你将开始吃横位极少数的“牛人”,这些“牛人”知道事情是如何运作的 ,也知道当事情出现故障时如何修复。你写的程序将能够更好的利用操作系统和系统软件提供的功能,对各种操作条件和运行时参数都能正确操作,运行起来更快,并能够避免出现使用程序容易受到网络攻击的缺陷。同时,你要做好更深入探究的准备,研究像编译器、计算机体系结构、操作系统、嵌入式系统、网络互联和网络安全这样的高级题目。
0x01 – 如何阅读此书
我们相信学习系统的唯一方法就是做(do)系统,即在真正的系统上解决具体的问题,或是便携和运行程序。
0x02 – 概述
- 第一章:计算机系统漫游。通过简单程序的生命周期,介绍计算机系统的主要概念和主题。
- 第二章:信息的表示和处理。重点描述对程序员有影响的无符号数和数的补码表示的特性。
- 第三章:程序的机器级表示。如何阅读由C编译器生成的 x86-64机器代码。
- 第四章:处理器体系结构。基本的组合时许逻辑元素。
- 第五章:优化程序性能。让程序猿通过编译器能够生成更有效的机器代码来学习编写C代码。
- 第六章:存储器层次结构。由一个不同容量、造价和访问时间的存储设备组成的层次结构。
- 第七章:链接。动态和静态链接,主要概念有重定位的和可执行的目标文件、符号解析、重定位、静态库、共享目标哭、位置无关代码,以及库打桩。
- 第八章:异常控制流。从底层的硬件异常和中断,道并发进程的上下文切换等。
- 第九章:虚拟内存。加强了这样一个概念,虚拟内存空间只是一个字节数组,程序可以把它划分成不同的存储单元。帮助理解程序中包含的存储泄漏和非法指针引用等内存饮用错误时的后果。
- 第10章:系统级I/O。Unix I/O 的基本概念,如文件和描述符。
- 第11章:网络编程。有趣的I/O设备,将前面很多内容联系在一起。
- 第12章:并发编程。对大多数服务器来说,并发很关键,可以使程序在多核处理器上能执行的更快。
0x03 – 本书起源
起源1988年,卡内基-梅隆(CMU)大爷开设的一门编号为15-213的介绍性课程:计算机系统导论(Introduction to Computer System,ICS)。
这本书在国外还是很多课程的前置技能–戳我
2021年10月8日