1.1 信息就是位+上下文
系统中的所有信息——包括磁盘文件、内存中的程序、内存中存放的数据以及网络上传送的数据,都是由一串比特表示的。区分不同数据对象的唯一方法就是我们读到这些数据对象的上下文。
1.2 程序被其他程序翻译成不同的格式
-
编译系统的四个阶段:预处理-编译-汇编-链接
-
预处理阶段:源文件纯粹的替换与展开,没有任何计算功能,生成.i文件。有以下三类。
- 文件包含: 可以把源程序中的#include 扩展为文件正文,即把包含的.h文件找到并展开到#include 所在处。
- 条件编译 : 预处理器根据#if和#ifdef等编译命令及其后的条件,将源程序中的某部分包含进来或排除在外,通常把排除在外的语句转换成空行。
- 宏展开 : 预处理器将源程序文件中出现的对宏的引用展开成相应的宏 定义,即本文所说的#define的功能,由预处理器来完成。
- 编译阶段:生成汇编语言程序,扩展名为.s。
- 汇编阶段:生成二进制文件,扩展名为.o。
- 链接阶段:链接是将各种代码和数据部分收集起来并合并为一个单一文件的过程,该文件最后被加载到存储器中并运行
-
预处理阶段:源文件纯粹的替换与展开,没有任何计算功能,生成.i文件。有以下三类。
1.3 了解编译系统有助于
- 优化程序性能
- 理解链接时出现的错误
- 避免安全漏洞
1.4 处理器读并解释存储在内存中的指令
-
系统的硬件组成
- (1)总线:贯穿整个系统的电子管道。携带信息字节并负责各个部件间传递。
- (2)I/O设备:设备与外部世界的联系通道。,如鼠标、键盘、磁盘、显示器等。
- (3)主存:临时存储设备,由一组动态随机存取存储器(DRAM)芯片组成。
- (4)处理器:中央处理器CPU,是解释(或执行)存储在主存中指令的引擎。
1.5 高速缓存至关重要
- 原因:处理器与寄存器、主存、磁盘之间的速度差异不匹配。
- 解决办法:使用cache/高速缓存作为数据暂时集结区域,存放近期可能需求的信息。L1和L2级高速缓存是用一种叫做静态随机访问存储器(SRAM)。利用高速缓存的局部性原理(即数据具有访问局部区域里的数据和代码的趋势),系统可以获得一个很大存储器,同时访问速度也很快。
1.6 存储器体系层次结构
1.7 操作系统管理硬件
我们可以把操作系统看成是应用程序和硬件之间插入的一层软件,所有应用程序对硬件的操作尝试都需要通过硬件系统。
- 操作系统两个功能:(1) 防止硬件被失控应用程序滥用;(2)面向应用程序提供简单一致的机制来控制通常大不相同的低级设备。
-
如何实现:操作系统通过以下三个基本抽象概念来实现上述两个功能。
- 进程:处理器、主存、I/O设备的抽象
- 虚拟内存:主存和磁盘I/O设备的抽象
- 文件:I/O设备的抽象
- 进程: 操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程呢,而每个进程都好像在独占使用硬件。
- 虚拟内存:一个抽象概念,他为每个进程提供一个假象,即每个进程都在独占地使用主存。每个进程看到的主存都是一致的,成为虚拟地址空间。
- 文件: 文件就是字节序列,仅此而已。每一个I/O设备,都可以看成一个文件,如磁盘、键盘、显示器和网络。
1.9 重要主题
-
三种并发:
- ->线程级并发:构建于进程这个抽象之上,有多个程序同时执行的系统。
- ->指令级并发:在较低的抽象层次上,现代处理器可以同时执行多条指令的属性称为指令级并行。
- ->单指令、多数据并行:在较低层次上,允许一条指令产生多个可以并发执行的操作。
-
计算机抽象系统重要性
计算机系统中的一个重要主题就是提供不同层次的抽象,来隐藏实际实现的复杂性。
文件是对I/O设备的抽象;虚拟内存是对程序存储器的抽象;进程是对正在运行的程序的抽象;虚拟机是对整个计算机的抽象,包括操作系统、处理器和程序。
1.10 本章小结
计算机系统是由硬件和系统软件组成的,它们共同协作以运行应用程序。计算机内部的信息被表示为一组组的位,它们依据上下文有不同的解释方式。程序被其他程序翻译成不同的形式,开始时是ASCII 文本,然后被编译器和链接器翻译成二进制可执行文件。
处理器读取并解释存放在主存里的二进制指令。因为计算机花费了大量的时间在内存、I/O 设备和CPU 寄存器之间复制数据,所以将系统中的存储设备划分成层次结构——CPU 寄存器在顶部,接着是多层的硬件高速缓存存储器、DRAM 主存和磁盘存储器。在层次模型中,位于更高层的存储设备比低层的存储设备要更快,单位比特造价也更高。层次结构中较高层次的存储设备可以作为较低层次设备的高速缓存。通过理解和运用这种存储层次结构的知识,程序员可以优化 C程序的性能。
操作系统内核是应用程序和硬件之间的媒介。它提供三个基本的抽象:1)文件是对 I/O 设备的抽象:2)虚拟内存是对主存和磁盘的抽象;3)进程是处理器、主存和 I/O设备的抽象。
最后,网络提供了计算机系统之间通信的手段。从特殊系统的角度来看,网络就是一种 I/O 设备。