详细介绍:【Linux】冯 • 诺依曼体系结构

在这里插入图片描述

✨ 坚持用 清晰易懂的图解 + 代码语言, 让每个知识点都简单直观
个人主页不呆头 · CSDN
代码仓库不呆头 · Gitee
专栏系列

座右铭“不患无位,患因而立。”



摘要

本文从冯·诺依曼体系结构的五大基本部件入手,结合直观图解和表格,体系讲解了该体系的形成与发展逻辑,重点分析了内存在提高整体效率中的核心作用。随后借助“登录 QQ 并与好友聊天、传输文件”的实例,将抽象的体系结构与实际软件运行过程联系起来,帮忙读者从硬件概念延伸到对软件数据流的深层理解。


目录

一、冯•诺伊曼体系的介绍

  • 冯诺依曼体系是由冯·诺依曼提出的计算机设计的基本框架,包括五大部件:输入设备,存储器,运算器,控制器,输出设备。(其中运算器和控制器统称为中央处理器也就是CPU)
  • 我们的计算机,笔记本的设计都遵守冯诺依曼体系
  • 这五大部件都是独立的个体,各个硬件单元必须使用“线”连接起来,总线:系统总线,IO总线

在这里插入图片描述

部件英文名称功能说明
运算器Arithmetic Logic Unit (ALU)负责完成算术运算(加减乘除)和逻辑运算(与、或、非、比较等),是计算机进行数据处理的核心。
控制器Control Unit (CU)负责解释指令并控制各部件协调工作,指挥程序按顺序执行。
存储器Memory用于存放数据和程序指令,二者同等对待,均以二进制形式存储。
输入设备Input用来将数据或程序输入计算机,例如键盘、鼠标、扫描仪等。
输出设备Output将计算机处理的结果输出,例如显示器、打印机、扬声器等。

二、冯•诺依曼体系结构的推导

计算机的作用就是为了解除人的问题,解决问题开始需要将材料或是问题输入到计算机当中,因而计算机必须要有输入设备。计算机解决完困难后还需要将计算结果输出显示出来,故而计算机必须要有输出设备。计算机通过输入设备得到素材,数据在计算机当中进行一系列的算术运算和逻辑运算后,凭借输出设备进行输出,于是就得到了以下流程图。

在这里插入图片描述

但是计算机当中只有算术运算功能和逻辑运算功能是不够的,还需要有控制功能,控制何时从输入设备获取数据,何时输出数据到输出设备等。对应到C语言当中,算术运算就结束一系列的加减乘除,而逻辑运算就对应于一系列的逻辑与逻辑或等,控制功能就对应于C语言当中的判断、循环以及各个函数之间的跳转等等。

在这里插入图片描述

  • 而我们后人就将这个具有算术运算功能、逻辑运算机制以及控制功能的这个模块称为中央处理器,简称CPU。
  • 但是输入设备和输出设备相对于中央处理器来说是非常慢的,于是在当前这个体系整体呈现出来的就是,输入设备和输出设备很慢,而CPU很快,根据木桶原理,那么最终整个体系所呈现出来的速度将会是很慢的。所以当前该体系结构显然是不合适的,于是我们就不让输入设备和输出设备直接与CPU进行交互,而在这中间加入了内存

在这里插入图片描述

  • 内存有个特点就是,比输入设备和输出设备要快很多,只是比CPU又要慢。现在内存就处于慢设备和快设备之间,是一个不快也不慢的设备,能够在该体系结构当中就起到一个缓冲的作用
  • 现在该体系的运行流程就是:用户输入的数据先放到内存当中,CPU读取数据的时候就直接从内存当中读取,CPU处理完数据后又写回内存当中,然后内存再将资料输出到输出设备当中,最后由输出设备进行输出表明。于是就形成了最终的冯诺依曼体系结构。

注意: 这里存储器只是内存,不包括外存。
在这里插入图片描述


三、内存如何提高冯•诺依曼体系的效率?

起初CPU的运行速度非常的快,是纳秒级别;然后磁盘的速度很慢,是毫秒级别;如果CPU直接访问磁盘,整体效率会被限制在磁盘的速度上(就上木桶效应,存水的多少被限制在最短的那块木板上,而不是最长的那快木板)。

  1. 作为中间层缓冲
    内存的速度就是处于CPU和磁盘之间,属于微秒级。把程序和数据先加载到内存,CPU再从内存读取数据,避免直接受磁盘速度的拖累。
  2. 支持存储程序思想
    程序和资料都存放在内存中,CPU 可以统一处理,提高灵活性和效率。
  3. 减少 CPU 与外设的等待
    输入/输出数据必须先经过内存,再由 CPU 处理,能够保证数据交互更快更顺畅。
  4. 提高整体运行效率
    整机运行效率基本接近于内存的速度,而不是磁盘的速度,内存就像“中枢”,让 CPU 始终保持高效运行。

总结

内存借助充当 CPU 与磁盘/外设之间的中枢层,把访问速度从毫秒级提升到微秒级,从而显著提高了冯·诺依曼体系结构的整体效率。


四、从登录上qq开始聊天开始,数据的流动过程

️ 1. 打开 QQ 并登录

  1. 加载程序
    QQ的可执行文件是储存再磁盘上的,当我们点开QQ的图标的时候,操作系统会把QQ的程序代码和必要的资源加载到内存中,然后再经过中央处理器(CPU)的取指—译码—执行循环,开始运行QQ程序。
  2. 输入账号和密码
    我们通过键盘输入输入设备 → 内存 → CPU,由程序接收并进行加密处理。
  3. 网络通信(登录验证)
    QQ 客户端通过网络协议栈(TCP/IP)打包账号信息,交给网卡(输出设备)。材料先进入内存的发送缓冲区,再由 CPU 指挥网卡发往 QQ 服务器。服务器验证成功后返回数据包 → 进入你电脑的网卡 → 写入内存 → CPU 解析 → QQ 程序显示“登录成功”。

2. 开始聊天(发消息)

  1. 输入消息
    当我们通过键盘(输入设备)在聊天窗口输入文字,键盘的输入信号被 CPU 接收,存放在内存中,由 QQ 程序读取。
  2. 发送消息
    QQ 把我们的文字消息封装成数据包 → 放到内存的发送缓冲区 → CPU 调用网卡 → 凭借网络发送给服务器。
  3. 好友接收消息
    服务器收到后转发给好友。 好友的设备网卡接收数据包 → 写入内存 → CPU 调用 QQ 脚本 → 脚本把文字渲染到聊天窗口。

3. 发送文件

  1. 文件读取
    大家选择一个文件(资料是存储在磁盘上的),操作系统会把文件数据分批加载到内存缓冲区
  2. 信息分段传输
    QQ 把文件切割成多个小块(数据包),每个数据包经过 TCP 协议加上序号、校验信息。素材进入内存的发送区,再由 CPU 控制网卡逐个发出。
  3. 好友接收文件
    好友的网卡接收到数据包,写入内存 → CPU 检查顺序和完整性 → 缺失的部分请求重传。当所有数据块都完整接收后,写入好友的磁盘,文件才算真正保存成功。

结合冯·诺依曼体系

  • CPU:执行 QQ 程序的指令,处理输入输出和网络素材。
  • 内存:程序运行和数据交换的中枢,所有消息/材料先在内存缓冲,再被发送或接收。
  • 存储器:保存程序和文件,运行时必须调入内存。
  • 输入/输出设备:键盘输入、显示器输出、网卡收发数据。

所以从聊天到发文件,本质上就是“代码加载到内存—数据在内存和 CPU 之间流动—通过 I/O 设备与外部通信—再到好友设备复现”的完整闭环。


总结

冯·诺依曼体系结构是现代计算机的基石,它强调存储程序、CPU 与内存的紧密协作。在这一体系中,内存作为中枢缓冲,有效解决了 CPU 与外设速度差异过大的矛盾,使计算机整体性能接近于内存的运行速度。通过 QQ 聊天与文件传输的案例,我们允许清晰看到数据从磁盘加载到内存、由 CPU 执行处理、再经由输入输出设备与外界交互的全过程。这不仅揭示了冯·诺依曼体系的实际应用价值,也帮助我们理解软件背后隐藏的硬件运行逻辑。


不是呆头将一直坚持用清晰易懂的图解 + 代码语言,让每个知识点变得简便!
️ 【关注】 看一个非典型程序员如何用野路子解决正经问题
【点赞】 给“不写八股文”的技巧分享一点鼓励
【收藏】 把这些“奇怪但有用”的代码技巧打包带走
啥?就是 【评论】 来聊聊——你遇到过最“呆头”的 Bug
支撑我前行的动力就是️ 【投票】 您的投票
技术没有标准答案,让我们一起用最有趣的方式,写出最靠谱的代码!

posted on 2025-10-20 10:37  slgkaifa  阅读(14)  评论(0)    收藏  举报

导航