《深入理解计算机系统》学习笔记1 - 第一章

文章目录

  • 1.简介
  • 2.计算机硬件架构
    • 2.1 通用的计算机结构
    • 2.2 典型的硬件组成
  • 3.程序的“一生”
    • 3.1 数据 & 文件类型
    • 3.2 从 源代码文件 到 可执行程序
    • 3.3 程序 & 硬件的交互
    • 3.4 存储设备的层级
  • 4.计算机系统抽象
    • 4.1 计算机系统抽象总览
    • 4.2 各个抽象概念
      • 4.2.1 文件
      • 4.2.2 虚拟内存
      • 4.2.3 进程 & 线程
        • 4.2.3.1 进程
        • 4.2.3.2 线程
      • 4.2.4 虚拟机
  • 5.“逃离孤岛”——计算机网络

1.简介

《深入理解计算机系统》一书是深入理解 计算机&程序 的一本很好的入门书籍,能够帮助我们对程序有更整体的把握。其目的是“更好地编程”,其内容是“了解底层”。

本文是学习这本书的第一篇笔记,对应了书本的第一章。通过本文,我们将宏观地了解计算机&程序,很多概念点到即止,目的是有一个整体概念,后续章节再逐渐填充细节。

本文首先简要介绍计算机硬件设备结构,接着介绍程序 从源代码 到 运行过程 的大概流程(涉及 编译流程 & 进程概念)

2.计算机硬件架构

2.1 通用的计算机结构

冯诺依曼 结构
《深入理解计算机系统》学习笔记1 - 第一章_第1张图片
图片来自百度

2.2 典型的硬件组成

典型的计算机硬件组成:总线、I/O设备、主存、处理器
《深入理解计算机系统》学习笔记1 - 第一章_第2张图片
图片来自于书本

3.程序的“一生”

源码->可执行文件->运行->运行结束

3.1 数据 & 文件类型

  • 程序源码:文本文件
  • 可执行程序:二进制文件

由此也可以看出文件分为:文本文件 & 二进制文件

3.2 从 源代码文件 到 可执行程序

预处理->编译->汇编->链接

  • 预处理
    处理源代码:宏替换等
  • 编译
    源代码转汇编码
  • 汇编
    汇编码转机器码
  • 链接
    链接 静态库、动态库

3.3 程序 & 硬件的交互

潦草地描述:

  • I设备 输入指令 -> 启动程序 程序
  • 由 磁盘 加载到 主存储器
  • I设备 输入指令 -> 程序开始执行某些功能
  • 主存的数据加载到 寄存器,可能需要 逻辑运算单元 的运算 并将结果存到 主存
  • 由 主存 传递到 O设备,给使用者反馈

详见书本图1-5~1-7

从上手过程可以看出:程序的核心活动在于 CPU & 主存,通过I/O设备与使用者交互。整个程序执行过程中有大量数据移动的操作,这都涉及存储设备,下面介绍存储设备的层级。

3.4 存储设备的层级

  • 从之前的 硬件组成图中可以看出,存储设备由“内”而“外”是:寄存器(CPU中)->主存->磁盘->网络(可以将网络看作本地计算机的外部存储设备)。显然他们的速度由快到慢,存储的空间由小到大。

  • 为了加速数据的搬移,通过“高速缓存”这个概念,我们预先存储近期会用到的主存中的数据到“高速缓存”中,达到减少数据搬移时间的目的。

  • 有很多硬件设备 为 寄存器 提供了 高速缓存,这个“高速” 是相对主存而言的。

  • 广义地讲,将数据存储器由快到慢排好层级,那么相邻的层级,快的存储器就是慢的存储器的“高速缓存”。
    《深入理解计算机系统》学习笔记1 - 第一章_第3张图片
    图片来自于书本

4.计算机系统抽象

计算机是 硬件设备 + 软件 组成,而底层软件是 操作系统,它是勾连 用户软件 与 计算机硬件 的桥梁。

4.1 计算机系统抽象总览

《深入理解计算机系统》学习笔记1 - 第一章_第4张图片图片来自于书本

4.2 各个抽象概念

4.2.1 文件

所有I/O设备

4.2.2 虚拟内存

主存有限,使用磁盘作为主存的高速缓存——虚拟内存 对应的设备是 主存+部分磁盘,从实现上采用了虚拟地址。
内存的虚拟地址如图:
《深入理解计算机系统》学习笔记1 - 第一章_第5张图片
图片来自于书本

4.2.3 进程 & 线程

正如之前3.3介绍 程序 & 硬件的交互 所示,运行中的程序 涉及 CPU、主存、I/O设备,它被抽象为:进程。

4.2.3.1 进程

  • 进程是运行中的程序
  • 多个进程是“并发”的——看起来像同时进行的一样,实际上由操作系统控制“上下文切换”,交错地执行不同进程的指令(单核处理器)
  • 一个进程中可以有多个线程,它们共享进程的数据

4.2.3.2 线程

  • 实际的“执行者”

4.2.4 虚拟机

对整个计算机的抽象

5.“逃离孤岛”——计算机网络

本章仅介绍两个观点:

  • 计算机网络的存在 使我们的设备不再是“孤岛”。
  • 从抽象角度看,网络也是 I/O设备 - 是文件。

你可能感兴趣的:(c/c++,学习,后端,硬件架构)