冯诺依曼体系结构和操作系统的工作方式

news2024/11/25 0:51:33

目录

一. 冯诺依曼体系结构

1.1 什么是冯诺依曼体系结构

1.2 为什么冯诺依曼体系结构这样设计

1.3 冯诺依曼体系结构与现实问题的结合

二. 操作系统的工作方式

2.1 操作系统的功能

2.2 操作系统对下进行软硬件管理的方式

2.3 操作系统对上提供使用环境的方式

三. 总结


一. 冯诺依曼体系结构

1.1 什么是冯诺依曼体系结构

冯诺依曼体系结构是由美国数学家冯·诺依曼于1946年提出的一种计算机程序存储体系结构,由于其在实际应用中优越的综合性能,被现在绝大部分的电脑、服务器等计算机设备接受。

冯诺依曼体系五大组件:输入设备、存储器、输出设备、运算器以及控制器,其中运算器和控制器合成中央处理器,也就是我们常说的CPU。

  • 输入设备:键盘、话筒、摄像头、磁盘、网卡等。
  • 输出设备:显示屏、音响、磁盘、网卡等。
  • 存储器:注意冯诺依曼体系中的存储器指的是内存而非磁盘
  • 运算器:进行算术运算和逻辑运算。
  • 控制器:用于响应外部事件、协调已就绪的外部的执行,比如:将磁盘中的数据拷贝的内存。
图1.1 冯诺依曼体系结构

1.2 为什么冯诺依曼体系结构这样设计

站在数据的角度,我们认为,冯诺依曼体系中的外部设备和内存及中央处理器遵循下面两条原则:

  1. 如果CPU要读取数据,那么要将外部设备的的数据先加载到内存中再进行处理,CPU不与外部设备直接打交道。(只限制在数据传输层面)。
  2. 外部设备之和内存直接打交道,不予CPU直接打交道。

提问:为什么中央处理器不是直接处理外部设备中的数据,而是要先将外部设备中的数据加载到内存再进行处理?

这是从提高运算效率的角度来考虑的,不同硬件设备的数据存取和运算效率遵循下面的规则:

  • 硬件效率:CPU > 内存 > 磁盘 > 光盘 > 磁带

上面不同设备之间读取数据的效率差别,为10^3量级,差别巨大。CPU直接处理外部设备的数据,虽然从理论上来讲是可行的,但是,由于CPU和外部设备之间的效率差别太大,因此,加入内存作为中间介质,将要处理的外部设备中的数据预先加载到内存之中,CPU从内存中读取数据而非从外部设备中直接读取,能很大程度上提高效率。

这是又有一个问题,为什么不直接将外部设备的数据加载到CPU的寄存器中处理,即使这样效率会更高?

这是从设备造价的角度来考虑的,不同硬件设备的制造成本遵循下面的规则:

  • 制造成本:CPU > 内存 > 磁盘 > 光盘 > 磁带

我们发现,效率越高的硬件,成本越高。做大CPU的寄存器或内存,从技术角度来说,是没有问题,但这回造成设备成本的大幅度上升,并且市场规律早已表明,一款被广泛应用的产品一定是价格便宜、质量有保障的,使用内存作为中间介质,就是在效率(质量)和价格之间求得的平衡。

1.3 冯诺依曼体系结构与现实问题的结合

提问:在微信和QQ的信息发送中,信息从一个终端发送到另一个终端,要经历哪些过程?

假设终端A发送消息,终端B接收消息,那么根据1.2章节中的提出的冯诺依曼体系中硬件数据交互的两条原则,信息发送的过程为:

  1. 终端A的输入设备(键盘)输入数据信息,并且读取到终端A的内存。
  2. 终端A的CPU从内存中读取数据,对读取到的数据进行处理,然后发送给输出设备(网卡)。
  3. 通过网络,将终端A输出的信息传输到终端B的输入设备(网卡),并加载到内存。
  4. 终端B的CPU对接收到的消息进行处理,发送给输出设备(显示器)显示出来。

今后,凡是涉及到计算机设备中和设备之间的数据传输流程分析问题,都可以结合冯诺依曼体系进行分析。

二. 操作系统的工作方式

2.1 操作系统的功能

操作系统(OS)的概念:操作系统是一款进行软硬件资源管理的软件。

工作方式:通过对下将软硬件资源进行合理的管理,来达到对上为用户提供良好的(稳定、安全、快速)的使用环境的目的。

操作系统主要进行内存管理、进程管理、文件管理和驱动管理。

操作系统假设所有的用户都是不可信任的,因此不会运行用户直接访问操作系统的内部资源,而是以对外提供接口的方式供用户来访问,用户还可以通过图形化界面、指令等方式对系统接口进行进一步的封装,以方便产品的开发。

Linux是一款使用C语言编写的、开源的操作系统。 

图2.1 操作系统结构示意图

2.2 操作系统对下进行软硬件管理的方式

操作系统对下层软硬件的管理,本质上是对数据的管理。

当操作系统拿到信息(数据)后,先对信息数据进行进行描述,在Liunx下一般采用结构体的方式描述信息,描述完信息后,再对信息利用各种数据结构和算法进行组织后再进行管理。

操作系统进行资源管理的方式可以总结为6个字:先描述、后组织。

操作系统并不与底层硬件直接打交道,但是却可以实现对底层硬件的管理,这是因为硬件驱动充当了操作系统决策的执行者,来驱使硬件完成相应操作,同时硬件驱动获取底层硬件的相关数据,让操作系统执行相应的决策。

为了便于理解,这里以学校的例子进行类比。在学校中,一般学生没有机会和校长直接打交道,但是校长却可以实现对学生的管理,这就是由于辅导员、老师等充当了中间角色,辅导员老师等收集到了学生的数据,根据数据做出相应的管理决策,然后下发到每位老师,老师让学生去执行决策,老师充当中间人,使校长能够管理学生。

我们假设学校就是一个系统,那么校长就类似于计算机中的操作系统,学生类似于底层硬件,辅导员导师等类似于硬件驱动。

管理,本质上是对数据的管理,操作系统(决策者)只需要拿到底层硬件的核心数据,就能够实现对底层硬件的管理。

再继续举例,假设校长希望拿到全校成绩前3的学生进行公开表彰,但是学生数量庞大,无法拿到数据就直接管理决策。这时就需要一些数据结构和算法进行辅助,可以将每个学生的各种信息用结构体存储描述起来,用顺序表、链表等数据结构对学生的信息(姓名、年龄、成绩、学号等)进行组织,这就相当于先描述、后组织的过程。通过快速排序、归并排序的排序算法,按照成绩从高到低的顺序进行排序,这样就拿取到了成绩最高的前几名学生。

结论:操作系统的内部,一定存在大量的数据结构和算法,用于对底层软硬件数据的描述、组织和管理,以便操作系统进行决策。

图2.2 操作系统对下进行资源管理的方式

2.3 操作系统对上提供使用环境的方式

根据图2.1,操作系统并不允许用户直接访问其内部资源,而是通过对外提供接口的方式来让用户实现对操作系统内部资源的访问,同时,通过将系统接口利用图形化界面和命令行等方式封装后,可以让用户更加方便直观的调用系统接口。

  • 系统接口:系统提供的对内部资源访问的接口,类似于C++类提供的接口函数。
  • 用户调用接口:对系统接口的进一步封装,如图形化界面、C语言的printf等内置函数,底层都调用了系统接口。

这里使用银行体系来举例,辅助理解操作系统对上提供使用环境的方法。我们去银行办理存取款等相关业务时,并不能直接进入银行的内部,而是要通过银行的对外服务窗口来办理业务,由业务员负责执行具体的操作。在办理业务的过程中,我们无法得知具体的办理过程和进行了那些操作,我们只需要准备好相关的材料,就可以去窗口办理。

这里的银行窗口就好比操作系统的系统调用接口,作为客户,不需要知道这个体系的内部细节,就能完成相关操作。

继续上面的例子,对于年轻人,直接去银行窗口办理业务没有什么难度,他们会明确知道办理业务应当准备的材料及要预先进行的工作。但是,对于一些老年人,他们并不知道怎样在窗口办理业务,为此,银行在业务大厅内往往设有引导服务人员,老年人只需要告知引导人员要办理那些业务,引导人员就会辅助他们整理好相关材料,最后由引导员去窗口完成相关业务的办理。

这里引导人员去窗口帮助老年人办理业务的过程,就相当于通过用户接口调用系统接口,其本质为对系统接口的再一次封装。这里的引导员可以类比为Window下的图形化界面、Linux下的命令行、C/C++的一些库函数等,它们都封装了系统的接口函数。

图2.3 操作系统对上提供使用环境的方法

三. 总结

  • 现代的计算机设备的设计与制造准则,基本都遵循冯诺依曼体系结构,冯诺依曼体系有输入设备、存储器、输出设备、运算器和控制器五大组件,这是综合产品性能和成本的设计模式,揭示了计算机设备中的数据读取和控制的流程,凡是涉及到计算机设备中和设备之间的数据传输流程分析问题,都可以结合冯诺依曼体系进行分析。
  • 操作系统是一款进行软硬件资源管理的软件,管理本质上是对数据的管理,遵循先描述、后组织的管理方法,操作系统内部一定有大量的数据结构和算法。
  • 操作系统通过硬件驱动为中间人,获取底层数据,实现对底层资源的管理。
  • 操作系统不允许用户直接访问其内部,用户可以通过用户接口和系统接口访问操作系统内部资源,用户接口是对系统接口的封装。

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

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

相关文章

泛微E-Office前台文件上传漏洞

0x01 阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&…

史上最全Hadoop面试题:尼恩大数据面试宝典专题1

说在前面: 《尼恩 大数据 面试宝典》 是 《尼恩Java面试宝典》 姊妹篇。 这里特别说明一下:《尼恩Java面试宝典》41个专题 PDF (请在文末获取)自发布以来, 已经收集了 好几千题, 足足4000多页&#xff0c…

android 如何分析应用的内存(八)——Android 7.0以后的malloc debug

android 如何分析应用的内存(八) 接上文,介绍六大板块中的第三个————malloc调试和libc回调 上一篇文章中,仅仅是在分配和释放的时候,拦截对应的操作。而不能进一步的去检查内存问题。比如:释放之后再…

卖家必看,要做好独立站,一定要知道的八件事!

如何打造并运营你的跨境独立站?如何吸引更多的流量并促使他们在你的网站下单?在你决定开设独立站之前,以下这些方面是你必须要考虑的,否则你的独立站可能会面临失败的风险。 一、定义目标受众 你是B2B业务还是B2C独立站&#xff…

小区物业电瓶车充电桩收费管理系统 支持扫码刷卡

电动车火灾事故频频发生,毫不起眼的电动车屡次引发夺命大火,电动车已然成为火灾“重灾区”。为预防和遏制电动自行车火灾事故发生,国家三令五申各种政策,为此公安部安委会曾出台《电动自行车集中停放和充电治理方案》。 大部分充电…

visionOS:理想的UI设计竟要考虑这么多细节

拥有对macOS、iPadOS、watchOS、iOS等系统的开发经验,苹果在XR操作系统设计上也具有先天优势,相比于其他公司从头开始构建XR系统界面,苹果可直接借鉴已经过验证的设计美学。 与此同时,WWDC 2023上公布的一系列开发者教程来看&…

Vue3 + Vite + Ts自己封装的基础组件库发布npm ,npm安装使用(Volar )支持TS 类型提示功能(vite-plugin-dts 使用)

一、需求 在开发Vue3 Ts项目时:使用自己二次封装的基础组件,没有Ts类型提示,不能像Element-plus鼠标停在标签或者属性上就能提示当前组件有哪些属性(即props)及其属性的类型,如下图是Element-plus组件的使…

将mp3音频剪切器收藏起来使用

小明:最近我在剪视频,发现剪出来的音频还需要再进行剪辑和编辑,感觉有点繁琐啊。 小红:是啊,如果能有一个方便快捷的工具就好了,就是不知道剪切音频制作软件推荐免费有哪些? 小明:…

前端开发中遇到的小bug--解决方案

1.在 searchBox 搜索栏中,用到了多级下拉框的筛选条件,样式如下: 这样看起来是没什么问题的,但当我选择时,在框中显示的内容和筛选条件的内容就出错了: 这里其实是选择了 采矿业 -- 石油和天然气开采业 &am…

每日一练 | 华为认证真题练习Day63

1、IEEE 802.1D标准中规定桥优先级是多少bit? A. 8 B. 4 C. 16 D. 2 2、RSTP中处于Discarding状态下的端口,虽然会对接收到的数据帧做丢弃处理,但可以根据该端口收到的数据帧维护MAC地址表。 A. 对 B. 错 3、如下图所示,下列…

随笔-不要裸辞

2023年5月份,16-24岁、25-59岁劳动力调查失业率分别为20.8%、4.1%。 先不说这些大数据,就聊聊我身边发生的事儿。 NO1 欢迎你,新同事 A,别的项目组的,先前通过一个同事说过几句话,那是真正的点头之交。今…

「Java核心技术大会 2023」6月重磅启动,邀你共同探讨Java生态(文末送书5本)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

slam十四讲 03 Eigen实践之不同坐标系下的坐标转换

目录 1. 题目 2. 使用欧式变换 3. 使用四元素 1. 题目 已知 (1) 世界坐标系到相机1坐标系变换关系为,即相机1的位姿q1[0.35,0.2,0.3,0.1]^T, t1[0.3,0.1,0.1]^T. (2) 世界坐标系到相机2坐标系变换关系为,即相机2的位姿q1[-0.5,0.4,-0.1,0.2]^T, t2[…

影响无线状态监控系统质量的关键:如何选择MEMS传感器?

随着工业领域对设备状态监测的需求不断增加,智能无线监测器成为一种重要的技术工具。其中,MEMS(微机电系统)传感器作为无线状态监控系统中的核心组件,发挥着关键的作用。本文将介绍如何为无线状态监控系统选择最佳的ME…

端午将至,VR全景奉上别开生面的“云上”端午节

端午将至,街上早已飘溢着粽子的香气,大家知道端午习俗有哪些吗?除了吃粽子,还有赛龙舟、悬艾蒿、踩露水、佩香囊等。搭乘端午假期的“顺风车”,多地都在推出活动吸引游客,各地文旅期望打造集文化、传承、艺…

在Linux中部署Flask+Gunicorn+Nginx

flask是一个轻量级的基于Werkzeug和Jinja2模板引擎的Web应用框架。gunicorn能与很多Web框架兼容,执行起来很简单,资源消耗很少,并且运行速度很快。 flaskgunicornnginx部署在公网IP为x.x.x.x的服务器上。 flask需要部署在Python3的环境中。…

KingIOServer采集杰控OPC UA服务器数据测试

哈喽,大家好,我是雷工! 上一篇测试了同一台电脑上,KingIOServer采集杰控OPC DA服务器数据,本篇测试用KingIOServer采集杰控OPC UA服务器数据。 以下记录测试过程。 一、 KingIOServer的OPC UA数据采集介绍 KingIOSer…

少儿英语-思维导图学语法-特殊名词变复数

“通过思维导图,轻松学语法” 正文: 今天我们将一起探索英语中那些特殊的名词复数形式。学习特殊名词的复数变换可以让我们的英语更加地道和流利。让我们来看看一些有趣的例子吧! "Man" 变成 "Men" 你可能已经知道 &q…

【数据结构与算法】1、学习动态数组数据结构(基本模拟实现 Java 的 ArrayList 实现增删改查)

目录 一、什么是数据结构(1) 概念(2) 分类 二、线性表三、数组(Array)(1) 数组的底层结构(2) 数组缺点 四、动态数组(Dynamic Array)接口设计五、动态数组的设计和基本代码实现(1) 成员变量(2) 代码① get ()② indexOf ()③ clea…

嵌入式实时操作系统的设计与开发New(二)

轮询系统 轮询系统也称为简单循环控制系统,是一种最简单嵌入式实时软件体系结构模型。 在单个微处理情况下,系统由多个函数完成,每个函数负责该系统的一部分功能。 这些函数被循环调用执行,即它们按照一个执行顺序构成一个单向的…