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

目录

前言

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

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

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

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

冯诺依曼结构总结


前言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

这里就好比木桶效应

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

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

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

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

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

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

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

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

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

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

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

冯诺依曼结构总结

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

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

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

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

                                                        

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/62064.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CentOS8启动过程与服务单元控制systemctl

一、启动过程 CentOS8采用了systemd,启动过程被大大缩短了。具体启动过程如下: 1、开机自检。 2、从硬盘的MBR中读取引导程序GRUB。 3、引导程序更加配置文件显示引导菜单。 4、如果选择进入Linux系统,此时引导程序就会加载Linux内核文件…

​TikTok正在监管机构谈判,以获得印尼支付牌照

8月4日,据路透社报道,两位消息人士透露,TikTok正在与印尼监管机构进行初步谈判,以求获得印尼央行颁发的PJP支付牌照。若获得该项资质,TikTok将能够更好的在本地开展电商等各项业务。 TikTok发言人于8月4日证实了这一消…

Redis压缩列表

区分一下 3.2之前 Redis中的List有两种编码格式 一个是LINKEDLIST 一个是ZIPLIST 这个ZIPLIST就是压缩列表 3.2之后来了一个QUICKLIST QUICKLIST是ZIPLIST和LINKEDLIST的结合体 也就是说Redis中没有ZIPLIST和LINKEDLIST了 然后在Redis5.0引入了LISTPACK用来替换QUiCKLIST中的…

【《深入浅出计算机网络》学习笔记】第1章 概述

内容来自b站湖科大教书匠《深入浅出计算机网络》视频和《深入浅出计算机网络》书籍 目录 1.1 信息时代的计算机网络 1.1.1 计算机网络的各类应用 1.1.2 计算机网络带来的负面问题 1.2 因特网概述 1.2.1 网络、互联网与因特网的区别与关系 1.2.1.1 网络 1.2.1.2 互联网 …

Redis学习笔记Day01-Redis入门

声明:本博客部分内容是从终极SpringBoot讲义摘抄的,文字是OCR识别出来的,有可能存在识别错误的可能,如有错误,请大胆指正,我马上修改! 目录 1.连接命令2.key相关命令3.String命令4.List命令5.S…

Vue [Day4]

组件的三大组成部分 组件的样式冲突 scoped <style scoped></style>data 是一个函数 components/BaseButton.vue <template><div class"BaseButton"><button click"count--">-</button><span>{{ count }}</…

软件外包开发的GO语言特点

Go语言&#xff08;也称为Golang&#xff09;是由Google开发的一种编程语言。它具有许多特点&#xff0c;使其成为许多项目范围的优秀选择。Go语言适用于需要高性能、并发和简洁易读的项目&#xff0c;特别是面向网络和分布式应用的项目。今天和大家分享项目的特点及适用的项目…

【深度学习环境】安装anaconda、tensorflow、pycharm

目录 1.安装anaconda 2.安装tensorflow-gpu 3.安装pycharm 4.VNC操作 5.安装Pytorch PS: linux下常见的操作&#xff1a; 1.Linux下强制关闭程序&#xff1a; 2.导出环境 2.1.pip导出 2.2.conda导出 2.3.其他 3.windows下的环境安装 & pycharm远程配置 4.bash…

postman和jmeter的区别何在?

小伙伴们大家好呀&#xff0c;前段时间笔者做了一个小调查&#xff0c;发现软件测试行业做功能测试和接口测试的人相对比较多。在测试工作中&#xff0c;有高手&#xff0c;自然也会有小白&#xff0c;但有一点我们无法否认&#xff0c;就是每一个高手都是从小白开始的&#xf…

BS框架说明

B/S架构 1.B/S框架&#xff0c;意思是前端&#xff08;Browser 浏览器&#xff0c;小程序、app、自己写的&#xff09;和服务器端&#xff08;Server&#xff09;组成的系统的框架结构 2.B/S框架&#xff0c;也可理解为web架构&#xff0c;包含前端、后端、数据库三大组成部分…

数据可视化(七)常用图表的绘制

1. #seaborn绘制常用图表 #折线图 #replot&#xff08;x&#xff0c;y&#xff0c;kind&#xff0c;data&#xff09; #lineplot&#xff08;x&#xff0c;y&#xff0c;data&#xff09; #直方图 #displot&#xff08;data&#xff0c;rug&#xff09; #条形图 #barplot&…

测试老鸟总结,性能测试需求分析-性能必要性,一篇打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能测试需求分析…

基于react-native的简单消息确认框showModel

基于react-native的简单消息确认框showModel 效果示例图组件代码ShowModel/index.jsx使用案例device.js安装线性渐变色 效果示例图 组件代码ShowModel/index.jsx import React, {forwardRef, useImperativeHandle, useState} from react; import {View,Text,Modal,TouchableOp…

Babylon.js开发工具链大全

本文介绍Babylon 团队&#xff08;JS 和原生&#xff09;和社区共同创建的所有出色工具的摘要&#xff0c;以帮助开发人员和设计人员创建出色的 3D 体验。 推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 1、Sandbox 第一个工具Sandbox可能是最简单的&#xff0c;它实…

基于RASC的keil电子时钟制作(瑞萨RA)(8)----按键修改数码管时间

基于RASC的keil电子时钟制作8_按键修改数码管时间 概述硬件准备视频教程配置按键管脚按键设置主程序timer_smg.ctimer_smg.h 概述 前几节课程已经单独驱动了数码管和RTC&#xff0c;同时已经整合成了能够用数码管显示具体时间&#xff0c;但是无法修改时间&#xff0c;这节就来…

web基础与tomcat环境部署

一. 简述静态网页和动态网页的区别。 请求响应信息&#xff0c;发给客户端进行处理&#xff0c;由浏览器进行解析&#xff0c;显示的页面称为静态页面。处理文件类型如.html、jpg、.gif、.mp4、.swf、.avi、.wmv、.flv等 请求响应信息&#xff0c;发给事务端进行处理&#xff0…

信号平滑或移动平均滤波研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

数据库与数据仓库的区别及关系

数据库与数据仓库的区别及关系 数据库数据仓库异同差异联系例子 数据库 数据库是结构化信息或数据的有序集合&#xff0c;一般以电子形式存储在计算机系统中。通常由数据库管理系统 (DBMS) 来控制。它是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集…

【导出Word】如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档(只含文本内容的模板)

这篇文章&#xff0c;主要介绍如何使用JavaFreemarker模板引擎&#xff0c;根据XML模板文件生成Word文档。 目录 一、导出Word文档 1.1、基础知识 1.2、制作模板文件 1.3、代码实现 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;创建Freemarker工具类 &…

VL 模型 Open-Set Domain Adaptation with Visual-Language Foundation Models 论文阅读笔记

Open-Set Domain Adaptation with Visual-Language Foundation Models 论文阅读笔记 一、Abstract 写在前面 又是一周周末&#xff0c;在家的时间感觉过得很快呀。今天没得时间写博客&#xff0c;留下个标题&#xff0c;明天搞完。 论文地址&#xff1a;Open-Set Domain Adapta…