【Linux】冯 • 诺依曼体系结构
一、冯•诺伊曼体系的介绍
冯诺依曼体系是由冯·诺依曼提出的计算机设计的基本框架,包括五大部件:输入设备,存储器,运算器,控制器,输出设备。(其中运算器和控制器统称为中央处理器也就是CPU)
我们的计算机,笔记本的设计都遵守冯诺依曼体系
这五大部件都是独立的个体,各个硬件单元必须使用“线”连接起来,总线:系统总线,IO总线
部件 英文名称 功能说明
运算器 Arithmetic Logic Unit (ALU) 负责完成算术运算(加减乘除)和逻辑运算(与、或、非、比较等),是计算机进行数据处理的核心。
控制器 Control Unit (CU) 负责解释指令并控制各部件协调工作,指挥程序按顺序执行。
存储器 Memory 用于存放数据和程序指令,二者同等对待,均以二进制形式存储。
输入设备 Input 用来将数据或程序输入计算机,例如键盘、鼠标、扫描仪等。
输出设备 Output 将计算机处理的结果输出,例如显示器、打印机、扬声器等。
二、冯•诺依曼体系结构的推导
计算机的作用就是为了解决人的问题,解决问题首先需要将数据或是问题输入到计算机当中,所以计算机必须要有输入设备。计算机解决完问题后还需要将计算结果输出显示出来,所以计算机必须要有输出设备。计算机通过输入设备得到数据,数据在计算机当中进行一系列的算术运算和逻辑运算后,通过输出设备进行输出,于是就得到了以下流程图。
但是计算机当中只有算术运算功能和逻辑运算功能是不够的,还需要有控制功能,控制何时从输入设备获取数据,何时输出数据到输出设备等。对应到C语言当中,算术运算就完成一系列的加减乘除,而逻辑运算就对应于一系列的逻辑与逻辑或等,控制功能就对应于C语言当中的判断、循环以及各个函数之间的跳转等等。
而我们后人就将这个具有算术运算功能、逻辑运算功能以及控制功能的这个模块称为中央处理器,简称CPU。
但是输入设备和输出设备相对于中央处理器来说是非常慢的,于是在当前这个体系整体呈现出来的就是,输入设备和输出设备很慢,而CPU很快,根据木桶原理,那么最终整个体系所呈现出来的速度将会是很慢的。所以当前这个体系结构显然是不合适的,于是我们就不让输入设备和输出设备直接与CPU进行交互,而在这中间加入了内存
内存有个特点就是,比输入设备和输出设备要快很多,但是比CPU又要慢。现在内存就处于慢设备和快设备之间,是一个不快也不慢的设备,能够在该体系结构当中就起到一个缓冲的作用。
现在该体系的运行流程就是:用户输入的数据先放到内存当中,CPU读取数据的时候就直接从内存当中读取,CPU处理完数据后又写回内存当中,然后内存再将数据输出到输出设备当中,最后由输出设备进行输出显示。于是就形成了最终的冯诺依曼体系结构。
注意: 这里存储器只是内存,不包括外存。
三、内存如何提高冯•诺依曼体系的效率?
首先CPU的运行速度非常的快,是纳秒级别;然后磁盘的速度很慢,是毫秒级别;如果CPU直接访问磁盘,整体效率会被限制在磁盘的速度上(就上木桶效应,存水的多少被限制在最短的那块木板上,而不是最长的那快木板)。
作为中间层缓冲
内存的速度就是处于CPU和磁盘之间,属于微秒级。把程序和数据先加载到内存,CPU再从内存读取数据,避免直接受磁盘速度的拖累。
支持存储程序思想
程序和数据都存放在内存中,CPU 可以统一处理,提高灵活性和效率。
减少 CPU 与外设的等待
输入/输出数据必须先经过内存,再由 CPU 处理,能够保证数据交互更快更顺畅。
提高整体运行效率
整机运行效率基本接近于内存的速度,而不是磁盘的速度,内存就像“中枢”,让 CPU 始终保持高效运行。
📌 总结
内存通过充当 CPU 与磁盘/外设之间的中枢层,把访问速度从毫秒级提升到微秒级,从而显著提高了冯·诺依曼体系结构的整体效率。
四、从登录上qq开始聊天开始,数据的流动过程
🖥️ 1. 打开 QQ 并登录
加载程序
QQ的可执行文件是储存再磁盘上的,当我们点开QQ的图标的时候,操作系统会把QQ的程序代码和必要的资源加载到内存中,然后再经过中央处理器(CPU)的 取指—译码—执行 循环,开始运行QQ程序。
输入账号和密码
我们通过键盘输入 输入设备 → 内存 → CPU,由程序接收并进行加密处理。
网络通信(登录验证)
QQ 客户端通过 网络协议栈(TCP/IP) 打包账号信息,交给网卡(输出设备)。数据先进入 内存的发送缓冲区,再由 CPU 指挥网卡 发往 QQ 服务器。服务器验证成功后返回数据包 → 进入你电脑的网卡 → 写入内存 → CPU 解析 → QQ 程序显示“登录成功”。
💬 2. 开始聊天(发消息)
输入消息
当我们通过键盘(输入设备)在聊天窗口输入文字,键盘的输入信号被 CPU 接收,存放在内存中,由 QQ 程序读取。
发送消息
QQ 把我们的文字消息封装成数据包 → 放到内存的发送缓冲区 → CPU 调用网卡 → 通过网络发送给服务器。
好友接收消息
服务器收到后转发给好友。 好友的设备网卡接收数据包 → 写入内存 → CPU 调用 QQ 程序 → 程序把文字渲染到聊天窗口。
📂 3. 发送文件
文件读取
我们选择一个文件(文件是存储在磁盘上的),操作系统会把文件数据分批加载到 内存缓冲区。
数据分段传输
QQ 把文件切割成多个小块(数据包),每个数据包经过 TCP 协议加上序号、校验信息。数据进入内存的发送区,再由 CPU 控制网卡逐个发出。
好友接收文件
好友的网卡接收到数据包,写入内存 → CPU 检查顺序和完整性 → 缺失的部分请求重传。当所有数据块都完整接收后,写入好友的磁盘,文件才算真正保存成功。
🚩 结合冯·诺依曼体系
CPU:执行 QQ 程序的指令,处理输入输出和网络数据。
内存:程序运行和数据交换的中枢,所有消息/文件先在内存缓冲,再被发送或接收。
存储器:保存程序和文件,运行时必须调入内存。
输入/输出设备:键盘输入、显示器输出、网卡收发数据。
所以从聊天到发文件,本质上就是 “程序加载到内存—数据在内存和 CPU 之间流动—通过 I/O 设备与外部通信—再到好友设备复现” 的完整闭环。
总结
冯·诺依曼体系结构是现代计算机的基石,它强调 存储程序、CPU 与内存的紧密协作。在这一体系中,内存作为中枢缓冲,有效解决了 CPU 与外设速度差异过大的矛盾,使计算机整体性能接近于内存的运行速度。通过 QQ 聊天与文件传输的案例,我们可以清晰看到数据从磁盘加载到内存、由 CPU 执行处理、再经由输入输出设备与外界交互的全过程。这不仅揭示了冯·诺依曼体系的实际应用价值,也帮助我们理解软件背后隐藏的硬件运行逻辑。
————————————————
版权声明:本文为CSDN博主「平.安.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/2401_86326742/article/details/151629856