【Linux】冯诺依曼体系结构

目录

一、冯诺依曼体系结构

冯·诺依曼体系结构,也称为普林斯顿结构,是现代计算机设计的基础框架。这一体系结构由数学家冯·诺依曼在20世纪40年代提出,它定义了计算机的基本组成和工作原理。


二、冯诺依曼体系结构的基本组成

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

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

  • 输入单元:包括键盘,鼠标,网卡,磁盘,USB等
  • 中央处理器(CPU):含有运算器和控制器等
  • 输出单元:显示器,打印机,网卡,磁盘等
  • 存储器:这里的存储器就是内存

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

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

值得注意的是计算机中几乎所有的设备,都具有数据存储能力。

CPU这个设备,它的处理数据的速度是非常快的,然后是内存,最后是各种外设。

上面这张照片是关于存储分级的图片,在我看来存储分级也可以叫做速度分级、成本分级,为什么存储分级是金字塔形状的呢?因为离CUP越近的设备,存储效率越高,造价越贵。

那么有人就会问了,为什么不全用存储效率高的呢?这样电脑不就非常快了吗?确实,但是存储效率高对应带来的是造价高。

如果我要求不高,可以全部用便宜的存储设备吗?虽然说这样计算机的早就就变低了,但是这个计算机基本上也用不了了。


三、关于冯诺依曼体系结构的一些问题

问题:上面我们提到了,不考虑缓存的情况下,CPU只与内存进行交互,不与外设进行直接交互,这是为什么呢?

解答:相信大家都听说过木桶原理,一个木桶能装多少水,取决于这个木桶中最短一块木板的长度, 而计算机也同样如此,CPU内部的高速缓存提供了快速的存储访问能力,远大于外设的存储效率,这种速度差异使得CPU无法直接高效地与外设进行同步数据交换,导致整机的效率低下,而内存的存储效率比CPU低,但是比外设的存储效率高,因此CPU与内存之间的交互更加高效。

所以基于冯诺依曼体系结构的计算机都是用较少的钱,做出来效率不错的计算机,性价比高。


问题:在学习C/C++的时候都听说过,程序在运行之前,必须先加载到内存中,为什么呢?

解答:程序 = 代码 + 数据 ,而代码和数据最终都需要CPU进行处理,程序本质上是一个exe文件,只能在磁盘(外设)中,而在数据层面上,CPU不与外设进行直接交互,只与内存进行交互,所以必须将程序加载到内存中,CPU才能对程序进行处理。


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

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

解答:在我们登录QQ的时候,本质上就是在电脑上运行起来了了,也就是QQ这个软件被加载到了内存中,那么我们向QQ中输入文字,本质上就是在向内存中输入文字。

那么从头开始解释,当我打开窗口,给我的朋友发消息,我先从键盘(输入设备)输入我想发送的消息到QQ中,本质上是输入到内存(存储器)中,在我们平常发信息的时候可以看到,我们发生信息的时候并不是只有我们发送的信息,还有时间、朋友的备注等信息,那么我们就可以知道,我们要发送的信息一定是被CPU进行处理过的,CPU不会与外设直接交互,那么CPU处理完信息后,会将处理后的信息写入内存(存储器),再通过网卡(输出设备)经过网络传输到朋友的网卡(输入设备),由于前面的文章没有网络相关的文章,这里先不提网络,从网卡中得到的信息需要通过CUP的处理,那么就需要将信息先加载到内存(存储器)中,再由CPU处理得到我想输出的信息,再将CPU处理后的信息写入内存(存储器)中,然后信息通过内存输出到朋友的显示器(输出设备)中,最终完成数据流动。

在QQ上发送文件本质上与上面的发送文字是相同的,不同的是文件是存储在磁盘中的,所以这里的输入设备是磁盘,其他步骤基本相同。


结尾

本篇文章最重要的一句话就是不考虑缓存情况下,在数据层面上,这里的CPU能且只能对内存进行读写,不能与外设进行直接交互(输入或输出设备)

如果有什么建议和疑问,或是有什么错误,大家可以在评论区中提出。

希望大家以后也能和我一起进步!!🌹🌹

如果这篇文章对你有用的话,希望大家给一个三连支持一下!!🌹🌹

相关推荐
wanhengidc7 分钟前
短视频运营行业该如何选择服务器?
运维·服务器
雨中rain22 分钟前
Linux -- 从抢票逻辑理解线程互斥
linux·运维·c++
-KamMinG32 分钟前
Centos7.9安装openldap+phpldapadmin+grafana配置LDAP登录最详细步骤 亲测100%能行
运维·grafana
Bessssss41 分钟前
centos日志管理,xiao整理
linux·运维·centos
s_yellowfish42 分钟前
Linux服务器pm2 运行chatgpt-on-wechat,搭建微信群ai机器人
linux·服务器·chatgpt
豆是浪个43 分钟前
Linux(Centos 7.6)yum源配置
linux·运维·centos
vvw&44 分钟前
如何在 Ubuntu 22.04 上安装 Ansible 教程
linux·运维·服务器·ubuntu·开源·ansible·devops
我一定会有钱1 小时前
【linux】NFS实验
linux·服务器
王铁柱子哟-1 小时前
解决 正在下载VS Code 服务器... 问题
运维·服务器
Ven%1 小时前
如何在防火墙上指定ip访问服务器上任何端口呢
linux·服务器·网络·深度学习·tcp/ip