【Linux系统编程】冯 • 诺依曼体系结构(什么是冯 • 诺依曼体系结构?冯 • 诺依曼体系结构如何应用?)

目录

一、前言

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

💦 冯 • 诺依曼体系结构的发展推导

 💦冯 • 诺依曼体系结构的5大部件

⭐输入和输出设备

⭐存储器 

⭐中央处理器(CPU)

 💦冯 • 诺依曼体系结构的细节问题

 ⭐内存的重要性

 ⭐为什么执行我们的程序要先加载到内存?

 ⭐开机的时候为什么要加载操作系统呢?

三、 冯 • 诺依曼体系结构的应用

 💦理解数据在网络中的流动

四、总结

五、共勉 


一、前言

        在学习了【Linux基础】之后,我们将开启【Linux系统编程】的学习。既然是系统编程,那我们首先肯定需要了解---系统。系统有怎样的体系结构(冯 • 诺依曼体系结构),系统如进行软硬件资源管理(操作系统)。只有了解系统,才能够更好的掌握 ---- 系统编程

       所以本次博客将从-----冯 • 诺依曼体系结构将起!!
 

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

想要了解 冯 • 诺依曼体系结构 就需要掌握以下几点:

  1. 冯 • 诺依曼体系结构是如何发展的
  2. 冯 • 诺依曼体系结构有哪几部分组成
  3.  冯 • 诺依曼体系结构的细节问题

💦 冯 • 诺依曼体系结构的发展推导

        计算机的作用就是为了解决人的问题,而要解决问题,首先需要将数据或是问题输入到计算机当中,所以计算机必须要有输入设备计算机解决完问题后还需要将计算结果输出显示出来,所以计算机必须要有输出设备。计算机通过输入设备得到数据,数据在计算机当中进行一系列的算术运算和逻辑运算后,通过输出设备进行输出,于是就得到了以下流程图。

        但是计算机当中只有算术运算功能和逻辑运算功能是不够的,还需要有控制功能,控制何时从输入设备获取数据,何时输出数据到输出设备等。对应到C语言当中,算术运算就完成一系列的加减乘除,而逻辑运算就对应于一系列的逻辑与逻辑或等,控制功能就对应于C语言当中的判断、循环以及各个函数之间的跳转等等。


       而我们后人就将这个具有算术运算功能、逻辑运算功能以及控制功能的这个模块称为中央处理器,简称CPU。

        但是输入设备和输出设备相对于中央处理器来说是非常慢的,于是在当前这个体系整体呈现出来的就是,输入设备和输出设备很慢,而CPU很快,根据木桶原理,那么最终整个体系所呈现出来的速度将会是很慢的。

       所以当前这个体系结构显然是不合适的于是我们就不让输入设备和输出设备直接与CPU进行交互,而在这中间加入了内存。(为什么要加入内存?)

        内存有个特点就是,比输入设备和输出设备要快很多,但是比CPU又要慢。现在内存就处于慢设备和快设备之间,是一个不快也不慢的设备,能够在该体系结构当中就起到一个缓冲的作用。

        现在该体系的运行流程就是:用户输入的数据先放到内存当中,CPU读取数据的时候就直接从内存当中读取,CPU处理完数据后又写回内存当中,然后内存再将数据输出到输出设备当中,最后由输出设备进行输出显示。

于是就形成了最终的冯诺依曼体系结构。

 💦冯 • 诺依曼体系结构的5大部件

         在冯诺依曼体系结构主要由五种设备组成,分别是:输入设备、存储器、运算器、控制器和输出设备,它们各司其职,都做着它们各自的工作。

 ⭐输入和输出设备

 首先要来讲的就是我们能直接接触到的东西,也就是两个输入、输出设备

  • 【输入设备】:向计算机输入数据和信息的设备,是计算机与用户或其他设备通信的桥梁,例:键盘、话筒、摄像头、网卡、磁盘
  • 【输出设备】:是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作,例:显示器、声卡、网卡、磁盘

       对于输入输入设备和输出设备,我们统称为外围设备对于外围设备而言,都比较慢,就比如说【磁盘】,不过虽然它比较慢,但是价格并不贵,三五百块钱就可以买到一块512G的硬盘,贵一点的话可能像固态硬盘价格在900 ~ 1200不等,但是它们都有一个优点就是:存储容量大、可以长久保存数据不丢失!
 

⭐存储器 

         可以看到,对于上面所列举的输入和输出设备中,同时出现的就是网卡和磁盘这两样,我们主要来说说磁盘这个东西。因为我们要通过输入设备将输入都输入到计算机中,那计算机肯定要对这些数据去进行一些处理,此时这些数据肯定是要一直存放在计算机中的,所以肯定要有东西将我们输入到计算机中的数据都保存起来这个时候就需要使用到一些存储器了,此时我们就要来讲讲存储器了,它分为内存和外存,不过一般我们都称之为内存

  • 【内存】: 用于存放电脑运行中的原始数据、中间结果以及指示电脑工作的程序,断电后会丢失容量小,速度快
  • 【外存】:用来存放一些需要长期保存的程序或数据,断电后也不会丢失,容量比较大,但存取速度慢

注意: 这里存储器只是内存,不包括外存。

 ⭐中央处理器(CPU)

        既然可以存储我们输入进去的数据了,那要如何去处理这些数据呢?此时就需要使用到中央处理器(CPU)

  • 【运算器】:计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算等等
  • 当运算器运算完成之后,就会经过输出设备将处理后的结果交给内存,再由内存展现给用户,这就是用户与计算机之间的交互过程

        不过上面这些从输入到存储到计算,再到输出的过程,计算机去如何去执行的呢?靠什么去控制这种种行为?此时就要使用到控制器了

  • 【控制器】:控制器也是一个硬件,虽然外设中央处理器数据上没有交互但并不代表它俩就没有交互。前面得知输入设备会把数据预装载到内存,从而和cpu进行交互,但是你怎么知道所有数据都被预装载了呢,针对没被预装载的数据,中央处理器就要和外设进行交互协商,而这个操作就是由控制器完成的,从而将数据尽可能加载到内存,或把数据从内存加载到外设。


        对于上面的运算器和控制器,我们将其合称为【中央处理器】,即cpu。它是计算机的大脑、也是核心部分,很多控制信号都要经过CPU才能执行
 

 💦冯 • 诺依曼体系结构的细节问题

       对于上面讲得大部分都是理论,可能会比较难懂一些,本小节我将从硬件层面看软件,使用硬件的行为来解释软件

  • 当我们使用C/C++编写完代码后都会编译生成可执行程序,对于这个可执行程序,其实就是一个文件,那既然是文件的话,它就存放在磁盘中,对于磁盘我们上面说了,就是一种外设。那此时就引出了下面这几个问题。

 ⭐内存的重要性

        经过我上面这一番讲解,相信读者对冯诺依曼的基本体系有了一个概念了,不过一定会有同学提出这样的疑问:既然计算机只是从外界接收数据,然后处理我们输入的数据再把结果反馈给我们,那也可以不用存储器呀!

  • 在上一小节中,我们讲到了输入设备输出设备,它们统称为外围设备,对于像【磁盘】这种外围设备来说虽然它有着大容量的内存,但是读写速度却非常慢,机械硬盘读写速度平均60---80M每秒;固态硬盘不同品牌型号之间,平均大约在150---300M每秒

  • 但是对CPU来说,也就我们上面说到过的运算器 + 控制器,它的运算速度读者可以自行去网上看看,那比磁盘不知道要快出多少倍了。那一个写入很慢,一个读入很快,真的可以兼容吗?


【木桶效应】:

  • 什么叫木桶效应呢,也就是这个木桶的承水量不取决于木桶中最长的那块板,而取决于最短的那块板
  • 对应我们上面所说磁盘与CPU:一个输入,一个读取;一个慢,一个快,虽然二者的维度不同,但计算机还是会按照慢的那个来执行,也就是说整体的效率就以外设为主了


那这一个快。一个慢,该怎么办呢?


        此时就还是需要使用到冯诺依曼体系结构中的【存储器】,也就是我们俗称的内存因为对于内存这个东西,它虽然比CPU来得慢一些,但是却比磁盘快多了,它们三者的速度大概可以像下面这样对比

  • CPU —— 纳秒(ns)
  • 内存 —— 微秒(us)
  • 外设 —— 毫秒(ms)
  • 可以看到CPU是纳秒级别的速度,但外设却是毫秒级别的,它们之间要进行交互的话还是太Crazy了🤣所以就有了内存这个东西,可以作为中介


 

【那有了内存后则怎么使用呢?】:

  • 因为有了内存的存在,虽然它掉电易失,但还是局部短时间的存储,因此外设可以将数据暂存到内存中,此时,CPU后面想要去处理这些数据的话直接去内存中拿就可以了,无需再与外设进行交互造成不兼容的问题


CPU中不是有个叫寄存器的东西吗?也可以起到临时存储的功能,为什么不直接用它呢?
 

  • 因为寄存器太贵了,只要是贵的东西就不会让我们广泛去使用。内存可以适配和外设之间的效率,既能够完成我们需要的功能,而且性能还不怎么差,它便宜。


【总结一下】:
        CPU的速度是很快的,外设的速度是很慢的,因为有了内存,CPU以后在进行数据计算的时候,根本不需要访问外设了,而只要直接伸手向内存要就可以了。
 

 ⭐为什么执行我们的程序要先加载到内存?

         我们自己的代码和数据、编译好的指令,是要由CPU去执行的,在上一小节我们讲到CPU它只会伸手向内存要数据,而我们的可执行程序是一个文件,文件存放在磁盘中,所以这就解释通了为什么我们的程序要先加载到内存中,因为CPU只会去内存中读数据,体系结构决定了这一切!

 ⭐开机的时候为什么要加载操作系统呢?

        也是同样的道理,操作系统的底层也是各种指令和数据,这些都是需要CPU去解析的,它解析完了操作系统才能正常运行起来,但是CPU只能到内存中去拿数据,所以在开机的时候把操作系统率先加载进内存来CPU就方便很多了,不需要再和外设去进行交互。

三、 冯 • 诺依曼体系结构的应用

        清楚了整个冯诺依曼体系结构,知道了大部分的计算机都是基于这种结构,那么现在我通过一个场景带你带你真实地体会一下这种体系结构在实际中的应用 

 💦理解数据在网络中的流动

        现在你在上网,使用QQ向你的朋友发送了一句“在吗”,那此时这个数据在网络中进行流动的呢?假设你们的电脑都是基于冯诺依曼体系结构,需要有这么一个输入、处理、输出这么一个流程

  • 下面是我画的一个流程图,可以看到就是两个冯诺依曼体系结构中间使用网络进行了互连,在这里我们先不考虑网络的问题,只谈数据是如何在各个器件中流动的

流程分析:

  •  当你使用输入设备,比如:键盘,在QQ的聊天框中发送了一句“在吗”的时候,这条信息就被读取到了计算机内部,被暂时存放在了【内存】中,接着CPU就会到内存中去读取数据,解析里面的指令然后由【运算器】进行运算,接下去通过【控制器】将这些信息由【输出设备】,例如:网卡,转发到网络中进行传输,网络内是如何传输的这里就不细讲了,涉及要一些 网络协议 相关的内容
  • 因为你朋友的电脑也是基于冯诺依曼体系的,所以也会存在【输入设备】,例如:网卡,将网络中传输过来的数据输入到它的计算机中,也是将其存放到内存中,然后一样CPU去内存中拿出这些数据再进行处理,转换成我们可以识别的样子,通过【输出设备】,例如:显示器,将消息打印在你朋友的屏幕。之后你的朋友再发送一句“在的”,也是同理经过这样的传输,继而你们就实现了相互通信

四、总结

        以上就是有关冯诺依曼体系结构的叙述,大多以概念为主,配合图示进行理解,清楚五大部件各自的作用,它们之间是如何关联的。不过最重要的一点还是在于CPU是直接与内存进行交互的,因为任何数据都要通过输入设备先存放到内存中,而不是直接与CPU进行交互
 

五、共勉 

        以下就是我对【Linux系统编程】冯 • 诺依曼体系结构的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对【Linux系统编程】操作系统的理解,请持续关注我哦!!!

 

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

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

相关文章

《数据结构、算法与应用C++语言描述》-二叉树与其他树-二叉树的C++实现-设置信号放大器与并查集问题

二叉树和其他树 可编译运行程序见:Github::Jasmine-up/Data-Structures-Algorithms-and-Applications/_23BinaryTree 定义 树 定义 11-1 一棵树 t是一个非空的有限元素的集合,其中一个元素为根(root),其余的元素&a…

Python 测试框架 Pytest 的入门

简介 pytest 是一个功能强大而易于使用的 Python 测试框架。它提供了简单的语法和灵活的功能,用于编写和组织测试代码。 1、简单易用:pytest 的语法简洁明了,使得编写测试用例更加直观和易于理解。它使用 assert 语句来验证预期结果&#x…

Java进阶(第二期):package 包 抽象类和抽象方法 接口的实现 多态的实现 综合继承、接口、多态的使用。

2023年11月26日20:11:11 文章目录 Java进阶(第二期)一、package包的概念二、抽象类和抽象方法(abstract)2.1 使用2.1 抽象类注意事项 三、接口3.1 接口的定义格式3.2 接口成员特点3.3 类和接口的关系3.4 接口和抽象类的对比 四、多态4.1 多态的前提条件4…

4G模块(EC600N)通过MQTT连接华为云

目录 一、前言 二、EC600N模块使用 1.透传模式 2.非透传模式 3、华为云的MQTT使用教程: 三、具体连接步骤 1、初始化检测 2、打开MQTT客户端网络 3、创建产品 4、创建模型 5、注册设备 6、连接客户端到MQTT服务器 7、发布主题消…

2023-11-26 事业-代号s-跨境物流-记录

摘要: 2023-11-26 事业-代号s-跨境物流-记录 跨境物流: 【结论】 中小卖家(最低适合1个人经营的卖家)首选以下两种物流,目前已知的是以下两种,后续有新的发现再更新。 1、云途物流(YunExpress)&#xff…

2016年五一杯数学建模A题购房中的数学问题解题全过程文档及程序(采光与房款)

2016年五一杯数学建模 A题 购房中的数学问题 原题再现 随着现代社会经济的快速发展,房地产成为国家经济发展中重要的经济增长点之一。为了充分利用楼房建设的土地面积,开发商经常会选择建筑高层住宅。在购买住房时,影响消费者选择购房的因素…

企业文档文件管理软件推荐:提升管理效率与数据安全性

Zoho WorkDrive企业网盘是一种高效的文件管理工具,它不仅可以为组织搭建统一、高效、安全、智能的内容管理体系,还能够提供大规模支撑、海量数据处理、非结构化数据治理、智能挖掘与洞察等服务能力。通过这些服务,企业可以更好地管理和利用其…

Linux 面试题(一)

目录 1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 2、怎么查看当前进程?怎么执行退出?怎么查看当前路径? 3、怎么清屏?怎么退出当前命…

更改MacBook壁纸,有时可以带来不一样的感觉,特别是动态壁纸

在我看来,买一台新的MacBook最棒的部分就是挑选一张完美的桌面壁纸,为我的新工作伙伴定下基调。有时,在真正更换壁纸之前,我会花一整天的时间,仔细决定我的新笔记本电脑到底是什么样子,而且由于Macbook如此…

使用项目管理工具进行新媒体运营管理的策略与方法

使用Zoho Projects项目管理工具,新媒体运营可轻松驾驭从策划选题、撰写到排期发布的全流程。运用项目管理工具对新媒体运营进行精细化管理,助力团队更高效地规划、执行和追踪各项任务与活动。 以下是运用项目管理工具管理新媒体运营的妙招: 1…

软件测试面试题之如何进行项目介绍

邯郸网上银行系统旨在为企业搭建安全便捷的账户管理,资金汇化及投资服务通道,提升企业财富与价值增值它主要包含首页、我的账户、信用卡、邮储业务、投资理财、转账汇款、个人贷款等模块。 个人贷款一般有抵押贷款,和信用贷等,房…

【算法萌新闯力扣】:回文链表

力扣题目:回文链表 开篇 今天是备战蓝桥杯的第23天。我加入的编程导航算法通关村也在今天开营啦!那从现在起,我的算法题更新会按照算法村的给的路线更新,更加系统。大家也可以关注我新开的专栏“算法通关村”。里面会有更全面的知…

IDEA2023版本创建Sping项目只能勾选17和21,却无法使用Java8?(已解决)

文章目录 前言分析解决方案一:替换创建项目的源方案二:升级JDK版本 参考文献 前言 起因 想创建一个springboot的项目,本地安装的是1.8,但是在使用Spring Initializr创建项目时,发现版本只有17和21。 在JDK为1.8的情况下…

岁月随笔-穿拖鞋的汉子

时间如白驹过隙般,转眼间2023年也只剩下最后的40天。汉子我拿出年初自己定的目标,立下的Flag,恍恍惚若昨天发生,不禁让人感慨万千。 其实最近自己遇到了很大的困惑,也导致了断更了一个月。自己逐渐摸不清自己的定位啦…

由走“贸工技”的联想联想到传统OEM,带给了自己那些思考?

2022年1月16日,自己来到魔都的第1597天,这城市还是保持着相似的容颜,而自己却悄悄的起了变化。 以前对时间概念其实不是特别敏感,感觉自己有大把的时光可以浪费(虽然知道死亡是个永远无法逃避的话题)&#…

Flink-简介与基础

Flink-简介与基础 一、Flink起源二、Flink数据处理模式1.批处理2.流处理3.Flink流批一体处理 三、Flink架构1.Flink集群2.Flink Program3.JobManager4.TaskManager 四、Flink应用程序五、Flink高级特性1.时间流(Time)和窗口(Window&#xff0…

Oracle 中的操作符

1.union:对两个结果集进行并集操作&#xff0c;不包括重复行&#xff0c;同时进行默认规则的排序&#xff1b; SELECT * FROM emp WHERE sal < 1500 UNION SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000 order by 1 2.union All&#xff1a;对两个结果集进行并集操…

WebSocket协议测试实战

当涉及到WebSocket协议测试时&#xff0c;有几个关键方面需要考虑。在本文中&#xff0c;我们将探讨如何使用Python编写WebSocket测试&#xff0c;并使用一些常见的工具和库来简化测试过程。 1、什么是WebSocket协议&#xff1f; WebSocket是一种在客户端和服务器之间提供双向…

Prove that exponential function f(x)=e^x is not Lipschitz on R

https://math.stackexchange.com/questions/3980014/prove-that-ex-is-not-lipschitz-on-r https://math.ucr.edu/~res/math205A-2014/lipschitz2.pdf