CSAPP 第一章:计算机系统漫游
1.1 信息就是位+上下文
计算机以二进制形式表示信息,每个二进制位表示一种状态,可以表示数字、字符等等。 上下文指的是信息被解释的环境,同样的位在不同上下文中可能有不同的含义。 字节是计算机中常用的信息单位,一个字节通常表示8位二进制数据。
1.2 程序被其他程序翻译成不同的格式
操作系统负责将高级语言程序翻译成机器语言程序,其中编译器将高级语言翻译成汇编语言,汇编器将汇编语言翻译成机器语言。 目标代码是机器语言的二进制表示形式,可执行目标代码是可直接在计算机上运行的机器语言程序。 共享库是一段被多个程序共享的目标代码,使得程序在运行时所需的内存更小。
1.3 了解编译系统如何工作是大有益处的
- 优化程序性能
- 理解链接是出现的错误
- 避免安全漏洞
1.4 处理器读取并解释存储在内存中的指令
存储器层次结构指的是计算机中各个存储设备(寄存器、缓存、主存、硬盘等)按照距离处理器远近划分的层次结构。 处理器解释并执行存储在内存中的指令,指令集体系结构定义了处理器能够执行的指令集合。 程序计数器是一个寄存器,保存当前正在执行的指令地址,处理器按顺序逐条执行指令。
1.5 高速缓存至关重要
高速缓存是存储器层次结构中的一级缓存,用于加速处理器访问主存中的数据。 高速缓存采用空间局部性和时间局部性原理,预测处理器未来访问的数据,提前将其缓存到高速缓存中。 高速缓存的命中率指的是处理器需要的数据在高速缓存中的比例,高速缓存的访问时间短于主存,能显著提升程序性能。
1.6 存储设备形成层次结构
存储设备也有层次结构,根据访问时间、容量和价格的不同分为寄存器、高速缓存、主存、硬盘等层次。 存储设备的层次结构决定了数据的访问速度和容量,越靠近处理器的存储设备速度越快,容量越小。 存储器和磁盘都采用二进制编址方案,即将每个存储单元(或扇区)赋予一个唯一的二进制地址,用于在存储设备中寻找数据。
1.7 操作系统管理硬件
操作系统是计算机中负责管理各种硬件设备的程序,包括进程、内存、文件等。 操作系统为进程提供了虚拟地址空间,使得每个进程看到的内存空间都是相同的。 文件系统是操作系统中负责管理磁盘上文件和目录的程序,文件被组织成目录树结构。
1.8 系统之间利用网络通信
高速网络使得计算机之间可以快速传输大量数据,网络中传输的数据以分组为单位。 因特网是一种全球范围内的计算机网络,互联了数十亿个计算机。 网络协议是计算机间通信的规则,常见的网络协议有TCP/IP协议。
1.9 重要主题
Amdahl定律
该定律指出,一个程序在多处理器系统上的加速比取决于其可并行化部分的比例和处理器的数量。
假设一个程序的总运行时间为\(T\),其中有一个比例为\(\alpha\)的部分可以被并行化(即可以使用多个处理器同时执行),而剩余的比例为\(1 - \alpha\)的部分必须在单个处理器上顺序执行。如果该程序在单个处理器上运行的时间为\(T_1\),在\(N\)个处理器上运行的时间为\(T_N\),则该程序在\(N\)个处理器上的加速比为:
\[ Speedup_{overall} = \frac{1}{(1 - \alpha) + \frac{\alpha}{N}} \]
并发与并行
并发指的是多个计算机或进程在同一时间内执行多个任务的能力,可以提高程序的性能。 操作系统需要管理多个进程之间的并发访问,包括进程调度、同步、互斥等机制。 并发编程需要注意同步和互斥问题,多线程编程需要注意线程安全问题。