冯诺依曼体系结构及操作系统的认识

news2024/11/25 2:41:55

目录

  • 1.前言
  • 2.冯诺依曼体系结构
    • 2.1.结构构成
    • 2.2.硬件分析
      • 2.2.1存储器的作用
      • 2.2.2CPU
    • 2.3.实际分析
  • 3.操作系统
    • 3.1.是什么
    • 3.2.为什么
    • 3.3.操作系统怎么进行管理
      • 3.3.1管理的本质
      • 3.3.2管理的方法
    • 3.4.系统调用
      • 3.5.最终体系

1.前言

为什么现代计算机都被称为冯诺依曼结构计算机?我们每天都在打交道的计算机到底是如何运转的?接下来博主准备开启对计算机组成结构等较为底层方面知识的学习,对我们每天都在使用的工具了解得更透彻也更有助于我们的理解和使用。本篇博客是关于博主初步了解冯诺依曼体系结构操作系统的概念与定位的分享,为后续学习进程与地址空间等知识打下基础。

2.冯诺依曼体系结构

2.1.结构构成

在当今所有的计算机中,比如我们常见的:笔记本、电脑,或是我们不常见的:服务器,大部分都遵循着冯诺依曼体系结构,其具体构成如下:
在这里插入图片描述

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

  • 输入设备:键盘、鼠标、扫描仪…
  • 中央处理器:含有运算器和控制器等
  • 输出设备:显示器、打印机…
  • 存储器:指内存

输入设备和输出设备都被统称为外设,其中的磁盘、网卡等属于“输入输出设备”,键盘只属于输入设备,显示器属于输出设备。

2.2.硬件分析

2.2.1存储器的作用

存储器单指内存计算机的存储器指的是内存,内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行。此“内存”也即是我们选购电脑时的一个重要参考选项“内存容量”,一般有16GB 32GB 64GB。内存也是衡量一台计算机好坏级别的重要参考方面之一。

但是计算机的“内存”和我们手机所称的用来存放各种软件、相片的“内存”可不是同一种东西。关于计算机的存储,不少人总模糊不清。计算机中有“内存”“外存”的说法,内存是计算机的重要部件之一,而外存指的是:磁盘、U盘…外存也被归于“外设”一类之中

为何需要内存的存在?

其实计算机的“外存”能大致等同于我们说的“手机内存”,能够用来存放各种软件、文件、相片…那我们直接使用外存不就行了?为什么还得那么麻烦再搞一个存储器:内存 呢?

在计算机中,对于数据的读写,CPU的速度是最快的,其处理数据的速度也是最快的。使用计算机的本质即是CPU对数据的处理,也即是CPU读取各种数据,处理之后再写入我们的输出设备,这个过程便伴随着数据的输入输出。但是外存的数据传输速度比起CPU处理数据速度来说非常的慢,这样就会导致类似于“木桶短板问题”,即使你CPU多快多牛,外存读取与写入数据的速度慢,你整机效率也十分的低下。


于是为了提高整机效率,冯诺依曼体系引入了存储器(内存)

设备速度
CPU(中央处理器)最快
存储器(内存)次快
外设(输入输出设备)最慢

📈内存是计算机的组成部件之一,所以它无法像磁盘、U盘这些外存一样,存放几百G甚至几个T的数据。但是由于内存对于数据的读取与写入的速度较快,所以可以将内存理解为一块缓存空间,在程序需要运行时载入内存后再进行运算。所以内存是外存与CPU进行沟通的桥梁。
但是我们需要注意的是:内存是带电存储,存在断电易失的问题(好比码字码一半,还没点击保存就关机了),而外存就能够永久存储

2.2.2CPU

我们知道,CPU是一台计算机的核心,因为它具有很强的运算能力。但是其实CPU是很的,它只能被动地接受别人的指令和数据,然后听从命令去执行指令,计算数据🧮🧮

1.CPU是如何能够识别我们传递给他的数据和指令?

CPU内部由一套自己的指令集,它会把传来的指令对应到指令集,翻译成CPU认识的指令再进行执行。其中CPU的指令集是二进制的,这就是为什么我们编写的代码需要经过编译连接成二进制的可执行程序才能被运行的原因。而关于数据,CPU中包含其他寄存器,用于接收和计算数据。

2.CPU进行运算的数据从哪来?

由上文对存储器的分析可知,CPU不和外设直接打交道,只和内存打交道!所以程序要运行必须加载到内存中,CPU要执行我的代码访问我的数据,也只能从内存中读取。

2.3.实际分析

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

请解释,从你登录上qq打开窗口,开始给好友发消息,到好友收到到消息数据流动过程?如果发送的是文件呢?

  • A发送信息 ---> B收到信息 的数据流动:A的键盘(输入设备)输入 ---> A的内存 ---> A的CPU(对信息进行加密等操作) ---> 输入到A的网卡 ---> 输出到B的网卡 ---> B的网卡 ---> B的内存 ---> B的CPU(解密) ---> B的显示器(输出设备)
  • A发送文件 ---> B接收文件 的数据流动:A的磁盘 ---> A的内粗 ---> A的CPU(加密) ---> A的网卡 ---> B的网卡 ---> B的内存 ---> B的CPU(解密) ---> B的磁盘

3.操作系统

3.1.是什么

概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:

  • 内核:进程管理、内存管理、文件管理、驱动管理
  • 其他程序:函数库、shell程序…

设计OS的目的

  • 与硬件交互,管理所有的软硬件资源
  • 与软件交互,为用户程序提供一个良好的执行环境

定位

  • 在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件

3.2.为什么

操作系统对于一台计算机来说是必不可少缺一不可的🎯

假如没有操作系统的管理,一台计算机也只是一堆废铁,各种硬件不会自己运转自己相互配合运作的,计算机可能连开机都无法实现。如果没有操作系统,各个应用软件将无法自主去调用计算机硬件的各种资源,程序无法自己跑去内存中缓存,CPU也无法读取数据进行运算执行…

总而言之,操作系统对于计算机来说,是游走于硬件和软件直接的一位管理者,负责管理计算机的正常运行。所以在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件。

3.3.操作系统怎么进行管理

3.3.1管理的本质

操作系统所谓的管理,即是(对下)合理地管理软硬件资源(手段),(对上)为用户提供良好的、稳定的、安全的…执行环境(目的)

那么我们先来了解一下操作系统对底层硬件的管理结构

在这里插入图片描述

我们已知,操作系统是管理底层硬件的管理者,那么底层硬件就是被管理者,可操作系统和底层硬件的联系真的如图那么简单码?

我们来举个例子🌰

像是管理者与被管理者的例子生活中比比皆是,我们将学校的管理环节简化后作为例子来加深对操作系统管理的理解


1.对重大事宜拥有决策权的人才是管理者

2.管理者不需要与被管理者直接交互,依旧能很好地进行管理

学校的管理者是谁? ----> 校长 学校中被管理者是谁? ----> 学生 所以校长与学生之间即使管理与被管理的关系这点毋庸置疑吧。那么校长又是通过什么去实现对学生的管理呢?难道校长会去深入地了解每一位学生并且与每位学生一对一交流管理吗?并不会

大家想一想校长是如何管理的?:校长掌握着每个班级的成绩数据,通过对被管理者的数据进行比较分析,再去决定策略进行管理(比如哪个班成绩落后,便通知其班的辅导员令其对班级进行加强学习策略)、当具体某位学生因为一直挂科和违规违纪,校长决定令其退学,则通过通报处分的决策实现管理、当有的学生成绩名列前茅,校长则通过设置奖学金奖励,实现激励的策略。

因此我们可以得出这样的结论:对重大事宜拥有决策权的人才是管理者

那么辅导员属于什么呢?辅导员负责执行、传达校方的决策通知,对学生进行深入具体的监管。所以像辅导员这样的角色,便是----执行者(在更小的环节,如班级中,辅导员也可算为管理者,但在整个学校环节中,便是属于执行者)
另外,管理者(校长)也许只有一个,但是执行者(辅导员)却会有许多个。比如学校分为互联网学院、金融学院、信管学院…每个学院都会有专门的辅导员对其属下的学院进行具体地执行管理

而我们在日常学习中,其实很好与校长接触,更多的是与辅导员进行交互,即使这样学校仍有条不紊地发展着


3.管理的本质是对数据的管理

既然管理者不与被管理者直接交互,那么它是如何进行有效管理呢? :由执行者通过对被管理者的交互提供的数据(如成绩、行为举止表现…),管理者通过这些数据对被管理者做出决策,再由执行者执行这些决策。

所以数据对于管理来说是必不可少的,管理的本质也即是对数据的管理

通过以上例子的理解,或许我们应该对操作系统管理的体系再次更新

在这里插入图片描述

其实上面的例子还挺形象的不是嘛…
驱动程序驱动各类硬件运转 ------> 辅导员驱动学生学习...

3.3.2管理的方法

🌰我们继续上面的例子

当校长作为管理者获得了全校所有被管理者的数据后,假如此时校长做出了对全校前十位综合表现最佳的学生进行奖励的决策,那他该奖励谁?难道校长就拿着各个院的辅导员提供的好多个excel文档,对每个学生一一进行比对找出全校几千名学生中的10名最佳学生吗?那要是还有其他决策呢?难道校长每天就瞪着双老花眼,无时不刻都在对每个数据进行对比吗?显然是不现实和不科学的。


所以一位好的管理者,不仅要会管理,还得会如何高效地管理。既然管理的对象类型是学生,学生是一个较为笼统的对象类型,因此每位学生都具备共同的属性(如:姓名、班级、学号、专业课成绩、选修课成绩…)因此可以将每位具体的学生对象,将其组织描述成某种类型再进行管理

简单来说就是分门别类,将需要管理的对象描述成某个类型:好比校长不可能单独拿着学校每一份老师的数据、每一位学生的数据、每一位保安、保洁人员的数据一一进行比较管理吧?肯定是将每位个被管理的对象,描述成某个类型,比如:学生类、职工类、教师类…

分类描述完之后,可以使用某一种数据结构(比如顺序表、链表…)将这些类对象组织起来,形成一个学生信息管理系统;在此之后,对学生的管理便能简化成对某一数据结构的增删查改:
学生入学 ----> 增 | 学生退学 ----> 删 | 查询学生表现 ----> 查 | 修改学生成绩 -----> 改 …

通过以上例子的理解,管理的方法即是:通过各种具体数据归类描述成各种对象类型,再进行组织管理
📌总结起来就是六个字:先描述,再组织

而我们操作系统对任何资源的管理都是遵循着那六个字的管理理念

  • 先描述:我们利用面向对象的思想,将要管理的对象描述成一种类型,该类包含对象的各种属性。由硬件的各种数据抽象出来的结构体:
struct dev
{
    //硬件信息
    int type;  //设备类型
    int status;//设备状态
    ...        //其他属性
    struct dev* next;//下一个设备的地址
}
  • 再组织:我们根据具体情况选择一种数据类型,将我们描述出来的管理对象组织起来,利用数据类型的各类便利接口,将数据管理转化为对对象的增删查改:
//伪代码
//创建一个链表
list<dev> dev_list;

struct dev disk_dev;//创建磁盘对象
dev_list.insert(disk_dev);//插入磁盘节点

struct dev keyboard_dev;//创建键盘对象
dev_list.insert(keyboard_dev);//插入键盘节点

dev_list.earse(disk_dev);//删除磁盘节点
...

完成了描述与组织两部分工作后,对于各类硬件的管理也更加的有条不紊和便捷,这便是数据结构的魅力。因此不论是什么软件什么系统…数据结构都是必不可少的利器之一,假如没有数据结构,很多工作将会十分麻烦与复杂。

总结

计算机管理硬件

  1. 描述起来,用struct结构体
  2. 组织起来,用链表或其他高效的数据结构

3.4.系统调用

了解完操作系统如何管理硬件之后,那操作系统又是如何管理软件的呢?

操作系统向下管理底层硬件的调控,而上层有各类软件需要调用硬件资源、使用者的指令、需求…这些也需要操作系统来管理。那么难不成我们作为使用者或者某个软件需要调控计算机的资源时,我们可以直接进入内部进行调用吗?

那当然是不可以的

计算机内部有许多系统文件、或是用户的保密资料、硬件的调配权力…假如现在是一个不法分子能直接进入计算机内部,任意操作管理计算机的所有东西那将很可能会带来不好的后果;假如一个软件轻而易举地就能黑入计算机的内部,任意占用计算机的资源…那岂不是乱了套?

🌰🌰🌰🌰🌰🌰🌰

针对以上情况,该如何处理呢

好比一家银行,行长是银行的管理者。现在你想要去存钱或取钱,难道行长会信任你,让你直接走去银行的金库自己把钱放进去or取出来吗?这不实际吧💤又或者,你需要办理业务,办理业务需要什么具体的流程操作,也不是人人都可以吧?这需要专业人员才懂得如何操作呀。
而生活中我们去存钱取钱or办理业务是怎么样的操作?行长在柜台设置一个个窗口,当你需要某些服务,你到窗口去办理,窗口提供了存钱、取钱、办卡…各种服务,你需要哪种就申请哪种服务,然后就有专门的工作人员帮你实现你的需求✔️
这样避免了有不法分子乱来的情况,也避免了非专业人员不懂具体业务操作的情况…

操作系统也即是如此


  • 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
  • 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

3.5.最终体系

在这里插入图片描述

了解完操作系统的管理体系后,再看看这句前文出现过的话,你是否能够更深刻地体会呢🌈

操作系统所谓的管理,即是(对下)合理地管理软硬件资源(手段),(对上)为用户提供良好的、稳定的、安全的…执行环境(目的)

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

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

相关文章

C#运算符执行顺序对照表

C#运算符执行顺序对照表&#xff1a;在线查看C#运算符执行优先级别 窍门&#xff1a; CtrlF 快速查找 C#运算符优先级&#xff0c;是描述在计算机计算表达式时执行运算的先后顺序。 先执行具有较高优先级的运算&#xff0c;然后执行较低优先级的运算。 例如&#xff0c;我们常说…

k8s整合kong

k8s整合kong Kong网关的发展历程 ​ Kong网关起源于2007年&#xff0c;由Augusto、Marco、Michele三人在意大利的一个小车库中开发&#xff0c;当时命名为Mashup平台。在随后7年的时间里&#xff0c;Mashup平台逐渐占据API网关市场的主导地位。2017年10月&#xff0c;Mashup平台…

引擎入门 | Unity UI简介–第2部分(2)

本期我们继续为大家进行Unity UI简介&#xff08;第二部分&#xff09;的后续教程 本篇内容 3.动画按钮滑入 文章末尾可免费获取教程源代码 本篇本篇Unity UI简介&#xff08;第二部分&#xff09;篇幅较长&#xff0c;分为八篇&#xff0c;本篇为第二篇。 3.动画按钮滑入…

如何安装Torch7在Ubuntu20.04 ( CUDA10.1 和 CUDNN7.6.5)

先展示安装成果&#xff0c;东西没啥&#xff0c;就是很麻烦&#xff0c;特别是安装torch7库&#xff0c;下载不下来&#xff0c;断断续续的。 1. 首先&#xff0c;安装CUDA 10.1CUDNN7.6.5。切记&#xff1a;cudnn不要装cudnn8.X&#xff0c;好像跟torch不是很匹配。另外就是g…

省市县:数十万数据集PM2.5面板数据柵格数据(1998-2019)

1、数据来源&#xff1a; https://sites.wustl.edu/acag/datasets/surface-pm2-5/ 2、时间跨度&#xff1a;1998-2019 3、区域范围&#xff1a;中国各省、各城市、各区县 4、指标说明&#xff1a; 根据Global/Regional Estimates (V5.GL.02)&#xff0c;计算出国内PM2.5数…

车载电子专用DC-DC方案PL5501

PL5501是一个同步4开关Buck-Boost能够调节输出电压的控制器高于或低于输入电压。PL5501运作输入电压范围从3.6 V到32 V (36 V Maximum)以支持各种应用程序。PL5501 buck采用恒ON时间控制&#xff0c;上位机采用升压和升压两种操作方式负荷和线路调节。开关频率可以设置为150kHz…

在字符串两侧填充指定字符ljust()与rjust()方法

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 在字符串两侧填充指定字符 ljust()与rjust()方法 选择题 以下python代码输出正确的一项是? str"abc" print("【显示】str原始数据&#xff1a;") print("【执行】…

Spark框架

Spark计算速度 Hadoop的多个job之间的数据通信是基于磁盘的 Hadoop偏存储&#xff0c;其MR框架&#xff0c;是基于磁盘的计算&#xff0c;多个MR作业之间的数据交互&#xff0c;依赖于磁盘的IO&#xff0c;这会影响计算性能。 job1&#xff1a;读取磁盘文件&#xff0c;MR计算…

网页JS自动化脚本(三)查找定位页面元素的多种方法

当然定位元素不止一个方法,下面总结一些常用的方法 父元素定位 a.undertips-link>span我们看到父元素是第8代的a,那么先定位到a,然后再通过a定位到子元素span,可以看到1 of 1 ,匹配上了唯一的元素 祖父元素定位 div#lm-new>a>span可以看到进对第7代的div元素进行定位…

承上启下:基于全域漏斗分析的主搜深度统一粗排

1. 背景 1.1 概述 淘宝主搜索是一个典型的多阶段检索系统&#xff0c;主要分为召回、粗排、精排等阶段。召回阶段&#xff0c;由文本召回、个性化等多路召回构成&#xff0c;输出商品量级约10^5&#xff1b;粗排阶段&#xff0c;需要从三路召回集合中分别进行筛选&#xff0c…

[附源码]SSM计算机毕业设计校园自行车租售管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Vue 打包优化之 externals 抽离公共的第三方库

使用 vue/cli 脚手架构建的 Vue 全家桶项目&#xff0c;默认配置下&#xff0c;打包后会把 vue、vue-router、axios、vuex、element-ui、echarts 等公共库打包在一起&#xff0c;导致基础 chunk、vendor 包体积特别大&#xff0c;有时一个文件能达到 3-5MB&#xff0c;这会大大…

ThinkPHP和uniapp开发的CRM售后管理系统(客户、合同、工单、任务、报价、产品、库存、出纳、收费)

ThinkPHP和uniapp开发的CRM售后管理系统无加密的开源源码(可用于自营外包项目(多主体)、可用于外包定制开发项目) 主要功能&#xff1a;客户、合同、工单、任务、报价、产品、库存、出纳、收费&#xff0c; 适用于&#xff1a;服装鞋帽、化妆品、机械机电、家具装潢、建材行业…

NR CSI(三) CQI

微信同步更新&#xff0c;欢迎关注同名modem协议笔记 这篇主要看下CQI的相关内容&#xff0c;CQI在spec上描述的内容比较少&#xff0c;主要是和调制方式和码率相关&#xff0c;所以这篇的内容也比较简短。先看下CSI Report Quantity 上报测量量。 很早之前有人问我你知道各个…

【面试题】DOM

1. DOM的本质 DOM(Document Object Model)&#xff0c;文档对象模型。DOM的本质是从HTML文件中解析出来的一棵树。DOM的数据结构是树形结构&#xff08;DOM树&#xff09; 2. DOM节点操作 2.1 获取DOM节点 <!DOCTYPE html> <html lang"en"> <head…

【毕业设计】30-基于单片机矿井瓦斯_气体浓度_烟雾浓度报警设计(原理图+源代码+仿真+答辩论文+答辩PPT)

【毕业设计】30-基于单片机矿井瓦斯/气体浓度/烟雾浓度报警设计&#xff08;原理图源代码仿真答辩论文答辩PPT&#xff09; 文章目录【毕业设计】30-基于单片机矿井瓦斯/气体浓度/烟雾浓度报警设计&#xff08;原理图源代码仿真答辩论文答辩PPT&#xff09;任务书设计说明书摘要…

Kafka(二)- Kafka集群部署

文章目录一、安装部署1. 集群规划2. 虚拟机前置准备工作&#xff08;1&#xff09;配置IP&#xff08;2&#xff09;修改主机名称和hosts文件&#xff08;3&#xff09;关闭防火墙&#xff0c;关闭防火墙开机自启&#xff08;4&#xff09;克隆虚拟机3. 集群部署&#xff08;1&…

Oracle中ALTER TABLE的五种用法(三)

首发微信公众号&#xff1a;SQL数据库运维 原文链接&#xff1a;https://mp.weixin.qq.com/s?__bizMzI1NTQyNzg3MQ&mid2247485212&idx1&sn450e9e94fa709b5eeff0de371c62072b&chksmea37536cdd40da7a94e165ce4b4c6e70fb1360d51bed4b3566eee438b587fa231315d0a5a…

BP神经网络PID从Simulink仿真到PLC控制实现(含博途PLC完整SCL源代码)

单神经元自适应PID控制博途PLC完整源代码,请参看下面的文章链接: 博途PLC单神经元自适应PID控制_RXXW_Dor的博客-CSDN博客_单神经元pid控制1、单神经元作为构成神经网络的基本单位,具有自学习和自适应能力,且结构简单易于计算,传统的PID具有结构简单、调整方便和参数整定…

RationalDMIS 2020一平面与两偏置圆找正(原点不在偏置圆上)

在批量加工箱体、杠杆、盖板类零件时,大多是以工件上一个平面和两定位孔作为定位基准实现组合定位,简称"一面两孔(一面两销)定位。 采用"一面两孔,定位,能使工件在各道工序上的定位基准统一,进而可减少因定位基准多次变换而产生的定位误差,提高工件的加工精…