《深入理解计算机系统》计算机系统漫游
《深入理解计算机系统》简称 CSAPP书中 “计算机系统漫游” 部分的核心内容。这部分通常作为全书的引言或第一章旨在宏观地描绘计算机系统的构成和运作方式。信息的表示与处理核心基础计算机系统处理的所有信息无论是程序指令还是用户数据在本质上都是由一系列的位构成的。仅仅有位的序列是不够的这些位序列必须被赋予上下文才能真正表达出具体的意义如整数、浮点数、字符或机器指令。系统的硬件组成这部分介绍了计算机系统运行一个hello world程序时硬件层面的主要参与者总线部件之间传输信息的通道。I/O设备系统与外界交互的通道 (如键盘、鼠标、显示器、磁盘驱动器)。它们通过适配器或控制器连接到系统总线上。主存储器 (RAM)在程序运行时临时存储程序和程序处理的数据。处理器 (CPU)执行程序中的指令其核心是程序计数器PC, 指向下一条待执行指令、寄存器文件小的临时存储和算术/逻辑单元ALU, 执行计算。处理器会不断执行一个基本循环从内存读取指令、解析指令、执行操作、更新程序计数器指向下一条指令。存储器层次结构这是一个非常重要的、贯穿全书的概念。为了弥补处理器运行速度和访问主存速度之间的巨大鸿沟计算机系统设计了一个由高速缓存存储器和多级高速缓存组成的层次结构。高速缓存位于处理器和主存之间存储近期可能被访问的数据副本。访问高速缓存比访问主存快得多。系统通过有效管理缓存试图将处理器经常使用的数据保存在高速缓存中从而显著提升程序的执行效率。操作系统的作用软件层面的抽象操作系统在硬件之上提供了一层抽象使应用程序无需直接与复杂的硬件细节打交道文件操作系统对 I/O 设备的抽象。文件就是字节序列。所有 I/O 操作如读磁盘、从键盘输入、显示到屏幕、网络通信最终都归结为文件读写。虚拟内存为程序提供的内存视图“假象”使得程序似乎运行在自己的独立内存空间中。它简化了程序的内存管理并提供了重要的内存保护和共享机制。进程操作系统对一个正在运行的程序的抽象。它使得操作系统可以调度 CPU 时间片让用户感觉多个程序在“同时”运行并发。虚拟处理器操作系统通过快速切换上下文来管理多个进程所需的“处理器”抽象。进程与并发程序作为一个静态的代码文件加载到内存执行后就变成了一个进程例如hello进程。操作系统在多个进程之间进行并发管理有多个活动同时发生或交替执行。并行则是并发的一种特殊形式利用并发使得系统运行得更快。系统间通过网络通信现代计算机系统不再是孤立的岛屿。网络可以被视为一个 I/O 设备计算机系统之间通过网络相互通信如发送数据包。重要主题并发 (Concurrency) 并行 (Parallelism)线程级并发多核处理器和超线程技术允许单个 CPU “同时” 执行多个控制流线程从而提升系统的整体吞吐量和响应能力。指令级并行现代处理器内部采用流水线技术并行处理多条指令甚至单核 CPU 也可能同时处理多条指令。单指令、多数据并行利用特殊硬件指令如 SIMD 指令一条指令可以完成多个数据的操作例如同时对 4 个浮点数做加法。Amdahl 定律定量地描述了系统某部分性能提升对整体性能的影响强调优化瓶颈部分的重要性。抽象的重要性抽象是计算机科学的核心思想之一它通过隐藏底层实现的复杂性来简化设计和应用如文件是对 I/O 设备的抽象进程是对 CPU、内存和 I/O 的抽象虚拟机是对整个硬件的抽象。总结:“计算机系统漫游” 旨在提供一个鸟瞰图解释了构成计算机系统的基本硬件组件处理器、存储器、I/O、信息在系统内部如何表示位上下文、以及操作系统如何通过在硬件之上构建关键的抽象进程、虚拟内存、文件来管理这些资源以实现并行和并发执行。它也预告了贯穿全书的关键主题存储器层次结构、链接、进程与线程、虚拟内存、系统级 I/O、网络等。