小土刀

【深入理解计算机系统(第三版)】读书笔记

本文是《深入理解计算机系统(中文第三版)》上市后的重读笔记。


从程序员的角度来学习计算机系统是如何工作的会非常有趣,主要是因为你可以主动地来做这件事情。无论何时你学到一些新的东西,都可以马上试验并且直接看到运行结果。事实上,我们相信学习系统的唯一方法就是做(do)系统,即再真正的系统上解决具体的问题,或是编写和运行程序。

本书起源于1998年秋季,作者在 CMU 开设的编号为15-213的介绍性课程:计算机系统导论(Introduction to Computer Systems, ICS),是大多数高级系统课程的先行必修课。宗旨是用一种不同的方式向学生介绍计算机,只讨论那些影响用户级 C 语言程序的性能、正确性或实用性的主题。

计算机系统漫游

计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。虽然系统的具体实现方式随着时间不断变化,但是系统内在的概念却没有改变。所有计算机系统都有相似的硬件核软件组件,它们又执行着相似的功能。一些程序员希望深入了解这些组件是如何工作的以及这些组件是如何影响程序的正确性和性能的,以此来提高自身的技能。本书便是为这些读者而写的。

源程序实际上就是一个由值 0 和 1 组成的位(又称为比特)序列,8 个位被组织成一组,称为字节。每个字节表示程序中的某些文本字符。

大部分的现代计算机系统都使用 ASCII 标准来表示文本字符,这种方式实际上就是用一个唯一的单字节大小的整数值来表示每个字符。

只由 ASCII 字符构成的文件称为文本文件,所有其他文件都称为二进制文件

每条 C 语句都必须被其他程序转化为一系列的低级机器语言指令。然后这些指令按照一种称为可执行目标文件的格式打好包,并以二进制磁盘文件的形式存放起来。目标程序也称为可执行目标文件。在 Unix 系统上,从源文件到目标文件的转化是由编译器驱动程序完成的。

系统不仅仅只是硬件。系统是硬件和系统软件互相交织的集合体,它们必须共同协作以达到运行应用程序的最终目的。

数字计算机的整个历史中,有两个需求是驱动进步的持续动力:一个是我们想要计算机做得更多,另一个是我们想要计算机运行得更快。当处理器能够同时做更多的事情时,这两个因素都会改进。我们用术语并发(concurrentcy)是一个通用的概念,指一个同时具有多个活动的系统;而术语并行(parallelism)指的是用并发来使一个系统运行得更快。并行可以在计算机系统的多个抽象层次上运用。

重点强调的三个层次:线程级并发、指令级并行、单指令/多数据并行。

您的支持是对我创作最大的鼓励!

热评文章