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

文章目录

  • 1. 冯诺依曼体系结构
  • 2. 为什么要存储器(内存)?作用是什么?
  • 3. 数据流向分析

这篇文章,我们来认识一下冯诺依曼体系结构

1. 冯诺依曼体系结构

我们常见的计算机,如笔记本;我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系

在这里插入图片描述

那我们接下来就来分析一下这个体系结构:

首先输入设备比如我们所熟悉的键盘、话筒、摄像头、网卡、磁盘等,就是输入设备。
那输入设备的作用是什么呢?
🆗,计算机呢本质其实就是来计算和处理数据的,那既然是计算和处理数据的,那我们首先要把数据给计算机啊。
那怎么给?
输入设备就是用来给计算机输入数据的。
那计算机拿到数据,进行处理和计算之后,要把结果反馈给用户啊。
所以除了输入设备,还需要有输出设备。
输出设备比如显示器、磁盘、网卡,声卡等。
有些东西它既是输入设备也是输出设备。
那计算机本质是要计算和处理数据嘛,所以肯定要有CPU(中央处理器),CPU是计算机的大脑,负责解释并执行计算机程序中的指令,从而对数据进行各种操作和处理。

那上面说的这些都好理解,但是我们看图里面还有一个存储器,其实就是我们平时所说的内存

在这里插入图片描述

2. 为什么要存储器(内存)?作用是什么?

那为什么还需要有内存呢?

按我们上面的分析,输入设备把数据喂给计算机,然后CPU进行计算处理,最后输出设备把结果展示给用户。
那还有一个内存,它的作用是啥啊?

那下面我来给大家解释一下:

这些输入输出设备呢也叫做外设,即外围设备,而外设一般是比较慢的。
比如说磁盘,磁盘相对于内存是比较慢的。
所以如果没有内存的话
在这里插入图片描述
就是这样,这样当然也是可以的,但这样会存在什么问题呢?
🆗,上面说了外设的速度是很慢的,而CPU是非常快的。
那像这样CPU直接和外设交互,会怎么样呢?
大家有没有听过木桶原则在这里插入图片描述
就是说一个水桶无论有多高,它盛水的高度取决于其中最低的那块木板
那这里也是同样的道理,CPU速度很快,而外设非常慢,那这时整体的速度就会以外设为主,就会导致计算机的速度非常慢。

那为了解决这个问题,就引入了内存:

内存的速度比外设是快很多的,当然它没有CPU快。
而内存呢它是可以临时存储数据的,比如当时CPU在处理A任务,与此同时就可以把后面的B任务放到内存,然后A任务处理完就可以直接处理B了。
所以有了内存的存在,我们可以对数据进行预加载,那CPU后续进行数据处理的时候,就不需要再访问外设了,可以直接从CPU拿数据。
那计算机整体的效率就不再以外设为主,而是以内存为主了。
内存的快速访问速度使得CPU可以高效地进行数据处理
所以可以认为,内存的引入就是为了解决CPU和外设速度不匹配的问题。

那从这里我们也能得出第一个结论:

在数据层面,CPU一般是不直接和外设进行沟通的,而只和内存打交道,从内存获取数据,然后处理结果再写回内存。

那与此同时,我们还能理解这样一个问题:

我们平时写的C/C++的代码,它在编译链接之后生成一个可执行程序,其实就还是一个文件,那文件是存在磁盘上的,磁盘呢就是一种外设。
那大家在之前学习C/C++的过程中,可能会听过这样的话,就是一个程序想要运行起来,必须先加载到内存,然后才能被运行。
那为什么呢?
原因在于CPU要去执行我们可执行程序里的二进制的机器指令,只会从内存去获取,因为体系结构就是这样的。所以我们的程序必须先加载到内存,才能被运行。

简单总结一下:

截至目前,我们所认识的计算机,都是有一个个的硬件组件组成:
输入单元:包括键盘, 鼠标,扫描仪, 写板等
中央处理器(CPU):含有运算器和控制器等
输出单元:显示器,打印机等
关于冯诺依曼,要强调的几点:
这里的存储器指的是内存
不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
一句话,输入输出设备都只能直接和内存打交道

对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上

3. 数据流向分析

那大家来思考一个问题,在硬件层面,单机和跨主机之间的数据流是如何流向的?

我们只要把硬件层面搞清楚,那软件是脱离不了硬件的,软件的很多行为我就也可以尝试解释了

首先第一种场景比如我在电脑上用某个音乐软件播放音乐:

那我们双击应用图标打卡它的时候,这个客户端软件就会被加载到内存里面,然后就被CPU执行,就呈现出我们所看到的图形化界面;当我们点击播放的时候呢,它又会通过网卡把网络上的音乐的数据输入给计算机,然后还是先加载到内存里,然后CPU对这些数据进行解析处理,然后展示给用户(CPU把处理后的结果写回内存,然后输出设备展示给用户),比如如果某首歌需要VIP那它通过外设播放一会就会停止播放,提示你需要开VIP。

我们看到它其实就是按照冯诺依曼体系结构去走的。

那如果现在你和你的朋友在电脑上通过QQ在聊天,你给他发送一条消息,请问在这个过程中数据是如何在体系结构中流动的?

那首先,你和你的朋友的电脑都遵循冯诺依曼体系结构
在这里插入图片描述
我们这里先不考虑网络。
那首先你发消息的时候就是通过键盘这个输入设备把信息输入到内存,然后CPU对内存的数据进行计算处理,处理的结果写回内存,然后通过输出设备显示,所以你自己也能看到你发的消息。
那输出设备除了把你发的消息展示到你电脑的显示器上之外,还通过另外一个输出设备——网卡发送到网络上(网络上如何传输我们先不管),然后你朋友的电脑就通过网卡(这里又作为输入设备)接收到这些消息,然后同样的,在你朋友的电脑上,它的输入设备把这些信息数据加载到内存里,然后CPU获取并进行相应的处理,再写回内存,由输出设备获取并通过输出设备(显示器)展示,对方也就看到了你发的消息。

所以呢,在数据的流向上:

我们能体会到,由于底层硬件的结构,数据在流动时必须遵守冯诺依曼体系结构进行流向。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧工地管理系统平台软件源码

智慧工地系统围绕工程现场人、机、料、法、环及施工过程中质量、安全、进度、成本等各项数据满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效。 一、面向对象 企 业: 帮助创立初期的公司或团队快速搭建产品的技术平台,加快公司项目开发进…

SpringBoot运维实用篇

SpringBoot运维实用篇 ​ 基础篇发布以后,看到了很多小伙伴在网上的留言,也帮助超过100位小伙伴解决了一些遇到的问题,并且已经发现了部分问题具有典型性,预计将有些问题在后面篇章的合适位置添加到本套课程中,作为解…

API接口文档管理系统平台搭建(更新,附系统源码及教程)

简介 这是一款简洁大方的API接口文档管理系统,附系统源码及教程方法。可以轻松管理和使用API接口。 安装步骤 打开config/database.php配置数据库信息导入数据库data.sql设置运行目录为/public伪静态设置think PHP后台地址/admin/login.html 账号:adm…

字节一面:说说var、let、const之间的区别

前言 最近博主在字节面试中遇到这样一个面试题,这个问题也是前端面试的高频问题,作为一名前端开发工程师,熟练掌握js是我们的必备技能,var、let、const之间的区别我们也得熟练掌握,博主在这给大家细细道来。 &#x1f…

SQL优化--排序优化(order by)

Using filesort : 通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫 FileSort 排序。 Using index : 通过有序索引顺序扫描直接返回有序数据&#xff0c…

基于SSM+Vue的校园教务系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

振弦采集仪和传感器形成完整链条的岩土工程解决方案

振弦采集仪和传感器形成完整链条的岩土工程解决方案 振弦采集仪和传感器是岩土工程领域中非常重要的两个设备,它们可以形成一个完整的监测系统,用于测量和记录土体或岩石结构的振动和应力等关键参数。该方案的实现可以提供有力的支撑,从而确…

SOAP WebService 发布服务成功,但是访问404

原因 我这里是出在路由问题,因为一般我们都会配置WebServiceConfig,WebServiceConfig里又会定义ServletRegistrationBean,用于将一个Servlet注册到Web应用程序中,这里会配置上路径,如下: 但是项目有可能在…

动手学深度学习_个人笔记01_李沐(更新中......)

序言 神经网络——本书中关注的DL模型的前身,被认为是过时的工具。 深度学习在近几年推动了CV、NLP和ASR等领域的快速发展。 关于本书 让DL平易近人,教会概念、背景和代码。 一种结合了代码、数学和HTML的媒介 测试深度学习(DL&#xf…

【Redis】Lua脚本在Redis中的基本使用及其原子性保证原理

文章目录 背景一、Eval二、EvalSHA三、Redis 对 Lua 脚本的管理3.1 script flush3.2 script exists3.3 script load3.4 script kill 四、Lua在Redis中原子性执行的原理 背景 Lua 本身是一种轻量小巧的脚本语言,在Redis2.6版本开始引入了对Lua脚本的支持。通过在服务…

Hadoop源码阅读(二):DataNode启动

说明: 1.Hadoop版本:3.1.3 2.阅读工具:IDEA 2023.1.2 3.源码获取:Index of /dist/hadoop/core/hadoop-3.1.3 (apache.org) 4.工程导入:下载源码之后得到 hadoop-3.1.3-src.tar.gz 压缩包,在当前目录打开Pow…

【算法|虚拟头节点|链表】移除链表元素

Leetcode203 移除链表元素 题目描述: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出&#xf…

通过curl命令分析http接口请求各阶段的耗时等

目录 一、介绍二、功能1、-v 输出请求 响应头状态码 响应文本等信息2、-x 测试代理ip是否能在该网站使用3、-w 额外输出查看接口请求响应的消耗时间4、-o 将响应结果存储到文件里面5、-X post请求测试 (没测成功用的不多) 一、介绍 Curl是一个用于发送和接收请求的命令行工具和…

使用Python CV2融合人脸到新图片--优化版

优化说明 上一版本人脸跟奥特曼图片合并后边界感很严重,于是查找资料发现CV2还有一个泊松函数很适合融合图像。具体代码如下: import numpy as np import cv2usrFilePath "newpic22.jpg" atmFilePath "atm2.jpg" src cv2.imrea…

基于matlab实现的额 BP神经网络电力系统短期负荷预测未来(对比+误差)完整程序分享

基于matlab实现的额 BP神经网络电力系统短期负荷预测 完整程序: clear; clc; %%输入矢量P(15*10) P[0.2452 0.1466 0.1314 0.2243 0.5523 0.6642 0.7105 0.6981 0.6821 0.6945 0.7549 0.8215 0.2415 0.3027 0; 0.2217 0.1581 0.1408 0.23…

【JVM 内存结构丨堆】

堆 定义内存分配特点:分代结构对象分配过程Full GC /Major GC 触发条件引用方式堆参数堆内存实例 主页传送门:📀 传送 定义 JVM(Java Virtual Machine)堆是Java应用程序运行时内存管理的重要组成部分之一。堆内存用于存储Java对象…

深度思考ES面经

1 推荐文章 2万字详解,吃透 Elasticsearch 2 什么是倒排索引,为什么这么叫? 倒排索引(Inverted Index)是一种为快速全文搜索而设计的数据结构。它被广泛应用于搜索引擎,其中 Elasticsearch(简…

CVPR2023 RIFormer, 无需TokenMixer也能达成SOTA性能的极简ViT架构

编辑 | Happy 首发 | AIWalker 链接 | https://mp.weixin.qq.com/s/l3US8Dsd0yNC19o7B1ZBgw project, paper, code Token Mixer是ViT骨干非常重要的组成成分,它用于对不同空域位置信息进行自适应聚合,但常规的自注意力往往存在高计算复杂度与高延迟问题。…

软文推广在企业中运用的优势有哪些?

随着互联网的发展,越来越多的企业在推广方式上已经逐渐脱离于传统媒体,软文推广已经成为了企业宣传的主要方式。也有不少企业来找盒子进行推广,接下来媒介盒子就来告诉大家,企业进行软文推广的优势有哪些? 成本低 传统…

ELK 企业级日志分析系统 ELFK

目录 一、概述 二、组件介绍 2.1、ElasticSearch 2.2、Kiabana 2.3、Logstash 2.4、可以添加的其它组件:Filebeat 2.5、缓存/消息队列(redis、kafka、RabbitMQ等) 2.6、Fluentd 三、ELK工作原理 四、实例演示 1.ELK之 部署"E&q…