深入理解计算机系统笔记0 系统漫游

计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。

系统中的所有信息都是由一串位表示的,区分不同对象的唯一方法就是读到这些数据时的上下文。例如同样的位序列可能是字符串、数值、机器指令等等。

什么是程序?

  1. 源程序就是一个文本文件
  2. 源程序被其他程序转化为一系列的低级机器语言指令,然后这些指令按照一种可执行目标程序的格式打包,并以二进制文件的形式存放起来,成为可执行目标文件。
  3. 所谓的其他程序就是编译器,可分为:预处理器、编译器、汇编器、链接器

程序运行时发生了什么?

深入理解计算机系统笔记0 系统漫游_第1张图片
Paste_Image.png

这是计算机系统的硬件结构

  1. 总线:贯穿整个系统的是一组电子管道,称做总线,它携带信息字节并负责在各个部件间传递。通常传输定长的字节块,就是字 word。
  2. IO设备
  3. 主存:临时存储设备,由一组动态随机存取存储器(DRAM)芯片组成的。
  4. 处理器:中央处理单元(CPU),简称处理器。是解释(或执行)存储在主存中指令的引擎。处理器 的核心是一个字长的存储设备(或寄存器),称为程序计数器(PC)。在任何时刻,PC 都指向主 存中的某条机器语言指令(即含有该条指令的地址)。处理器一直在不断地执行程序计数器指向的指令,再更新 程序计数器,使其指向下一条指令。
深入理解计算机系统笔记0 系统漫游_第2张图片
Paste_Image.png

当我们在键盘上敲回车键时,外壳程序就知道我们已经结束了命令的输入。然后外壳执行一 系列指令来加载可执行的 hello 文件,将 hello 目标文件中的代码和数据从磁盘复制到主存。 数据包括最终会被输出的字符串“hello, world\n”。
一旦目标文件 hello 中的代码和数据被加载到主存,处理器就开始执行 hello 程序的 main程序中的机器语言指令。这些指令将“hello, world\n”字符串中的字节从主存复制到 寄存器文件,再从寄存器文件中复制到显示设备,最终显示在屏幕上。

高速缓存的重要
从hello程序的运行过程我们可以看出,执行过程中程序文件从磁盘复制到CPU,再从复制到主存。处理器开始执行程序时,指令和数据(例如:“Hello world”字符串)再复制的CPU寄存器文件,然后再从寄存器文件复制到显示设备。
这个简单的示例揭示了一个重要的问题,即系统花费了大量的时间把信息从一个地方挪到另 一个地方。首先,DMA技术可以把从磁盘直接加载可执行文件到主存,这省去了经过CPU的步骤。
根据机械原理,容量越大的存储设备运行速度越慢,例如,一个典型系统上的磁盘驱动器可能比主存大 1000 倍,但是对处理器而言, 从磁盘驱动器上读取一个字的时间开销要比从主存中读取的开销大 1000 万倍。类似地,处理器从寄存器文件中读数据的速度比从主存中读取几乎要快 100 倍。
通过让高速缓存里存放可能经常访问的数据的方法,大部分的存储器操作都能在快速的高速缓存中完成。

操作系统管理硬件

所有应用程序对硬件的操作尝 试都必须通过操作系统。
操作系统有两个基本功能 :1)防止硬件被失控的应用程序滥用。2)向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

进程

像 hello 这样的程序在现代系统上运行时,操作系统会提供一种假象,就好像系统上只有这个程序在运行。进程是计算机科学中最重要和最成功的概念之一。进程是操作系统对一个正在运行的程序的一种抽象。一个 CPU 看上去都像是在并发地执行多个进程,这是通过处理器在进程间切 换来实现的。操作系统实现这种交错执行的机制称为上下文切换。当操作系统决定要把控制权从当前进程转移到某个新进程时,就会进行上 下文切换,即保存当前进程的上下文、恢复新进程的上下文,然后将控制权传递到新进程。

示例场景中有两个并发的进程 :外壳进程和 hello 进程。起初,只有外壳进程在运行,即 等待命令行上的输入。当我们让它运行 hello 程序时,外壳通过调用一个专门的函数,即系统 调用,来执行我们的请求,系统调用会将控制权传递给操作系统。操作系统保存外壳进程的上下 文,创建一个新的 hello 进程及其上下文,然后将控制权传递给新的 hello 进程。hello 进 程终止后,操作系统恢复外壳进程的上下文,并将控制权传回给它,外壳进程将继续等待下一个 命令行输入。

线程

现代系统中,一个进程实际上可以由多个称为线程的执行单元组成,每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。

虚拟存储器

虚拟存储器是一个抽象概念,它为每个进程提供了一个假象,即每个进程都在独占地使用主存。每个进程看到的是一致的存储器,称为虚拟地址空间。

深入理解计算机系统笔记0 系统漫游_第3张图片
Paste_Image.png

文件

文件就是字节序列,仅此而已。每个 I/O 设备,包括磁盘、键盘、显示器,甚至网络,都可以视为文件。

在学习操作系统时,我们介绍了三个抽象 :文件是对 I/O 的抽象,虚拟存储器是对程序存储 器的抽象,而进程是对一个正在运行的程序的抽象。我们再增加一个新的抽象 :虚拟机,它提供 对整个计算机(包括操作系统、处理器和程序)的抽象。

你可能感兴趣的:(深入理解计算机系统笔记0 系统漫游)