【Hello Linux】初识冯诺伊曼体系

news2024/12/22 23:22:05

作者:@小萌新
专栏:@Linux
作者简介:大二学生 希望能和大家一起进步!
本篇博客简介:简单介绍冯诺伊曼体系

冯诺伊曼体系

在这里插入图片描述

冯诺伊曼体系结构的合理性

我们在Linux的第一篇博客中讲解了第一台计算机的发明是为了解决导弹的弹道问题被发明出来的 即计算机被发明出来是为了解决我们的实际问题的

那么既然它被发明出来是要解决我们的实际问题的我们就需要一个输入设备将我们的问题输入进去

当计算机在内部进行一定的算术运算或者是逻辑运算之后把我们想要得到的结果返回给我们

怎么返回给我们呢? 这个时候我们显然就需要输出设备

也就是说最简单的计算机体系至少需要这三个组成

输入设备 输出设备 运算器

在这里插入图片描述

但是显然我们只有运算器是不够的 因为这样子三个设备是孤立的三个单元

我们这个时候还需要一个控制器将这三个单元链接起来 控制何时输入 何时运算 何时输出 我们将这个设备叫做控制器

所以说后面的结构会变成这个样子

在这里插入图片描述

后面我们将这个具有运算和控制功能的设备赋予了一个新的名字 叫做cpu(中央处理器)

但是我们知道 cpu的运算能力是非常快的 而我们的输入输出则是非常慢的

这里就会引出一个矛盾 如果让输入输出设备和cpu直接连接的话效率就会变得非常低

于是我们后面想到了在输入和输出设备和cpu之间添加一个缓冲区 不让他们直接接触 这个缓冲区的效率一定要高于输入输出设备 它就是内存

加上了内存之后输入的数据直接写入到内存中 然后由内存与cpu沟通

经过了cpu的计算后再次写入内存中由内存写进输出设备

这样子就避免了cpu和输入输出设备的直接沟通 提高了效率

在这里插入图片描述
同时cpu中的控制器控制着整个计算机的运行

在这里插入图片描述
这样子我们就证明了冯诺依曼体系的合理性了

内存提高性能的原理

为什么明明输入设备到cpu只有一步

而输入设备到内存再到cpu有两步 输入设备到cpu的效率反而会比较慢呢?

这里我们就要提到深入理解计算机系统一书中提出的一个概念 局部性原理

局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中

内存首先是一个存储设备 那么它肯定就有存储数据的能力

它可以在cpu处理一行数据的时候将下面几行的数据预先加载进来

根据局部性原理 这些数据是大概率要被使用的

cpu能够同时处理数据和加载数据 这样子cpu就可以直接从内存中读取数据了

这就是内存能偶提高性能的原因

输出设备是也是一样的cpu处理完数据直接存放到内存中 当输出设备需要用的时候直接从内存中读取 这跟我们常说的缓冲区概念有所关联

输入缓冲区和输出缓冲区

输入设备输入数据之后数据并不能被直接读取

同样的 输出设备并不能直接输出处理完后的数据

输入的数据被存放在一个叫做输入缓冲区的地方
将被输出的数据存放在一个叫做输出缓冲区的地方

关于这两个概念 我的其他博客中有所设计 大家可以参考着理解

输入缓冲区

输出缓冲区

冯诺伊曼体系之间的交流

我们这里用QQ发送消息作为示例

两台电脑就是两个符合冯诺依曼体系的系统

在这里插入图片描述

首先我们通过键盘输入我们想要发送的信息

这个信息进入内存中

内存中的数据被cpu读取并处理最后返回到内存中(加密信息)

网卡读取内存中的数据输出到网络中

网络中的数据被另外一台计算机的网卡读取到之后进入内存中

内存中的数据被cpu读取并处理最后返回内存中(解密数据)

最后显示器上会显示内存中的信息 也就是我们发送的信息

从这个过程中我们可以发现

输入输出设备并不是固定死的 有的设备既能当输入设备也能当输出设备

相关知识

  1. 输入输出设备之间可以相互转换 比如说网卡在发送信息的时候是输出设备 在接受消息的时候就是输入设备了
  2. 其实不光是cpu中有寄存器 为了提高效率其他的外设中也有寄存器
  3. 在物理层面上 所有的设备都是通过一根总线相连的 外设与内存之间的线叫做io线 内存和cpu之间的线叫做系统总线

常见的输入设备:键盘、鼠标、网卡、硬盘、话筒、摄像头、扫描仪等

常见的输出设备:显示器、音响、网卡、硬盘、打印机等

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实例7:树莓派呼吸灯

实例7:树莓派呼吸灯 实验目的 通过背景知识学习,了解digital与analog的区别。通过GPIO对外部LED灯进行呼吸控制,熟悉PWM技术。 实验要求 通过python编程,用GPIO控制LED灯,使之亮度逐渐增大,随后减小&am…

交换字符使得字符串相同[贪心]

贪心前言一、交换字符使得字符串相同二、贪心1、分析问题的思路过程2、go总结参考资料前言 贪心算法,必须先看清楚有哪些选择,才能在这些选择的基础上进行贪心,做最优选择,除此之外,还得看局部最优会不会形成全局最优…

8 百度接口

0 建议学时 2学时 1 简介 百度人工智能平台-站在巨人的肩膀上 https://ai.baidu.com/ 控制台->立即注册 百度人工智能平台 APP Key 和 Secret Key AI接入指南 https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjgn3 百度智能云视频参考 https://abcxueyuan.baidu.com/#/…

2023年最新详细教程!手把手教你搭建Hexo + GitLab个人博客

文章目录前言一、安装和配置环境1.安装 Git2.安装 Node.js二、新建博客项目1.GitLab配置CI/CD自动化部署1.1 GitLab新建项目1.2 GitLab自建Runners1.2.1 下载gitlab-runner1.2.2 注册Runners1.2.3 安装Runners并启动1.3 添加.gitlab-ci.yml文件2.拉取和推送hexo blog2.1 拉取he…

基于遗传算法的配电网故障定位(Matlab代码实现)

👨‍🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…

sonarqube 外部扫描器 go vet golangci-lint 无法导入问题

首先,请看[外部分析报告]各种语言的报告生成 go vet 2> govet-report.out#没有golangci-lint,我从网上找到了 golangci-lint run --out-format checkstyle ./... > golangci-lint-report.xml值得注意的是,貌似不支持目录,仅…

6.2 负反馈放大电路的四种基本组态

通常,引入交流负反馈的放大电路称为负反馈放大电路。 一、负反馈放大电路分析要点 如图6.2.1(a)所示电路中引入了交流负反馈,输出电压 uOu_OuO​ 的全部作为反馈电压作用于集成运放的反向输入端。在输入电压 uIu_IuI​ 不变的情况下,若由于…

mysys2+minGW方案编译ffmpeg的最佳实践

一、Win10 64bit编译环境的建立1)从http://www.msys2.org/下载 msys2-x86_64-xxx.exe2) 安装msys2到默认路径 C:\msys64\3) 运行MSYS2 w644)执行 pacman -Syu 更新系统当出现提示时,选择y5) 当窗口关闭时,重…

JavaScript函数

目录 定义函数 调用函数 函数参数 函数返回值 匿名函数 箭头函数 使用JavaScript编程时,函数是一种非常有用的编程结构,用于执行特定的任务并返回结果。函数可以重复使用,因此您只需编写一次代码,即可在需要时多次调用该代码…

深入解析dubbo的延迟暴露

一、引子 最近搭建了一个新的Java工程,主要是提供dubbo服务给其他业务用的。突然想起之前dubbo服务都会配置延迟暴露来解决平滑发布的问题,但是好像现在新的Java项目都没有配置延迟暴露了,觉得很奇怪,所以去研究了一下关于dubbo延…

Delete `␍`eslint(prettier/prettier) in vscode 的解决方案

错误描述从 Github 仓库拉取代码,使用 vscode 打开,页面报错,每一行都爆红 (如下图)问题原因由于历史原因,windows下和linux下的文本文件的换行符不一致。Windows在换行的时候,使用了换行符CRLF…

ROG配置ubuntu20.04.5双系统要点

win11ubuntu20.04.5 1. BIOS设置 开机长按F2进入bios设置,修改advanced参数: boot -> 关闭fast bootsecurity -> 关闭secure boot设置VMD controller为Disabled(其他电脑是修改硬盘的SATA和ACHI模式)。但是改了之后windo…

【大数据离线开发】8.1 Hive介绍和架构

Hive:数据分析引擎 了解 大数据的终极目标: 使用SQL语句来处理大数据 Hadoop的体系架构中: Hive:支持SOLPig:支持PiqLatin Spark的体系架构中: Spark SQL:类似Hive,支持SOL、支持DSL 另一个:Impala 8.1 什么是Hive? 起源自f…

Linux 离线安装Ruby和RubyGems环境

文章目录简介1. 安装GCC环境2. 安装ruby3. 安装 RubyGems4. 安装 redis-xxx.gem提示:以下是本篇文章正文内容,Redis系列学习将会持续更新 简介 在学习 Redis 集群对这几个词的概念和关系感混乱,故在此对其梳理。 Ruby 是什么? 它…

鼠标更换指针图案和更改typora的主题

鼠标更换指针图案 由此偶然看见好几个朋友都使用了新的图案替换掉了原有的鼠标图案,今天寻思自己也换一个图案 主要是觉得鼠标大一点儿会好看一些,所以就找了一些教程 官方教程,小的变动 当然最多的是官方教程,如果你只是想要…

Web Spider Ast-Hook 浏览器内存漫游 - 数据检索

文章目录一、资源下载二、通过npm安装anyproxy模块三、anyproxy的介绍以及基本使用1. anyproxy的功能介绍2. anyproxy的基本使用四、给浏览器挂代理五、实操极验demo案例总结提示:以下是本篇文章正文内容,下面案例可供参考 一、资源下载 Github&#x…

性能优化之node中间件耗时

背景 中间件在node框架中是很基本的套件,使用不当很容易对页面性能造成影响。除了node服务端外,前端做的SSR项目也要特别重视这块 哪些场景会造成中间件耗时特别严重? 罪魁祸首是:await阻塞 举个例子: 1.如何得到 …

稀疏特征和密集特征

在机器学习中,特征是指对象、人或现象的可测量和可量化的属性或特征。特征可以大致分为两类:稀疏特征和密集特征。 稀疏特征 稀疏特征是那些在数据集中不连续出现的特征,并且大多数值为零。稀疏特征的示例包括文本文档中特定单词的存在或不存…

高性能 Message ToJavaBean 工具 【easy.server.mapper】

easy.server.mapper 介绍 后端开发中&#xff0c;消息转换常见问题 Map 中的数据 转换成实体Bean数组 中的数据 转换成实体BeanServet 中的 param 转换成实体Bean 以上的三个问题是最常见的消息转换困扰。 以Map 举例 常见做法是 手动转换 Map<String,Object> da…

stm32f407探索者开发板(二十三)——定时器中断实验

文章目录一、通用定时器知识回顾1.1 时钟的选择1.2 内部时钟的选择1.3 计数器模式二、常用寄存器和库函数配置2.1 计数器当前值寄存器CNT2.2 预分频寄存器TIMx_PSC2.3 自动重装载寄存器&#xff08;TIMx_ARR)2.4 控制寄存器1&#xff08;TIMx_CR1&#xff09;2.5 DMA中断使能寄…