【Linux】冯诺依曼体系结构以及操作系统的初步认知

news2024/10/7 13:19:06

🏖️作者:@malloc不出对象
⛺专栏:Linux的学习之路
👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈
在这里插入图片描述

目录

    • 前言
    • 一、冯诺依曼体系结构
    • 二、操作系统
    • 三、计算机软硬件体系结构


前言

本篇文章讲解是冯诺依曼体系结构以及操作系统的初步认知。

一、冯诺依曼体系结构

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

在这里插入图片描述

截至目前,我们所认识的计算机,都是有一个个的硬件组件组成:

输入单元:包括键盘, 鼠标,扫描仪, 写板等
中央处理器(CPU):含有运算器和控制器等
存储器:根据冯诺依曼体系我们这里的存储器一般是指的内存,因为内存相对来说速度较磁盘快,价格适中。
输出单元:显示器,打印机等

输入设备:输入、输出设备被称之为外围设备,外设一般来说都会比较慢一些,以磁盘相对内存为例,磁盘是比较慢的。

接下来我有一个问题:为什么我们的外设不直接与CPU进行交互呢?我们的数据不就是要经过CPU进行计算之后,流入到输出设备吗??在中间加上一个内存不是更多此一举??

首先,我们要知道我们的外设的读取速度是非常慢并且存储着大量数据,如果将我们的外设直接与CPU进行交互,因为我们的CPU是读取速度是非常快的,如果仅仅只有外设与CPU进行沟通,那么效率会非常的低。这一点可以通过我们的木桶原理来解释,外设就决定了整体的效率!!也许你之前或许还听过"千万不要让CPU打盹",这是因为CPU资源是非常昂贵的,如果采用外设直接与CPU进行交互的话,那么CPU大部分的时间是空闲的,这简直就是暴殇天物,所以为了能充分利用CPU资源我们肯定会想出一系列办法让它发挥出它的最大价值!!挖空心思让计算机硬件发挥所有的潜能!!所以现在我们使用的PC就被打造成一款性价比极高的计算机了!!

为了解决这个问题,我们在外设和CPU之间引入了内存这种存储器系统,它的速度比外设要快的多,但是比CPU要慢,引入内存我们可以大大缓解木桶原理带给我们的效率低下问题!!内存临时存储数据并且它的读取速度还不慢,CPU在计算此时从内存中读取的数据时,同时我们可以将外设中的数据加载到内存中,这样CPU在计算完当前任务后,又可以持续从内存中读取数据进行计算,这样就充分利用了CPU的资源!!有了内存的存在我们可以对数据进行预加载,CPU以后在进行数据计算时,根本不需要访问外设,而是直接伸手向内存拿数据进行计算就可以了!!


Q:在简单的了解了冯诺依曼体系结构后,接下来我们继续来回答一个问题:为什么我们的程序在运行之前必须加载到内存中?

一个最经典的例子是我们的源文件在经过四个阶段形成可执行程序之后,在Linux中我们需要通过./可执行程序来运行这个程序,那么首先可执行程序是什么?它其实也就是一个普通文件,而为什么我们的程序在运行之前必须加载到内存中,经过上述问题的分析我们知道这是由冯诺依曼体系决定的!!

CPU在进行计算之前,磁盘中对应需要计算的数据需要提前加载到内存中,如果不提前将数据加载到内存中,那么我们的CPU此时就是空闲的,那么我们的整体效率就得不到提升!!例如,我们在开机时,磁盘的数据就会被提前加载到内存中,这样我们要进行计算时,我们的CPU就直接从内存中读取数据,不至于处于空闲状态!!

结论1:在数据层面,CPU一般不与外设直接沟通,而是直接只和内存打交道。


对冯诺依曼的理解不能停留在概念上,要深入到对软件数据流理解上,请解释从你登录上qq开始和某位朋友聊天开始数据的流动过程;从你打开窗口,开始给他发消息,到他的到消息之后的数据流动过程?
对于我们的用户来说,你可能觉得这是一个非常简单的过程,不就是发送一个消息嘛,然后对方就能看到消息。其实这个过程是非常复杂的,那么现在我们暂且只考虑在硬件层面进行数据的流动。

首先我们的QQ程序会提前加载到内存中, 在我们与某位朋友聊天时,我们发送一个"你好",这其中会进行什么处理呢?我们的消息首先会被加载到内存中,然后CPU进行计算处理将结果返回到内存中,内存再将结果交给显示器和网卡,此时的显示器也就是在我们自己的对话框中可以看到我们的信息,网卡中保存着"你好"的信息,经过网络运输之后,朋友的网卡接收到了数据,然后此数据加载到内存中,CPU进行计算之后返回给内存,内存将结果最后交给我们的显示器,朋友就能在显示器看到我发送给他的消息了。

在这里插入图片描述

这是由于硬件决定了我们的数据在流向时必须遵守我们的冯诺依曼体系结构。

结论2:在数据层面,外设只会与内存打交道。


关于冯诺依曼体系结构的理解就到这里了,对于我们的输入设备和存储器来说,数据会预加载到我们的内存中,那么请问我们的文件数据那么多,你预加载哪一部分的数据?你预加载过程中内存不够了怎么办??CPU是如何快速找到预加载的文件??等等一系列问题,这些硬件能够处理吗?

答案是不能,硬件无法处理这些工作,此时我们就需要一款软件来进行管理了,而这款软件就是我们接下来要讲的操作系统!!

二、操作系统

Q:操作系统是什么?

简单来说,操作系统是一款进行软硬件资源管理的软件。


由于操作系统这个概念非常的广泛,为了让大家更好的理解它,接下来我们将来感性谈谈操作系统。这里以学校为单位我们进行简化一下,一个学校有三类人,校长、辅导员、学生。

我们先来理解一下人的各种行为,首先我们人在行动之前有两步,第一步是决策,第二步是执行。就好比下课了我就在心里想着要吃什么,这是决策,我下课了之后去食堂吃我上课时想的,这是执行!!那么作为一个管理者它的主要行为是什么?决策or行为? 对于一个管理者来说,最关键的决策,他通常是充当一个出谋划策的角色,然后让下层去执行它的决策。那么对于一个学校来说,校长就是管理者。

Q:我们在日常生活中也知道我们一般听从的是辅导员的安排,校长可能并没有直接与学生进行沟通,甚至在学校你可能都没有见过校长,但是你不可否认校长把这个学校管理的井井有条!!why?

这也就说明了其实管理者与被管理者是不需要直接进行沟通的!!

Q:管理者与被管理者未进行直接的沟通,他是如何管理学生的呢?

校长知道你的成绩,学号,姓名,年龄等信息就可以对你进行管理!!校长下达指令给辅导员,辅导员将校长的命令传达下去,交由我们的学生去执行。
管理的本质:对被管理对象的数据做管理!!

Q:那么管理者是如何拿到被管理者的数据呢?

辅导员交给你的,辅导员把他所管辖范围的学生信息交给了校长,校长拿到你的数据,然后就可以对你进行管理了。

Q:校长要管理的学生对象这么多,那么他是如何进行数据管理的呢?

虽然校长要管理学生的数据很多,但是每个学生的属性都是一样的,都有学号、年龄、姓名、成绩等信息;这时候我们就能采用一个结构体来记录学生的各项信息,这个描述的过程就做好了,此时每个学生就是一个结构体对象。

那么如何对这么多学生进行组织?比如开除这个学生,开除的本质是什么?将这个学生的信息移除,如何移除? 首先我们要找到这个学生然后再将它的信息从我们的数据库中移除。

我们可以使用一种数据结构将所有的学生组织起来,例如我们可以使用链表,在结构体中多定义一个结构体指针next来指向下一个学生,每个学生就相当于一个节点。所以本质上校长对学生进行管理就是对链表进行增删查改的操作!!!

总结:管理的本质:先描述,再组织。 就像我们做任何事一样,首先我们要有一个大体的思路,然后再想办法完成这个特定功能。


上述对于硬件的管理的建模就已经完成了,校长就充当了管理者的身份 -->操作系统 ,辅导员充当执行决策的身份 --> 硬件驱动, 学生充当参与执行的身份 -->硬件 。

Q:操作系统为什么对软硬件资源进行管理呢??

操作系统对下通过管理好软硬件(手段),对上给用户提供良好(安全、稳定、高效、功能丰富等)的执行环境(目的)!!

既然操作系统为用户提供这么好的服务,但是它们真的相信我们吗??

下面我们通过一个场景来解释这个问题:

在这里插入图片描述

我们的银行操作系统为我们提供了更好的服务,但是这并不代表行长会相信我们,相反行长并不相信你,请问银行工作人员会带你到它们的现金仓库取钱吗?

当然不会,因为行长并不信任你,万一你是坏人呢;所以操作系统也是一样,为了自身的安全它会将内部实现细节全部封装起来,用户不能直接访问它!!

那么行长为了保证自身安全性和以及提供良好的服务,行长提供了窗口式服务,用户通过窗口来完成特定功能,在计算机体系结构中它被叫做系统调用接口。

在这里插入图片描述

系统调用在使用上功能比较基础,对用户的要求相对也比较高,它必须非常了解操作系统的内部实现细节,这对于开发者来说无疑增大了难度,所以有心的开发者就对部分系统调用进行适度封装,从而形成了库等,有了库就很有利于更上层用户或者开发者进行二次开发。

三、计算机软硬件体系结构

在这里插入图片描述

我们可以看到计算机软硬件体系结构是采用一种层状的结构来进行表示的,有人说过一句名言:“计算机科学领域的任何问题的可以通过增加一个间接的中间层来解决”。现在看来这句话真的是醍醐灌顶啊,这句话几乎概括了计算机软硬件体系结构的设计要点,整个体系结构从上到下都是按照严格的层次结构设计的。由于这些中间层的存在,使得应用程序与硬件之间保持相对的独立,我们要想实现某种功能只需增加一个间接的中间层,而不对其他中间层造成影响,这就是层次结构带来的好处。不仅是计算机软硬件体系结构是这样的,体系里面的每个组件比如操作系统本身,很多应用程序、软件系统甚至很多硬件结构都是按照这样的层次结构组织和设计的,

在我们初步了解了冯诺依曼体系结构以及操作系统之后,我们对于平常的某些操作这时候要有一个体系的认知了。例如:我们在Linux中执行了一条指令,你以为你仅仅只是执行了一条指令就完了吗?实际上它需要贯穿整个计算机软硬件体系结构才能完成特定的功能!!!这其中的内部细节是非常之复杂的,但操作系统作为计算机体系结构中的最强大脑,它确确实实做到了对用户提供良好的服务,我们不需要了解其中的具体细节就能完成我们所需的功能,对下很好的管理了软硬件资源!!


本篇文章的内容就讲到这里了,如果对于本文有任何疑问或者错处欢迎大家评论区相互交流orz~🙈🙈

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

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

相关文章

HTB靶机010-SolidState-WP

#oscp SolidState.md 靶机IP 10.10.10.51 scan Nmap : ┌──(xavier㉿kali)-[~] └─$ sudo nmap -sSV -T4 -F 10.10.10.51 Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-10 13:14 CST Nmap scan report for 10.10.10.51 Host is up (0.77s latency). Not shown: …

如果你还不知道SAGA,那这篇不容错过!|分布式事务系列(五)

这是分布式事务系列的第五篇,如果之前文章没读请自行前往。精华专题,强烈建议收藏。 ‍本文详细讲解了分布式事务解决方案——SAGA。 点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达 SAGA事务 什么是SAGA事务 SAGA…

使用maven引入第三方jar包以及打包

我们知道,Maven 是通过仓库对依赖进行管理的,当 Maven 项目需要某个依赖时,只要其 POM 中声明了依赖的坐标信息,Maven 就会自动从仓库中去下载该构件使用。但在实际的开发过程中,经常会遇到一种情况:对接第…

《基于智能手机PPG信号处理和机器学习的非侵入式血糖监测系统》阅读笔记

目录 一、论文摘要 二、论文十问 Q1:论文试图解决什么问题? Q2:这是否是一个新的问题? Q3:这篇文章要验证一个什么科学假设? Q4:有哪些相关研究?如何归类?谁是这一课…

单片机GD32F303RCT6 (Macos环境)开发 (十五)—— i2c1采用DMA方式的读写函数

i2c1采用DMA方式的读写函数 1、关于i2c1的DMA的映射如图 2、关于代码的宏定义配置 Application目录的Makefile中 ENABLE_I2C_TEST yes才会编译I2C1的相关代码。 同时修改i2c.h文件,定义I2C1_MODE为I2C1_MODE_DMA,这样i2c1的配置为dma模式。 #define …

Microelectronic学习章节总结(3)-- gate level to physical level design

文章目录 数字逻辑设计的主要流程logic familyCMOSTransistor实现的时序逻辑 PSUDO-NMOSDCVSL(Differential Cascode Voltage Swing Logic)DOMINOC2MOS(Clocked CMOS)TSPC(True Single Phase Clocking) Transistor behaviorCMOS i…

【C生万物】 指针篇 (进级) 00

欢迎来到 Claffic 的博客 💞💞💞 👉 专栏:《C生万物 | 先来学C》👈 前言: 前面已经带大家学习了初级的指针,先回顾一下重点:指针是用来存…

数据库sql语句(视图的创建)

例题: 建表:要注意各表之间的索引联系,建表先后顺序很重要,不然建不了,例如先建dept,在建其他表,先在dept插入数据,再在其他表插入数据 (1) create table …

SW simulation解算器选取

接下来重点介绍以下4种解算器,并对解算器进行实际的计算测试。1)Direct sparse解算器:稀疏矩阵解算器,目前使用最为广泛也是发展最为成熟的解算器,几乎所有的有限元分析软件都有该解算器。它可以用于大多数计算模型,堪…

<IBM> 《HA网卡确认方法》

《HA网卡确认方法》 1 HA IP地址类型2HA IP地址设置原则3 HA网卡日常查看方法3.1 查看hosts文件3.2 查看网卡和IP 4 通过命令方式直接查看5 直接查看HA配置4 HA网卡SMIT查看方法(暂不完整)4.1 根据hosts文件确认IP对应的别名4.2 根据serviceIP确认Persis…

Django SQL注入漏洞分析(CVE-2022-28346)

漏洞简介 Django 在2022年发布的安全更新&#xff0c;修复了在 QuerySet 的 annotate()&#xff0c; aggregate()&#xff0c; extra() 等函数中存在的 SQL 注入漏洞。 影响版本 2.2< Django Django <2.2.28 3.2< Django Django ❤️.2.13 4.0< Django Django &…

白盒测试的静态和动态

白盒测试的静态和动态 静态白盒测试 检查设计和代码 静态测试是指测试非运行部分——检查和审查。白盒测试是指访问代码&#xff0c;能够查看和审查。静态白盒测试实在不执行的条件下有条理地仔细审查软件设计、体系结构和代码&#xff0c;从而找出软件缺陷的过程。有时也称为结…

SpringBoot中@ControllerAdvice/@RestControlAdvice+@ExceptionHandler实现全局异常捕获与处理

场景 在编写Controller接口时&#xff0c;为避免接口因为未知的异常导致返回不友好的结果和提示。 如果不进行全局异常捕获则需要对每个接口进行try-catch或其他操作。 可以对Controller进行全局的异常捕获和处理&#xff0c;一旦发生异常&#xff0c;则返回通用的500响应码与…

洁净环境GMP 要求悬浮粒子 浮游菌 高效过滤器检漏验证所需仪器

lighthouse尘埃粒子计数器 北京中邦兴业是美国lighthouse中国区核心代理服务商&#xff0c;各类型号尘埃粒子计数器均有现货可发。常见尘埃粒子计数器类型&#xff1a;便携式&#xff08;台式&#xff09;、手持式、在线式、液体式。 客户现场 lighthouse浮游菌采样器 北京中…

nginx(七十五)nginx与Vary响应头细节探讨

一 Vary ① nginx与Vary有关联的地方 nginx源码分析处理Vary响应头的逻辑 CORS和缓存 gzip_vary 1) gzip_vary on 如果设置为开启2) 服务器返回数据时会在头部带上"Vary:Accept-Encoding"的标识3) 客户端便可以知道获取到的数据是否已经被压缩,默认为关闭 prox…

ros获取typec-usb摄像头

确保usb或者typec摄像头插在主机上,我这里是typec摄像头&#xff0c;使用了一个usb-typec转接头。 windows在设备管理器中查看是否存在端口&#xff0c;如果没有&#xff0c;可以使用下面的软件进行尝试。 链接&#xff1a;https://pan.baidu.com/s/1hxp3m68W6NjY-3D7q8rGnA 提…

Linux线程同步(1)——一个例子看懂为什么需要线程同步?

对于一个单线程进程来说&#xff0c;它不需要处理线程同步的问题&#xff0c;所以线程同步是在多线程环境下需要注意的问题。线程的主要优势在于&#xff0c;资源的共享性&#xff0c;譬如通过全局变量来实现信息共享&#xff0c;不过这种便捷的共享是有代价的&#xff0c;那就…

postman处理各种请求数据

1、后台request接收postman参数 2、后台单个参数接收postman 3、后台RequestParam参数接收postman 注意事项&#xff1a;情况一&#xff1a;全部都是单个字符串的 情况二&#xff1a;有可能是一个json对象序列化成字符串过来的&#xff0c;那么需要在form-data中设置 …

区间预测 | MATLAB实现QRCNN-LSTM卷积长短期记忆神经网络分位数回归时间序列区间预测

区间预测 | MATLAB实现QRCNN-LSTM卷积长短期记忆神经网络分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRCNN-LSTM卷积长短期记忆神经网络分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRCNN-LSTM分位数回…

Elasticsearch:如何在 Elasticsearch 中存储复杂的关系数据

在传统的数据库中&#xff0c;对数据关系的描述无外乎三种&#xff1a;一对一、一对多和多对多关系。 如果有关系相关的数据&#xff0c;我们一般在建表的时候加上主外键。 建立数据链接&#xff0c;然后在查询或者统计中通过 join 恢复或者补全数据&#xff0c;最后得到我们需…