【读书笔记】CSAPP 第1章 计算机系统漫游
第1章 计算机系统漫游
1.1 信息就是“位”+"上下文
hello.c的表示方法说明一个基本思想:系统中所有的信息——包括磁盘文件,存储墙中的程序、数据以及网络数据,都是由一串位表示的。区别不同数据对象的唯一方法就是读到这些数据对象时的上下文。
1.2 GCC编译驱动程序翻译源文件的四个过程:
- 预处理:预处理器(cpp)将#开头的头文件直接插入程序文本 ,扩展名.i
- 编译:编译器(ccl)将.i文件翻译成扩展名.s的汇编语言程序
- 汇编:汇编器(as)将.s文件翻译成机器语言指令,并打包为可重定位的目标程序.o
- 链接:链接器(ld)将单独预编译好的目标文件(比如常用的printf.o)合并到用户程序中,得到可执行文件,加载到内存由系统执行。
- 优化程序性能
- 理解链接时遇到的错误
- 避免安全漏洞
- 硬件设备
- 总线:贯穿整个系统的电子管道,被设计成传送定长的字节块(字)。32位系统为例,字长为4个字节,即32位
- I/O设备:键盘、鼠标、显示器、磁盘驱动器,网络也是一种特殊的I/O设备
- 主存(DRAM):从逻辑上看,存储器是一个线性的字节数组,每个字节都有唯一地址,从零开始。
- 处理器:核心为 PC,一个字长的存储设备(寄存器)。CPU操作主要围绕主存、寄存器文件和ALU进行。
shell等待输入命令——输入字符串“./ hello”——读入寄存器——放入主存(完成代码和数据从磁盘到主存的复制)
——CPU执行main中的机器语言指令(将"hello world\n"字符串中的字节从主存复制到寄存器)——从寄存器复制到显示设备
(DMA技术可以使数据不通过处理器而直接从磁盘到达主存)
1.5 高速缓存至关重要
处理器与内存之间的差距在持续增大(memory wall 问题),高速缓存作为暂时的集结区域,来处理处理器近期可能会需要的信息。高速缓存由SRAM(静态随机访问存储器)的硬件技术实现。原理:程序的局部性原理,即程序具有访问局部区域里的数据和代码的趋势。其中L1分为数据高速缓存和指令高速缓存,L2为每个核独有的统一的高速缓存,L3为所有核共享的高速缓存。
1.6 存储设备的次结构
层次结构(从上到下):寄存器——L1(SRAM)——L2——L3——主存(DRAM)——本地二级缓存(本地磁盘)——远程二级存储(分布式文件系统/Web服务器)
层次结构的主要思想:一层上的存储器作为低一层存储器的高速缓存。
1.7 操作系统抽象表示

- 进程:操作系统对正在运行的程序的一种抽象。并发运行,只一个进程的指令和另一个进程的指令交错执行,实现这种交错执行的机制叫做上下文切换,即保存当前进程的上下文、恢复新进程的上下文,然后将控制权传递给新进程。
- 线程:一个进程可以由多个叫做线程的执行单元组成共享同样的代码和全局变量。多线程之间比多进程之间更容易共享数据。
- 虚拟存储器:一个抽象概念,它为每个进程提供一种假象,即每个进程都在独占地使用主存。虚拟地址空间由几个准确定义的区构成,由下而上分别为:
- 程序代码和数据:按照可执行文件的内容初始化
- 堆(运行时堆):调用如malloc和free标准函数时,动态扩展和收缩
- 共享库:存放C标准库、数学库等共享库的代码和数据
- 栈:编译器用它来实现函数调用。调用函数时增长,函数返回时收缩。
- 内核虚拟内存:位于顶部区域,是操作系统的一部分,不允许应用程序读写或调用。
1.8 系统之间利用网络通信
将网络视为一个I/O设备,当系统从主存将一串字节复制到网络适配器时,数据流经过网络到达另一台机器,而不是本地磁盘。系统也可以读取从其他机器发来的数据,并将数据复制到自己主存。
1.9 重要概念
- 并发和并行
- 并发:一个同时具有多个活动的系统;
- 并行:用并发使一个系统运行的更快;
- 位级并发 BLP(bit-level parallelism):由以前的打孔机到现在的一次处理一个字长;
- 单指令多数据并行 SIMD(single instruction multiple data):一条指令并行执行的操作;
- 指令级并行 ILP(instruction-level-parallelism):流水线(pipelining),超标量操作(super scalar computing), 超长指令字(VLIW)
- 线程级并发 TLP(Thread-Level Parallelism):在一个进程中同时执行多个控制流。SMT(同时多线程,超线程)技术原理:PC及寄存器有备份,而ALU只有一份,可以在不同的线程中转换。
- 任务级并行 JLP(Job-level parallelism) :在CMPs(chip multiprocessors)上多线程编程具有难度及高效的编译,现在逐渐转为分布式处理。
浙公网安备 33010602011771号