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


🎉博主首页: 有趣的中国人

🎉专栏首页: Linux

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

小伙伴们大家好,本片文章将会讲解 操作系统中 冯诺依曼体系 的相关内容。
如果看到最后您觉得这篇文章写得不错,有所收获,麻烦点赞👍、收藏🌟、留下评论📝。您的支持是我最大的动力,让我们一起努力,共同成长!

文章目录

  • [`1. 冯诺依曼体系介绍`](#1. 冯诺依曼体系介绍)
    • [==<font color = blue><b>🎧1.1 冯诺依曼体系结构介绍🎧==](#==🎧1.1 冯诺依曼体系结构介绍🎧==)
    • [==<font color = blue><b>🎧1.2 冯诺依曼体系结构示意图🎧==](#==🎧1.2 冯诺依曼体系结构示意图🎧==)
  • [`2. 为什么会出现冯诺依曼体系`](#2. 为什么会出现冯诺依曼体系)
    • [==<font color = blue><b>🎧2.1 内存的特点🎧==](#==🎧2.1 内存的特点🎧==)
  • [`3. 冯诺依曼体系的深度理解`](#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解密的相应信息,也就是你所发送的信息。
相关推荐
清风来点灯4 分钟前
Ubuntu22.04安装显卡驱动/卸载显卡驱动
linux·笔记·ubuntu
qrh_yogurt27 分钟前
搭建spark伪分布集群
大数据·服务器·spark
还有几根头发呀1 小时前
深入理解 TCP:重传机制、滑动窗口、流量控制与拥塞控制
服务器·网络
吴爃1 小时前
linux搭建hadoop学习
linux·hadoop·学习
海尔辛2 小时前
学习黑客Linux Flags and Switches 入门
linux·运维·学习
程序边界2 小时前
RPA与After Effects 2024深度融合:自动化影视特效全链路革命
运维·自动化·rpa
檀越剑指大厂2 小时前
【Linux系列】跨平台安装与配置 Vim 文本编辑器
linux·运维·vim
小妖6662 小时前
vue2 provide 后 inject 数据不是响应式的,不实时更新
java·服务器·前端
11054654012 小时前
3、食品包装控制系统 - /自动化与控制组件/food-packaging-control
运维·信息可视化·自动化
purrrew3 小时前
【Java ee初阶】网络编程 TCP
java·服务器·网络·网络协议·tcp/ip·udp·java-ee