【第 1 周】深入理解计算机系统共读心得体会

  1. 所在小组:第三组
  2. 足内昵称:晴天
  3. 心得体会:

正如章节标题,漫游计算机系统,第一章从宏观角度讲解了程序从输入到输出的过程中到底发生了什么。有意思的是,作者从程序员的角度,简单明了地说明源程序的编译,以及系统和硬件之间的交互过程。

  • 源程序文件 hello.c 被翻译为可执行的目标文件 hello 经历4个阶段,分别是 预处理 -> 编译器 -> 汇编器 -> 链接器
  • 可执行文件 hello 被存储在磁盘中,当需要时可被读取并加载到主存

为什么需要了解编译系统如何工作?

要执行程序 hello 并将其输出到shell,绕不开硬件。系统硬件的组成有:

  • 总线是贯穿系统中的电子管道(类似于人体中的血管),携带信息字节在各个部件中传递信息。因系统而异(比如32位或者64位),总线被设计成传送定长的字节块,传输4个字节或者8个字节。(这是不是意味着同等配置下,单位时间内传输的字节数越多,处理速率越快?)
  • 主存 是一个临时存储设备,在处理执行程序时,用来存放程序和程序处理的数据。
  • 处理器(CPU)是解释或执行存储在主存中的指令引擎。其核心是一个大小为一个字的存储设备,称为程序计算器。在任何时刻,PC 都指向主存中的某条机器语言指令。从系统通电开始,处理器不断执行程序计数器指向的指令,再更新程序计数器,使其指向下一条指令。看上去像一个简单的指令执行模型。(所以单核CPU并发只是模拟出来的,通过快速在进程中快速切换实现,本质上CPU只能执行一条命令)

程序被加载时,指令从磁盘复制到主存;当处理器运行程序时,指令又从主存复制到处理器,而 复制就是开销 。 针对处理器与主存之间的差异,使用高速缓存存储器的局部性(作为暂时的集结区域,存放处理器近期会需要的信息)来提高程序的性能。

理解3个抽象,文件是I/O设备的抽象,虚拟内存是对程序存储器的抽象,而进程是对一个正在进行的程序的抽象。