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

【Linux系统编程】冯诺依曼体系结构

目录

前言

什么是冯诺依曼体系结构?

冯诺依曼体系结构如何进行数据处理的?

存储器在冯诺依曼体系中有什么作用?

冯诺依曼体系结构为什么要这样设计?

冯诺依曼结构总结


前言

相信对于冯诺依曼这个人的名字大家一定不会感到陌生,他被称为“现代计算机之父”

而在他生平比较重要的一大贡献就是:创建了计算机的硬件结构为冯诺依曼体系结构

接下来,我会对这个体系结构进行详细的介绍,包括他为什么要这样设计,这样设计的好处是什么,为什么现在计算机大多都以冯诺依曼体系结构为主体。。。。也会娓娓道来!那就让我们接下去看吧!

什么是冯诺依曼体系结构?

冯诺依曼体系结构是冯诺依曼提出的一种计算机硬件结构,如图

我们先看看他其中的组成是怎么样的

存储器:指的其实就是我们熟知的内存

输入设备:指的是帮助计算机产生数据的设备,例如:键盘、摄像头、话筒、磁盘、网卡。。。

输出设备:指的是帮助计算机处理数据的设备,例如:显示器、音响、磁盘、网卡。。。

注意:有些设备既可以是输入设备,也可以是输出设备

中央处理单元:指的就是电脑的CPU

运算器:是CPU中较为主要的设备之一,它的功能是进行各种运算,例如:算术运算/逻辑运算

控制器:给CPU进行响应外部事件,例如拷贝数据到内存中

现在,我们知道了什么是冯诺依曼体系结构,那么相信你也一定会有疑问,他到底是如何工作的呢?不要急,我们接下来看看!

冯诺依曼体系结构如何进行数据处理的?

第一步:首先是由输入设备读取完数据

第二步:把数据由输入设备移动到内存中

第三步:此时CPU拿到并进行处理内存中的数据

第四步:CPU再把处理好的数据交给内存

第五步:内存再把数据给输出设备,此时整个数据处理流程就完毕了

也就是如下图示意图的黑色箭头指向即为冯诺依曼体系结构的工作流程

存储器在冯诺依曼体系中有什么作用?

在看了上述内容后,相信你也有一些疑惑,为什么冯诺依曼体系结构中需要有存储器呢?

我们直接把数据从输入设备把数据给到CPU再由CPU给到输出设备不就好了吗?

首先,我们先要了解一个概念,那就是在冯诺依曼体系结构中不同的设备,他们的处理数据的速度是远远不同的

其中,输入设备和输出设备是一个级别的速度(最慢的)

其次,存储器是一个级别的速度(中等的)

再然后,CPU是一个级别的速度(最快的)

如果我们说CPU是10纳秒级别的速度的话,那么存储器可能就是百纳秒为单位的,而输入设备和输出设备是微秒级别的

我们其实可以发现,在冯诺依曼体系结构中,CPU是不直接与输入输出设备直接进行交互的,原因也是因为他们的速度过慢会导致CPU长时间等待以至于运行效率变低

这里就好比木桶效应

木桶效应:决定一个桶能装多少水的不是取决于最高的那块木板,而是最低的那块木板

同样的,因为CPU的速度已经很快很快了,此时决定CPU的速度的就不是它自身的速度,而是其他较慢设备的速度。所以存储器这个设备在体系结构中也是必不可少的!

冯诺依曼体系结构为什么要这样设计?

 在上述内容中,我们了解了,体系结构中为什么需要存储器,但我接下来又得要提出一个问题了。

为什么体系结构中需要有输入设备中的磁盘呢?同样是读取数据,它的效率还比内存要低,我不能全部换成内存吗?

从技术角度来说,这显然是可行的。因为上述,同样是读取数据,内存一定比磁盘要好

但是我们除了要考虑技术问题,最重要的一个问题是成本

我们都知道,凡是被广泛传播的产品,一定是物美价廉的!

如果我们把磁盘中的512G全部换成内存,显然这个造价就会导致计算机无法广泛传播,并且性价比极低(全部换成内存不一定就会比磁盘+内存速度快)

如果真按照这样子设计,冯诺依曼体系结构也或许并不会成为现代计算机的主流硬件结构

这也从侧面应证了,冯诺依曼体系结构之所以会成为现代计算机的主流硬件结构就是因为成本低,东西好。

冯诺依曼结构总结

在学习了上述内容后,我们也可以仔细想想

我们在学习编程语言的时候,时常听到的一句话是:程序要运行,必须先加载到内存!

我们可能学的时候是会很想当然的!我们也不考虑!但我现在就可以告诉你为什么了

因为是冯诺依曼体系结构的特点决定的,因为体系结构不让CPU与外设直接交互! 

                                                        

                                                这篇文章就到这啦~我们下期再见!                                                   

相关文章:

【Linux系统编程】冯诺依曼体系结构

目录 前言 什么是冯诺依曼体系结构? 冯诺依曼体系结构如何进行数据处理的? 存储器在冯诺依曼体系中有什么作用? 冯诺依曼体系结构为什么要这样设计? 冯诺依曼结构总结 前言 相信对于冯诺依曼这个人的名字大家一定不会感到陌…...

数据结构--动态顺序表

文章目录 线性表动态顺序表数组与顺序表 接口实现初始化:尾插:尾删头插头删指定位置插入指定位置删除查找摧毁 完整代码 线性表 线性表是数据结构中最基本、最简单也是最常用的一种数据结构。线性表是指由n个具有相同数据类型的元素组成的有限序列。 线…...

笔试数据结构选填题

目录 卡特兰数Catalan:出栈序列/二叉树数 树 二叉树 N01N2 哈夫曼树(最优二叉树)Huffman 度m的哈夫曼树只有度为0和m的结点:Nm(n-1)/(m-1) 平衡二叉树AVL Nh表示深度为h最少结点数,则N00,N11&#…...

# 鸢尾花的案例学习

# 鸢尾花的案例学习 # 1. 导入小型的数据 from sklearn.datasets import load_iris import numpy as np import pandas as pd import seaborn as sbn import matplotlib.pyplot as plt # 2. 获取数据 irisload_iris() # 3.查看数据print("数据集\n ",len(iris.d…...

线程、进程的区别

线程、进程的区别 在开发中,我们经常听到线程和进程两个概念,它们都是操作系统的基本概念,操作系统以进程为基本单位分配存储器,以线程为基本单位分配CPU。虽然它们有很多相似之处,但是它们也有很大的区别。本文将详细…...

在 Ubuntu 上安装 Docker 桌面

Ubuntu 22.04 (LTS) 安装 Docker 桌面 要成功安装 Docker Desktop,您必须: 满足系统要求拥有 64 位版本的 Ubuntu Jammy Jellyfish 22.04 (LTS) 或 Ubuntu Impish Indri 21.10。对于非 Gnome 桌面环境,必须安装 gnome-terminal:…...

【WebRTC---序篇】(七)RTC多人连麦方案

服务端可以选择mediasoup,作为SFU服务器,只负责转发数据 下图举例三个Client (browser或者客户端)同时加入一个房间,每个app同时发布一路视频和一路音频,并且接受来自其他app的音视频流,mediasoup内部的结构如下&…...

【Java可执行命令】(十六)诊断命令请求发送工具 jcmd:提供一种简单而强大的方式来管理和监控 Java 进程 ~

Java可执行命令之jcmd 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 jcmd -l&#xff1a;列出正在运行的 Java 进程3.3 jcmd < pid> help&#xff1a;列出特定进程的诊断命令列表3.4 jcmd < pid> < command>&#xff1a;执行诊断命令 4️⃣ 应用场景…...

如何创建无序列表和有序列表?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 无序列表⭐ 无序列表⭐ 注意事项⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴…...

【MongoDB】初识、安装MongoDB

目录 一、MongoDB主要应用场景 二、MongoDB简介 三、MongoDB相关特点 四、MongoDB的安装 一、MongoDB主要应用场景 传统的数据库如MySQL在应对三高场景时显得力不从心 三高&#xff1a; High performance 对数据库高并发读写的需求 High Storage 对海量数据的高效率存储和 …...

方法区内存溢出及常量池

22 方法区-定义 是所有线程共享的一块区域。 存储了和类结构相关信息。运行时常量池&#xff0c; 方法区在虚拟机启动时被创建&#xff0c;逻辑上是堆的组成部分。方法区内存不足&#xff0c;也会导致oom异常。 是一个概念上的东西&#xff0c; 1.6使用永久代作为方法区&#…...

【MTK平台】【wpa_supplicant】关于wpa_supplicant_8/src/p2p/p2p_invitation.c文件的介绍

本文主要介绍external/wpa_supplicant_8/src/p2p/p2p_invitation.c文件 这里主要介绍6个方法 1.p2p_invite //p2p邀请调用此方法 2.p2p_invite_send //对p2p_invite方法进行补充 3. p2p_process_invitation_resp 4.p2p_process_invitation_req 5.p2p_build_invitation_re…...

智能仪表板DevExpress Dashboard v23.1亮点 - 增强对自定义导出的支持

DevExpress Dashboard v23.1版本增强了自定义导出到Excel的功能等&#xff0c;欢迎下载最新版本体验&#xff01; DevExpress Dashboard v23.1正式版下载(Q技术交流&#xff1a;523159565&#xff09; 所有平台 导出自定义仪表板项目到Excel 用户现在可以在WinForms和Web应…...

分布式应用:ELK企业级日志分析系统

目录 一、理论 1.ELK 2.ELK场景 3.完整日志系统基本特征 4.ELK 的工作原理 5.ELK集群准备 6.Elasticsearch部署&#xff08;在Node1、Node2节点上操作&#xff09; 7.Logstash 部署&#xff08;在 Apache 节点上操作&#xff09; 8.Kiabana 部署&#xff08;在 Node1 节点…...

Mac与windows传文件(超过4G且速度超快,非共享)

MAC与Windows文件互传 背景 尝试了网上的一些方法&#xff0c;诸如设置共享文件夹方法等&#xff0c;但是实际使用中感觉效果一般&#xff0c;对于一些小的文件共同编辑速度还可以。但是在备份或者传递一些较大文件或者很多细小文件的时候就有点捉襟见肘了。制作了一个MAC可读…...

2023年第四届“华数杯”数学建模思路 - 案例:退火算法

## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上&#xff0c;退火&#xff08;annealing&#xff09;现象指物体逐渐降温的物理现象&#xff0c;温度愈低&#…...

STM32 UDS Bootloader开发-上位机篇-CANoe制作(3)

文章目录 前言刷写脚本34服务写入数据的实现定时函数writeBlockData函数Checksum总结前言 上一篇文章中介绍了CAPL刷写脚本的大部分内容,本文继续介绍34,36,37服务的实现,及checksum中遇到的坑 刷写脚本 34服务 void requestDownLoad(struct Block hexfile) {gTxBuffer[…...

GO语言的垃圾回收机制

内存垃圾的产生 程序在内存上被分为堆区、栈区、全局数据区、代码段、数据区五个部分。对于C等早期编程语言栈上的内存回由编译器负责管理回收&#xff0c;而堆上的内存空间需要编程人员负责申请和释放。在Go中栈上内存仍由编译器负责管理回收&#xff0c;而堆上的内存由编译器…...

vim粘贴内容格式混乱解决方法

问题 复制本地文件内容后&#xff0c;咱贴到vim文本内&#xff0c;格式错乱 解决方法 打开vim配置文件 最后面加入一行 vim /etc/vimrc set pastetoggle<F11> 开发vim文件&#xff0c;进入后先按F11进入交互模式 shift insert 再次粘贴 解决...

基于Orangepi 3 lts 的云台相机

利用orangepi 3 lts 和arduino nano 制作了一个云台相机&#xff0c;可用于室内监控。 硬件&#xff1a; orangepi 3 ,arduino nano ,usb相机&#xff0c;180度舵机两个 WeChat_20230806213004 软件&#xff1a; 整体采用mqtt进行消息的中转。 相机采用python 利用opencv…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...