
✨ 坚持用 清晰易懂的图解 + 代码语言, 让每个知识点都 简单直观 !
🚀 个人主页 :不呆头 · CSDN
🌱 代码仓库 :不呆头 · Gitee
📌 专栏系列 :
💬 座右铭 : "不患无位,患所以立。"
【Linux】冯 • 诺依曼体系结构
- 摘要
- 目录
-
- 一、冯•诺伊曼体系的介绍
- 二、冯•诺依曼体系结构的推导
- 三、内存如何提高冯•诺依曼体系的效率?
- 四、从登录上qq开始聊天开始,数据的流动过程
-
- [🖥️ 1. 打开 QQ 并登录](#🖥️ 1. 打开 QQ 并登录)
- [💬 2. 开始聊天(发消息)](#💬 2. 开始聊天(发消息))
- [📂 3. 发送文件](#📂 3. 发送文件)
- [🚩 结合冯·诺依曼体系](#🚩 结合冯·诺依曼体系)
- 总结
摘要
本文从冯·诺依曼体系结构的五大基本部件入手,结合直观图解和表格,系统讲解了该体系的形成与发展逻辑,重点分析了内存在提高整体效率中的核心作用。随后通过"登录 QQ 并与好友聊天、传输文件"的实例,将抽象的体系结构与实际软件运行过程联系起来,帮助读者从硬件概念延伸到对软件数据流的深层理解。
目录
一、冯•诺伊曼体系的介绍
- 冯诺依曼体系是由冯·诺依曼提出的计算机设计的基本框架,包括五大部件:输入设备,存储器,运算器,控制器,输出设备。 (其中运算器和控制器统称为中央处理器也就是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 执行处理、再经由输入输出设备与外界交互的全过程。这不仅揭示了冯·诺依曼体系的实际应用价值,也帮助我们理解软件背后隐藏的硬件运行逻辑。
不是呆头将一直坚持用清晰易懂的图解 + 代码语言,让每个知识点变得简单!
👁️ 【关注】 看一个非典型程序员如何用野路子解决正经问题
👍 【点赞】 给"不写八股文"的技术分享一点鼓励
🔖 【收藏】 把这些"奇怪但有用"的代码技巧打包带走
💬 【评论】 来聊聊------你遇到过最"呆头"的 Bug 是啥?
🗳️ 【投票】 您的投票是支持我前行的动力
技术没有标准答案,让我们一起用最有趣的方式,写出最靠谱的代码! 🎮💻