读《深入理解计算机系统》Chapter1

读《深入理解计算机系统》Chapter1

基础很弱,来补一下。

1. 计算机中的信息表示形式

我们知道计算机底层是有一堆集成电路元件组成,每个集成电路元件有很多个引脚,每个引脚同上直流电压之后只有0V/5V,所以每个只能表示两种状态,这就注定计算机中的信息数据只能以二进制形式来处理,比如1,0,10,00...但是所有的信息都以该形式表示时,同样一串二进制序列码在不同的环境中可能表示不同的数据或者时要执行的指令,所以读到这些数据对象时的上下文就是用来区分不同的数据对象的唯一方法。因而信息在计算机中的表示形式就是位(二进制)+上下文

2. 系统的硬件组成部分

冯·诺依曼结构计算机中组成部分包括:运算器、控制器、存储器、输入设备和输出设备,其中运算器和控制器就对应到平常计算机中的CPU(Central Processing Unit),存储器就对应了内存和硬盘,输入/输出设备就对应到平常使用的鼠标、键盘、显示器等。

系统中典型硬件组成部分包含:


2.1 总线

总线时贯穿系统中一组电子管道,它携带信息字节并负责在各个部件间传递。通常是传送定长的字节块 - word,每个word中的字节个数是系统的一个参数,平常我们使用的32位操作系统、64位操作系统就是指每个word中的字节个数(32位就是4个字节长度、64位就是8个字节长度)。

2.2 I/O设备

是用于系统同外部世界的联系通道,每个I/O设备通过一个控制器/适配器同IO总线相连,控制器/适配器用于IO总线和IO设备之间传递信息

2.3 主存

计算机运行中的一个临时存储设备,在处理执行程序时用于存放程序和程序所需处理的数据。
物理上由一组DRAM芯片组成,逻辑上由一组线性的字节数组组成(房子模型),每个字节都有一个地址(从0开始)

2.4 处理器

CPU的一种简称,是用来解释或执行存储在主存中的指令的引擎。其内部有四大组成部分:运算器、控制器、寄存器和时钟。寄存器分为很多种,其中的程序计数器(PC)用来存储某条机器语言指令在主存中的地址。
CPU会执行到的指令可能会包括:

  • 加载: 主存--->寄存器
  • 存储: 寄存器--->主存
  • 操作: 基于寄存器中值和指向的内容指令进行操作处理
  • 跳转: 覆盖程序计数器(PC)中的值

3. 缓存

计算机中的存储设备之间的访问差异非常大,寄存器的访问速度非常快但其存储容量比较小,主存较寄存器访问速度就很慢,但是它比寄存器能存储的数据量多。同理主存同硬盘之间、本地硬盘同网络之间的差异亦是如此。为了屏蔽这种差异对计算机运算处理的影响,引入一个中间层:缓存,利用局部性原理让其存储一部分访问慢的设备上的数据让计算达到良好的访问性能。针对计算机处理器中寄存器同主存之间的差异设计出的存储设备被称为高速缓存存储器。通常分为L1和L2二级高速缓存(基于静态随记访问存储器基数SRAM,目前还有L3高速缓存)。计算机系统中的存储设备层次结构图:

4. 操作系统

操作系统可以看成是计算硬件同应用程序之间加入个一个抽象层,它主要用于

  • 防止硬件资源被非法操作
  • 屏蔽不同底层硬件之间的操作差异,提供简便统一的硬件操作

它将计算机硬件中进行了一些抽象:

  • :I/O设备的抽象(文件就是字节序列)
  • :I/O设备+主存的抽象
  • :I/O设备+主存+处理器的抽象

其中进程是对系统中正在执行的程序的一个抽象。一个系统上可以同时运行多个进程,每个进程看上去像是独占的使用硬件。虚拟内存让进程看上去像是独占的使用了主存,每个进程看到的内存都是一致的,每个进程看到的就是虚拟地址空间。

4.1 虚拟地址空间

空间图:

组成部分(从下往上,内存地址逐渐增大)

  • 只读的程序+数据
  • 运行时堆
  • 共享库内存
  • 用户栈
  • 内核虚拟内存

4.2 并行和并发

简单来说并发是一个cpu交替运行多个进程中的指令,并行是指多个cpu在同一时间执行了多个进程的指令。
并发过程中会涉及到进程的上下文切换。上下文就是处理器跟踪进程运行时所需的状态信息,比如该进程处理是寄存器文件中的值、主存中的值等。在上下文切换时需要保存原进程的上下文信息、恢复新进程的上下文信息,再将控制权交由新进程,新的进程就会从它上次暂停的地方继续执行。其切换是由内核控制,所以切换时候会涉及到在用户空间和内核空间的切换。

I. 线程级并发

现代操作系统中在进程中引入线程这个更细粒度的执行单元。一个进程中包含了多个线程,所有线程运行在该进程的上下文环境中,同时共享其代码同数据。鉴于多线程之间共享数据比多进程之间共享数据更便捷,多线程并发成为了越来越重要的变成模型。

II. 指令级并行

处理器同时执行多条指令。

III. 单指令、多数据并行

SIMD,同一条指令能产生多个可以并行执行的操作。多是为了提高处理影像、声音和视频数据应用的执行速度。

5. 总结

  • 抽象
  • 计算机中很多问题通过引入中间层来解决
  • 局部性原理:时间和空间

【参考】[深入理解计算机系统] 第三版

作者:sv
出处:https://www.cnblogs.com/sv00
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

posted @ 2018-10-14 19:32  seeviny  阅读(165)  评论(0编辑  收藏  举报