当前位置: 首页 > news >正文

【Linux】操作系统之冯诺依曼体系

图片名称
🎉博主首页: 有趣的中国人

🎉专栏首页: Linux

🎉其它专栏: C++初阶 | C++进阶 | 初阶数据结构

在这里插入图片描述

小伙伴们大家好,本片文章将会讲解 操作系统中 冯诺依曼体系 的相关内容。


如果看到最后您觉得这篇文章写得不错,有所收获,麻烦点赞👍、收藏🌟、留下评论📝。您的支持是我最大的动力,让我们一起努力,共同成长!

文章目录

  • `1. 冯诺依曼体系介绍`
    • ==<font color = blue><b>🎧1.1 冯诺依曼体系结构介绍🎧==
    • ==<font color = blue><b>🎧1.2 冯诺依曼体系结构示意图🎧==
  • `2. 为什么会出现冯诺依曼体系`
    • ==<font color = blue><b>🎧2.1 内存的特点🎧==
  • `3. 冯诺依曼体系的深度理解`



1. 冯诺依曼体系介绍


🎧1.1 冯诺依曼体系结构介绍🎧


冯·诺伊曼体系是 计算机体系结构的一种基本设计范式,以美国数学家兼计算机科学家约翰·冯·诺伊曼(John von Neumann)的名字命名。该体系结构是20世纪40年代末和50年代初期发展起来的,并且至今仍然是现代计算机设计的基础之一。

冯·诺伊曼体系主要包括以下几个重要组成部分:

  1. 存储器(Memory):计算机内部用于存储数据和指令的地方。在冯·诺伊曼体系中,数据和指令都以二进制形式存储在存储器中,并且可以通过地址访问。
  2. 中央处理器(Central Processing Unit,CPU):负责执行计算机程序中的指令,并处理数据的部件。CPU包括 算术逻辑单元(Arithmetic Logic Unit,ALU)负责执行算术和逻辑运算,以及 控制单元(Control Unit)负责控制指令的执行顺序。
  3. 输入输出设备(Input/Output Devices,I/O Devices):用于与计算机进行交互的外部设备,如键盘、鼠标、显示器、打印机等。输入输出设备通过输入输出接口(I/O Interface)与计算机连接。

🎧1.2 冯诺依曼体系结构示意图🎧


在这里插入图片描述

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

  • 输入单元:包括键盘, 鼠标,扫描仪, 写板等;
  • 中央处理器(CPU):含有运算器和控制器等;
  • 输出单元:显示器,打印机等。

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

  1. 这里的存储器指的是内存;
  2. 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备);
  3. 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
  4. 一句话,所有设备都只能直接和内存打交道。
  5. 这些条件都是为了保证计算机处理数据的效率。


2. 为什么会出现冯诺依曼体系


计算机就是为了解决问题而产生的,既然要解决问题,那么它就要接收相应数据,接收完数据,在计算机中进行一系列的算数与逻辑运算,然后再将数据通过输出设备进行输出,于是就有了以下的流程图:

在这里插入图片描述

但是相较于中央处理器(CPU)来说,外设(输入输出设备)的速度是非常慢的,于是,整个计算机的处理数据的速度就不是取决于CPU而是取决于外设了(根据木桶原理),下图是一个存储器层次结构全景图,表示了计算机中各种存储设备的处理数据的速度:

在这里插入图片描述


因此为了解决此问题,就不让外设直接和CPU进行交互,在中间加了内存:

在这里插入图片描述


🎧2.1 内存的特点🎧


内存处理数据的速度比外设要快上很多,但是比CPU又要慢,内存在外设和CPU中间起到了缓冲的作用。


现在这个体系的流程就是:

  1. 用户通过输入设备输入数据,数据会先存放到内存,
  2. CPU处理数据时就到内存中读取数据,处理完之后又放到内存中,
  3. 然后当输出设备需要时,再将内存中的数据输出到输出设备中。

那为什么加上内存计算机处理速度就会变快呢?

  1. 首先 内存是有容量大小的,所以他就有装在数据的能力
  2. CPU要访问数据时,内存会将CPU 要访问的数据以及它的周围的数据 从输入设备一同加载到内存中;
  3. 并且CPU 处理数据是可以和内存加载数据同时进行的,这样当下次CPU访问数据的时候就可以直接从内存中获取数据;
  4. 数据处理完成之后, CPU 将处理完的数据存储到内存中(一般存储在缓冲区中),当输出设备需要在内存中的数据时,就会冲刷缓冲区。
    • 这就是Linux中的fflush()函数强制冲刷缓冲区和缓冲区满了也要强制冲刷缓冲区的底层含义。


3. 冯诺依曼体系的深度理解


我们这里会举一个例子来理解冯诺依曼系统:

当用微信和朋友聊天时数据的流动过程:

我们这里只涉及两台电脑中的数据流动的过程,至于网络的相关内容先暂且不谈:

你自己的电脑:

  1. 首先你从键盘(输入设备)输入数据;
  2. 计算机将你输入的数据加载到内存中;
  3. CPU从内存中获取你输入的数据,然后进行相关的处理(加密类似的操作);
  4. CPU将处理完成的数据重新加载到内存中;
  5. 网卡这个输出设备需要从内存中获取CPU处理完的数据。

你朋友的电脑:

  1. 你朋友电脑上的网卡充当了输入设备,获取你发送的信息;
  2. 信息加载到内存中;
  3. CPU从内存中获取信息,进行处理(解密);
  4. CPU将处理完成的数据重新加载到内存中;
  5. 显示器充当了输出设备,从内存中获取CPU解密的相应信息,也就是你所发送的信息。
http://www.lryc.cn/news/359185.html

相关文章:

  • c++ QT 实现QMediaPlayer播放音频显示音频级别指示器
  • 失之毫厘差之千里之load和loads
  • element ui在移动端的适配问题
  • 堆排序详细理解
  • RK3588+FPGA+AI高性能边缘计算盒子,应用于视频分析、图像视觉等
  • 07-操作元素(键盘和鼠标事件)
  • 3389,为了保障3389端口的安全,我们可以采取的措施
  • Java集合【超详细】2 -- Map、可变参数、Collections类
  • 最佳 Mac 数据恢复:恢复 Mac 上已删除的文件
  • 芋道系统,springboot+vue3+mysql实现地址的存储与显示
  • 【C++】C++11新特性:列表初始化、声明、新容器、右值引用、万能引用和完美转发
  • 【IB Protocal Serial--WQE】
  • C++ 混合运算的类型转换
  • 线性时间选择
  • 【对算法期中卷子的解析和反思】
  • sudo apt update sudo: apt: command not found
  • ios:文本框默认的copy、past改成中文复制粘贴
  • Qt moc系统的黑魔法?
  • MyBatis开发中常用总结
  • Git基本使用教程(学习记录)
  • 【Linux-RTC】
  • 机器学习目录
  • React开发环境配置详细讲解-04
  • Go 如何通过 Kafka 客户端库 生产与消费消息
  • 【设计模式深度剖析】【B】【结构型】【对比】| 主要区别包装的不同
  • 信息学奥赛初赛天天练-17-阅读理解-浮点数精准输出与海伦公式的巧妙应用
  • mysql - 为什么MySQL不建议使用NULL作为列默认值?
  • 数据分析案例-在线食品订单数据可视化分析与建模分类
  • 构建LangChain应用程序的示例代码:2、使用LangChain库实现的AutoGPT示例:查找马拉松获胜成绩
  • 代码随想录算法训练营第三十四 |● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果