深入理解计算机系统 - 阅读笔记
第三版
第一章
所有计算机系统都有相似的硬件和软件组成,它们执行着相似的功能,从逻辑实现的角度来说,硬件和软件是没有区别的
1.1 信息就是位 + 上下文
程序的运行是从一个源程序(或源文件)开始的, 源程序由0或1 这种二进制语言构成,8个位称为一个字节。每个字节表示程序中的某些文本字符。
1.2 程序被其他程序翻译成不同的格式
为了在系统上运行hello.c
程序,每条C语言都必须被其他程序转化成一系列的低级 机器语言 指令。
然后这些指令按照一种称为 可执行目标程序 的格式打好包,并以二进制磁盘文件的形式存放起来。目标程序也称为 可执行目标文件 。
在Unix系统上,从源文件到目标文件的转化是由 编译器驱动程序 完成的:
GCC 编译器驱动程序读取源程序文件 hello.c
可以按照以下四个阶段,这个四个阶段一起构成了 编译系统
1.3 了解编译系统如何工作是大有益处的
通过hello.c
这种简单的程序,我们可以知道编译器是如何多程序进行处理的
知道编译器的处理过程有以下好处:
- 优化程序性能
- 理解链接时出现的错误
- 避免安全漏洞
1.4 处理器读并解释存在内存中的指令
hello.c
源程序已经被编译系统翻译成了可执行目标文件 hello
,并存放在磁盘上面。在Unix上,我们可以通过以下简单的shell命令去执行