冯诺依曼体系结构

简介: 这里简单地介绍和解释一下冯诺依曼体系,为后面学习操作系统做好准备工作。

 我们绝大多数计算机都遵循着冯诺依曼体系,即一整套计算机设备中,一定是由输入设备、存储器、运算器、控制器和输出设备构成。

QT1(X6]79AO@8YX~]@`YC%X.png

其中:

①存储器指的是内存,而内存有一个特点,那就是掉电易失。存储器的作用是临时存储

而磁盘,拥有永久性存储能力,但是磁盘不属于内存,它是属于外存,但是在冯诺依曼体系中,没有外存这个结构,只有外设!因此,磁盘属于外设,外设指的是冯诺依曼体系中的输入设备和输出设备。外设这个词,是相对于内存+cpu而言的。外设的作用是永久存储

其中,磁盘和网卡,即属于输入设备,也属于输出设备。

②运算器+控制器+其他(cache,寄存器等)=CPU——>俗称:芯片。其特点就是快(各方面)

CPU的作用是计算

对比:

cpu
存储器 较快
外设 较慢

既然CPU的作用是计算,那么CPU其实很笨,它只能被动的接受传进来的指令和数据,然后去执行指令,达到计算的目的。

在接受指令前,CPU必须认识这个指令。那么CPU怎么样地去认识指令?答案是CPU拥有自己的指令集,指令集以硬件的形式存在CPU中,相当于有自己的一本字典大全或是词汇。所以我们在写代码的时候,编译的本质就是将代码变成二进制可执行程序后,成为可以让CPU认识的指令,那么在传入CPU,让CPU计算的时候,CPU就翻自己的指令集,找到了相对于的指令,就可以进行处理了!

CPU的数据从哪来?

从内存或外存中来。但是CPU是个急性子,因此给数据的那一方不能慢,也不能太快。我们由木桶原理可知道,木桶能装的水的多少,取决于最短的那块板。因此,CPU与其它设备合作的时候,它们的速度,取决于较慢的哪一方。所以,CPU就是在存储器内存中拿。CPU在读取和写入数据层面只和内存打交道,主要是为了提高整机效率。

内存天然就有数据吗?

并不是!我们计算机中的数据,在磁盘上(不谈光盘之类的)!如果CPU每次要处理的数据,都得先让内存从磁盘中读取写入,那么效率很低。所以,数据在CPU要之前,操作系统在我们开机的时候,就将CPU将要处理的数据,从磁盘上加载到内存中。操作系统就是在这里做出决策的(需要预处理的数据有多少,当不用的时候怎么清除,清除多少等等决策)

当把内存中的数据搬到外存中去,和把数据从外存搬到内存中去,这个操作,我们就称为IO过程。(INPUT/OUTPUT)

所以,我们如今平常使用的计算机,就是硬件和软件的完美结合。

结论:在数据层面

1.CPU不和外设直接打交道,和内存直接打交道

2.所有外设,有数据需要载入,只能载入到内存中;内存写出,也一定写到外设中。

也就是说,CPU只和内存打交道。

那么,这里就能解释一些现象了:

程序要运行的时候,为什么必须要加载到内存?因为CPU要执行我们写的代码,要访问数据,而我们写的代码是在磁盘上的,所有,必须要把程序加载到内存,CPU从内存中获取。(体系结构规定!)也是为了提高效率。

上面所说的,都是数据层面的。

在控制上面,CPU与外设有打交道,这会在往后的文章中补充。

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

现在来看一个具体的实例:

假设我和我的一个朋友,一个在广东,一个在北京,那么我们在QQ聊天上,打出了一个"你好",那么数据流是如何在不同的电脑中流动?(这里不考虑网络)

TX_CFW~V$8W`]50DC{Y6FJE.png

是这样的:我在键盘上输入"你好"后,数据就会传到内存中进行加密处理,然后将数据一式两份,一份在我们自己的显示器上显示出来,另一份通过网卡,再通过网络,传到了我的朋友的网卡中,此时他的网卡的角色是输入设备,然后数据由流到他的内存中解密后,最后显示再他的显示器上面。

我们联系的前提是:打开登陆了我们各自的QQ程序,我们的QQ程序加载到了内存中,然后CPU执行QQ程序的代码,执行上面的流程。

那么如果不是打出"你好",而是发送文件呢?

其实文件无非就是体积大了点的"你好",文件从磁盘中搬到内存中(磁盘到QQ程序,然后到内存),然后通过加密,传到对方的输入设备(网卡),接着就是上面所述的操作了。

其实就跟我们在写代码的时候,使用scanf或者cin,从键盘输入,然后读到了我们程序的内部(内存);

最后,这里简单地介绍和解释一下冯诺依曼体系,为后面学习操作系统做好准备工作。


相关文章
|
6月前
|
存储 缓存 安全
浅谈冯诺依曼体系和操作系统
浅谈冯诺依曼体系和操作系统
|
6月前
|
存储 缓存 固态存储
冯诺依曼体系究竟是什么?
冯诺依曼体系究竟是什么?
169 0
|
6月前
|
存储
冯诺依曼模型
冯诺依曼模型
|
6月前
|
缓存 Linux
【Linux】冯诺依曼体系结构
【Linux】冯诺依曼体系结构
【Linux】冯诺依曼体系结构
|
存储 容器
冯诺依曼体系
冯诺依曼体系
84 0
|
6月前
|
存储 物联网 C语言
嵌入式微处理器的系统架构中冯诺依曼计算机系统
嵌入式微处理器的系统架构中冯诺依曼计算机系统
47 0
|
6月前
|
存储 缓存 Linux
冯诺依曼体系结构
冯诺依曼体系结构
|
6月前
|
JavaScript 前端开发 Java
关于对计算机发展史、冯诺依曼体系、CPU基本工作流程以及关于编程语言的简单认识
关于对计算机发展史、冯诺依曼体系、CPU基本工作流程以及关于编程语言的简单认识
|
存储 缓存 Linux
【Linux从入门到精通】了解冯诺依曼体系结构
本片文章会对冯诺依曼体系结构进行详解。同时,我们对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上。本片文章同时也会对数据在冯诺依曼结构上的交互进行讲解。希望本篇文章会对你有所所帮助。
158 2
|
11月前
|
架构师 Linux Shell
【Linux】冯诺依曼体系结构与操作系统概念理解-3
【Linux】冯诺依曼体系结构与操作系统概念理解
139 0