当前位置: 首页 > news >正文

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

🏖️作者:@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~🙈🙈

相关文章:

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

🏖️作者:malloc不出对象 ⛺专栏:Linux的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、冯诺依曼体系结构二、操…...

盖雅工场重磅发布「劳动力账户」,助力企业实现全面工时成本管理

2023年5月10日,亚太地区领先的劳动力管理云服务商盖雅工场宣布,在原有的智能排班和实时考勤系统基础之上,正式推出全新模块「劳动力账户」,通过为企业里的每一位员工建立劳动力账户,实现工时与成本的全面管控&#xff…...

数据结构与算法基础(青岛大学-王卓)(2)

第二弹火爆来袭中 这波是单链表的内容整理,废话不多说,上小龙虾呀(又到了龙虾季节了,哎,口水直流了~~) beautiful的分割线 文章目录 第二弹火爆来袭中这波是单链表的内容整理,废话不多说,上小龙虾呀(又到了…...

水产亚硝酸盐偏高解决办法,饮用水亚硝酸盐超标

使用常规的离子交换树脂处理含硫酸盐水中的硝酸盐是困难的。因为树脂几乎交换了水中的所有的硫酸盐后,才与水中的硝酸盐交换。也就是说,硫酸盐的存在会降低树脂对硝酸盐的去除能力。采用Tulsimer A-62MP除硝酸盐树脂优先交换硝酸盐,对硝酸盐的…...

linux 设备树详解

设备树 描述设备树的文件叫做 DTS(Device Tree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、IIC 接口上接了哪些设备、SPI 接口上接了哪些设备等等。 树的主干就是系统总线&#x…...

STM32 学习笔记_7 定时器中断:输出比较

输出比较 电机相关比较重要。 OC Output Compare(IC 是输入捕获,CC代指这两个单元),用于输出一定频率和占空比的PWM波形。 右下角四个就是CCR。只有通用计时器和高级计时器有,共用一个cnt计数器,高级计数…...

HTML购物车示例(勾选、删除、添加和结算功能)

以下是一个简单的HTML购物车示例,包含勾选、删除、添加和结算功能。结算功能使用PHP实现,可以获取选中商品的ID。 以下是一个简单的HTML购物车示例,包含勾选、删除、添加和结算功能。结算功能使用PHP实现,可以获取选中商品的ID以下…...

MySQL原理(十):主从架构

前言 上一篇介绍了 MySQL 的表分区和分库分表,这一篇将介绍主从架构相关的内容。 主从架构 常见的主从架构模式有四种: 一主多从架构:适用于读大于写的场景,采用多个从库来分担数据库系统的读压力。多主架构:适用于…...

一文了解Moonbeam智能合约

智能合约:区块链交易的基石 20世纪90年代,Nick Szabo首次提出智能合约的概念,这是一个建立在自动化、加密安全世界之上的数字化市场。在这种数字化市场中,交易和业务可以在无需信任的情况下进行,无需中间人。 以太坊…...

【加解密篇】利用HashCat破解RAR压缩包加密文件详细教程

【加解密篇】利用HashCat解密RAR压缩包加密文件 在取证知识里挖呀挖呀挖—【蘇小沐】 文章目录 【加解密篇】利用HashCat解密RAR压缩包加密文件1.实验环境2.RAR加密压缩包 (一)john软件1.使用CMD命令: run\rar2john.exe (二&…...

React面试题汇总1

1.React的严格模式如何使用&#xff0c;有什么用处&#xff1f; React中StrictMode严格模式_react.strictmode_前端精髓的博客-CSDN博客当我们使用 npx create-react-app my-app 创建一个项目的时候。项目中有一段如下所示的代码&#xff1a;ReactDOM.render( <React.Stric…...

Golang每日一练(leetDay0066) 有效电话号码、转置文件

目录 193. 有效电话号码 Valid Phone Numbers &#x1f31f; 194. 转置文件 Transpose File &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 193. 有效电话号…...

前端 之 FormData对象浅谈

一、简介 ​ 通常情况下&#xff0c;前端在使用post请求提交数据的时候&#xff0c;请求都是采用application/json 或 application/x-www-form-urlencoded编码类型&#xff0c;分别是借助JSON字符串来传递参数或者keyvalue格式字符串&#xff08;多参数通过&进行连接&…...

【分布式锁】Redisson分布式锁的使用(推荐使用)

文章目录 前言一、常见分布式锁方案对比二、分布式锁需满足四个条件三、什么是Redisson?官网和官方文档Redisson使用 四、Redisson 分布式重入锁用法Redisson 支持单点模式、主从模式、哨兵模式、集群模式自己先思考下,如果要手写一个分布式锁组件&#xff0c;怎么做&#xff…...

创建XML的三种方式(二)

文章目录 1 使用XmlDocument创建XML文档2 使用XmlTextWriter写XML文档3 使用LINQ to XML 的XDocument类4 小结 本文介绍了在winform中使用C#开发语言来创建XML文档的三种方式&#xff0c;并介绍了各自的优缺点。 方法1是使用 XmlDocument创建XML文档&#xff0c;方法2是使用 …...

十分钟教你搭建类似ChatGPT的安卓应用程序

大家好&#xff0c;我是易安&#xff01; Chat GPT 是当今著名的人工智能工具&#xff0c;就像聊天机器人一样。Chat GPT会回答发送给它的所有查询。今天&#xff0c;我将通过集成 OpenAI API (ChatGPT)构建一个简单的类似 ChatGPT 的 android 应用程序&#xff0c;我们可以在其…...

问题 E: 起止位置(C++)(二分查找)

目录 1.题目描述 2.AC 1.题目描述 问题 E: 起止位置 时间限制: 1.000 Sec 内存限制: 128 MB提交 状态 题目描述 有n位同学按照年龄从小到大排好队。 王老师想要查询&#xff0c;年龄为x的同学&#xff0c;在队伍中首次出现的位置和最后一次出现的位置&#xff1b;如果队…...

【sop】基于灵敏度分析的有源配电网智能软开关优化配置[升级1](Matlab代码实现)

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

LeetCode周赛复盘(第345场周赛)

文章目录 1、找出转圈游戏输家1.1 题目链接1.2 题目描述1.3 解题代码1.4 解题思路 2、相邻值的按位异或2.1 题目链接2.2 题目描述2.3 解题代码2.4 解题思路 3、 矩阵中移动的最大次数3.1 题目链接3.2 题目描述3.3 解题代码3.4 解题思路 4、 统计完全连通分量的数量4.1 题目链接…...

Call for Papers丨第三届GLB@KDD‘23 Workshop

鉴于介绍新数据集和Benchmark研究往往需要不同于常规论文的评审标准&#xff0c;计算机视觉和自然语言处理领域&#xff0c;以及最近的NeurIPS会议&#xff0c;都有专门致力于建立新Benchmark数据集和任务的Conference Track。然而在图机器学习领域&#xff0c;我们还没有类似的…...

【多线程】单例模式

目录 饿汉模式 懒汉模式-单线程版 懒汉模式-多线程版 懒汉模式-多线程版(改进) 单例是一种设计模式。 啥是设计模式 ? 设计模式好比象棋中的 " 棋谱 ". 红方当头炮 , 黑方马来跳 . 针对红方的一些走法 , 黑方应招的时候有一些固定的套路. 按照套路来走局势…...

7搜索管理

7搜索管理 7.1 准备环境 7.1.1 创建映射 创建xc_course索引库。 创建如下映射 post&#xff1a;http://localhost:9200/xc_course/doc/_mapping 参考 “资料”–》搜索测试-初始化数据.txt { "properties": { "description": { "type": &…...

在Pytorch中使用Tensorboard

Tensorboard是一款深度学习可视化软件&#xff0c;目前主要使用了它的可视化模型, 可视化模型权重和可视化损失函数功能。 x.1 tensorboard初始化 tensorboard初始化需要导入SummaryWriter包并指定存储位置和开放端口号。 from torch.utils.tensorboard import SummaryWrite…...

[笔记]深入解析Windows操作系统《四》管理机制

文章目录 前言4.1注册表查看和修改注册表注册表用法注册表数据类型注册表逻辑结构HKEY_CURRENT_USERHKEY_USERS 实验&#xff1a;观察轮廓加载和卸载HKEY_CLASSES_ROOTHKEY_LOCAL_MACHINE 实验:离线方式或远程编辑BCDHKEY_CURRENT_CONFIGHKEY_PERFORMANCE_DATA 前言 本章讲述了…...

【小沐学Python】Python实现在线英语翻译功能

文章目录 1、简介2、在线翻译接口2.1 Google Translate API2.2 Microsoft Translator API2.2.1 开发简介2.2.2 开发费用2.2.3 开发API 2.3 百度翻译开放平台 API2.3.1 开发简介2.3.2 开发费用2.3.3 开发API 2.4 Tencent AI 开放平台的翻译 API2.4.1 开发简介2.4.2 开发API 2.5 …...

k8s中pod使用详解

一、前言 在之前k8s组件一篇中,我们谈到了pod这个组件,了解到pod是k8s中资源管理的最小单位,可以说Pod是整个k8s对外提供服务的最基础的个体,有必要对Pod做深入的学习和探究。 二、再看k8s架构图 为了加深对k8s中pod的理解,再来回顾下k8s的完整架构 三、pod特点 结合上面这…...

案例说明:vue中Element UI下拉列表el-option中的key、value、label含义各是什么

可以简单理解为&#xff1a;label 是给用户展示的东西&#xff0c;value是前端往后端传递的真实值 <template><div><el-page-header back"goBack" content"注册"></el-page-header><el-divider></el-divider><el-…...

idea创建javaweb项目步骤超详细(2022最新版本)

目录 前言必读 一、新建文件 1.在idea里面点击文件-新建-项目 2.新建项目-更改名称为自己想要的项目名称-创建 3.右键自己建立的项目-添加框架支持&#xff08;英文版是Add Framework Support...&#xff09; 4.勾选Web应用程序-确定 5.建立成功界面 二、配置tomcat 6.…...

「SAP ABAP」OPEN SQL(六)【DELETE语句 | MODIFY语句】

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较…...

SpringCloud --- Feign远程调用

一、RestTemplate问题 先来看我们以前利用RestTemplate发起远程调用的代码&#xff1a; 存在下面的问题&#xff1a; 代码可读性差&#xff0c;编程体验不统一参数复杂URL难以维护 Feign是一个声明式的http客户端&#xff0c;官方地址&#xff1a;GitHub - OpenFeign/feign:…...