编译系统的四个阶段

预处理:将头文件的内容直接插入到文本
编译:源码到汇编
汇编:汇编指令到机器指令,这时得到的可重定位目标程序还无法执行
链接:将标准库函数所在的预编译文件合入到上一步的程序中,得到最终的可执行文件

系统硬件组成

32 位、64 位也是计算机总线依次传递的字的大小
控制器和适配器:控制器存在硬件上,硬件直接与 I/O 总线相连,在主板内部;适配器:不在主机内部而是通过扩展槽相连到主板,比如网络适配器作为网络 I/O 设备

存储器层次结构

存储器层次结构:上一层的存储器作为第一层存储器的高速缓存。
高速缓存:缓存分为 L1、L2、L3,每一级存储空间更大,访问速度变慢。
缓存主要利用了局部性原理,即程序具有访问局部区域里的数据和代码的趋势。

虚拟地址空间

-w406

从下往上依次是:

  • 程序代码和数据,也就是声明的变量
  • 堆:new 动态分配的变量
  • 共享库:动态链接库
  • 用户栈:函数调用的栈
  • 内核虚拟内存:内核态才能读写

并发与并行

并发:同时能够运行多个活动,即使这些活动是交错运行而不是真正的并行运行
并行:同时执行多个任务,重点在同时

并发的三个层次:

  • 线程级并发
  • 指令级并行:一条指令执行要多个时钟周期,但是可以并行的在同一个时钟周期里执行不同指令的不同阶段,称为流水线
  • 单指令、多数据并行:一条指令可以产生多个可以并行执行的操作

五个抽象概念

  • 指令集架构是对实际处理器硬件的抽象
  • 文件是对 I/O 设备的抽象
  • 虚拟内存是对程序存储器的抽象
  • 进程是对正在运行的程序的抽象
  • 虚拟机是对整个计算机的抽象