【Linux进程】先谈硬件—冯诺依曼体系结构

目录

冯诺依曼体系

冯诺依曼体系结构

冯诺依曼体系的工作流程

为什么一个程序要运行,必须的先加载到内存中运行?

从软件数据流角度理解冯诺依曼

冯诺依曼体系结构

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

 【Linux进程】先谈硬件—冯诺依曼体系结构_第1张图片

截至目前,我们所认识的计算机,都是有一个个的硬件组件组成

  • 输入单元:包括键盘, 鼠标,扫描仪, 写板
  • 中央处理器(CPU):含有运算器和控制器
  • 输出单元:显示器,打印机等 
  • 这里的存储器指的是内存

他们都是独立的个体!
各个硬件单元必须用“线”链接起来,总线,1. 系统总线     2. IO总线

冯诺依曼体系的工作流程

冯诺依曼体系的工作流程如下:

  1. 输入设备获取数据并存储到内存中
  2. CPU从内存中取出数据并进行处理
  3. 运算完毕后,CPU将处理过的数据交给内存
  4. 内存将CPU处理过的数据交给输出设备
  5. 输出设备进行数据的输出

此外,冯诺依曼体系结构计算机必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。

关于冯诺依曼,必须强调几点:

  • 这里的存储器指的是内存
  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
  • 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
  • 一句话,所有设备都只能直接和内存打交道

为什么一个程序要运行,必须的先加载到内存中运行?

了解冯诺依曼体系结构的工作流程之后我们可能会有下面这两个问题:

  • 为什么不直接将用户输入的数据交给cpu,而是将用户输入的数据先加载到内存,再通过内存将数据交给cpu呢?
  • 为什么不由cpu将数据直接给输出设备,反而也要通过内存将数据交给输出设备呢?

原因:cpu与输入输出设备的运行速度相差的非常大。

  • 首先我们需要明白:cpu的运行速度是非常快的,它的运行速度是纳秒级别,内存的运行速度是微秒级别,而输入输出设备的运行速度是毫秒级别。cpu与输入输出设备的运行速度相差的非常大。
  • 由于输入输出设备的运行速度很慢,而cpu的运行速度很快,根据木桶原理如果输入输出设备与cpu直接交互那么最终整个体系所呈现出来的速度将会是很慢的
  • 因此在冯诺依曼体系结构中,为了不让输入设备与输出设备直接与cpu进行交互,我们的内存就出现了。
  • 内存它相对于输入设备和输出设备要快很多,但是比CPU又要慢一些。现在内存就处于慢设备和快设备之间,是一个不快也不慢的设备,从而它就充当了该体系结构中的缓冲区

从软件数据流角度理解冯诺依曼

对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上。

下面我们来解释一下,从你登录上qq开始和某位朋友聊天开始,数据的流动过程。从你打开窗口,开始给他发消息,到他的到消息之后的数据流动过程。如果是在qq上发送文件呢?

在使用QQ与朋友进行聊天,都是需要联网的,而我们的电脑都是冯诺依曼体系结构,这个聊天的这个过程中,你的键盘相当于输入设备,显示器和网卡相当于输出设备,而你朋友的电脑网卡相当于输入设备,显示器相当于输出设备。

当你在键盘当中输入你要发送的消息,键盘将这些消息加载到内存中,此时显示器就可以从内存获取消息进而显示在显示器上,此时你就能在显示器上看到你要发的消息。

【Linux进程】先谈硬件—冯诺依曼体系结构_第2张图片

键盘输入消息到内存,CPU处理消息后写回内存,此时你的网卡从内存获取消息并发送到网络,经过处理后,另一端的网卡获取消息并加载到内存,CPU再从内存获取消息并解包处理,然后写回到内存,最后显示器从内存获取消息并并显示在朋友的电脑上。 

你可能感兴趣的:(Linux,linux)