【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解密的相应信息,也就是你所发送的信息。
相关推荐
摸鱼也很难1 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
watermelonoops1 小时前
Deepin和Windows传文件(Xftp,WinSCP)
linux·ssh·deepin·winscp·xftp
woshilys2 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛2 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程3 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo4 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
远游客07134 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<4 小时前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟4 小时前
centos-stream9系统安装docker
linux·docker·centos
好像是个likun5 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器