深入理解计算机系统(第三版)

时间:2021-01-24 20:35:12

第七章 链接

  链接是将各种代码和数据片段收集并组合成为一个单一文件的过程。(在软件开发中实现分离编译)

7.1 编译器驱动程序

7.2 静态链接

  • 符号解析:将每个符号的引用与一个符号的定义关联起来。
  • 重定位:编译器和汇编器生成从地址0开始的代码和数据节,链接器通过把每个符号定义与一个内存位置关联起来,从而重定位这些节,然后修改所有对这些符号的引用,使得它们指向这个内存位置。

7.3 目标文件

编译器和汇编器生成可重定位目标文件,链接器生成可执行目标文件。

7.4 可重定位目标文件

7.5 符号和符号表

深入理解计算机系统(第三版)

7.6 符号解析★

7.7 重定位★

重定位节和符号定义

重定位节中的符号引用-重定位条目

7.8 可执行目标文件

7.9 加载可执行目标文件

7.10 动态链接共享库

7.11 从应用程序中链接和加载共享库

7.12 位置无关代码

7.13 库打桩机制(linux链接器)

7.14 处理目标文件的工具

深入理解计算机系统(第三版)

深入理解计算机系统(第三版)

 

第八章 异常控制流(ECF--Exceptional Control Flow)

8.1 异常

(1)异常类别:中断、陷阱、故障、终止

深入理解计算机系统(第三版)

8.2 进程——一个执行中程序的实例

(1)进程提供给应用程序的关键抽象:

  • 一个独立的逻辑控制流,它提供一个假象,好像我们的程序独占地使用初处理器。
  • 一个私有的地址空间,它提供一个假象,好像我们的程序独占地使用内存系统。

(2)并发流——一个逻辑流的执行时间与另一个流重叠。

(3)上下文切换——操作系统内核采用的一种较高形式的异常控制流来实现多任务。

  内核为每个进程维持一个上下文,上下文就是内核重新启动一个被抢占进程所需的状态。它由一些对象的值组成,这些对象包括通用目的寄存器、浮点寄存器、程序计数器、用户栈、状态寄存器、内核栈和各种内核数据结构,比如描述地址空间的页表、包含有关当前进程信息的进程表,以及包含进程已打开文件的信息的文件表。

(4)信号——就是一条消息,它通知进程系统发生了一个某种类型的事件,并且允许进程和内核中断其他进程。

(5)非本地跳转

深入理解计算机系统(第三版)

 

第九章 虚拟内存

9.1 物理和虚拟内存

  物理寻址和虚拟寻址

9.2 地址空间——非负整数地址的有序集合

9.3 虚拟内存作为缓存的工具★

9.4 虚拟内存作为内存管理的工具

9.5 虚拟内存作为内存保护的工具

9.6 地址翻译★

9.7 案例研究:Intel Core i7/Linux 内存系统★

9.8 内存映射

9.9 动态内存分配★

9.10 垃圾收集

9.11 C程序中常见的与内存有关的错误

深入理解计算机系统(第三版)