用提问的方式来学习:冯·诺伊曼体系结构与操作系统OS

news2024/10/5 15:25:43

学习冯诺伊曼体系结构之前,我们要本着两个问题来学习:

  1. 什么是冯诺伊曼体系结构?
  2. 为什么要有冯诺伊曼体系结构?

一、冯·诺伊曼体系结构 

1. 什么是冯诺伊曼体系结构?

        那我们就先来回答一下什么是冯诺伊曼体系结构:

        首先我们要确定的是冯诺伊曼这个人发明了这个结构,这个结构是由CPU、输入设备、输出设备和存储器组成的;

        而且如今的计算机基本都是冯诺伊曼体系结构,这也就证实了这个结构的可行性和泛用性。我们先有对这个结构的简单的认识,之后再去学习这个结构具体解决了什么问题,具有什么价值。

首先就来看一下冯·诺伊曼体系结构的内容:

  1.  输入设备:话筒、摄像头、键盘、鼠标、磁盘、网卡等;
  2.  输出设备:显示器、声卡、网卡、显卡、磁盘、打印机等;
  3.  CPU(中央处理器):包括运算器(算术运算+-*/、逻辑运算&|^ ~);
  4.  存储器:内存(掉电易失

掉电易失:

        比如我们在编辑一个文档,我们只编辑没有保存,你的电脑关机了,此时我们重新开机的时候,是找不到这个文档里面的内容的;因为我们没有保存起来,没有保存的时候,文档是存储在内存中的,内存具有掉电易失的特性,所以关机之后就找不到了,而我们保存了之后,是将文档保存在磁盘中,此时关机再打开也能找到该文档;

        一句话概括:内存不具备永久存储的功能

2. 为什么要有冯诺伊曼体系结构?

        在弄清为什么要有冯诺伊曼体系结构之前,我们先看看这些设备之间是怎样来发挥作用的,因为在我们的认知里,对键盘设备的输入字符,一定是为了向显示器设备输出,比如我们通过微信给朋友发送信息,一定是将我们从键盘输入的信息,发送到朋友电脑的显示器上输出的,所以正因为这样的现象,我们可以看出设备之间一定是连接起来共同作用的,因为数据的传递不可能只是一个设备完成的;所以连接的目的其实就是让数据在不同设备之间进行流动

        那我们设立一个场景:在编辑文档的时候,我们先编辑一段文档,保存,关闭,再打开,我们会发现打开的文档依旧是之前写的文档,此时我们再进行编辑,但是不保存,直接关闭。这个时候磁盘的文档是修改之后的,还是修改之前的呢?毋庸置疑,一定是修改之前的,所以我们会发现一个事情:磁盘的文档和我们打开之后存在内存的文档是两个独立的文档,一个改变不会影响另外一个,除非再次保存;这就说明了一个事情,数据在不同设备之间的流动,本质上其实是在不同设备之间的拷贝,不同设备之间的数据相互独立,互不影响,除非进行了保存这类操作

        不同设备之间的拷贝,一定是需要花费时间的,所以拷贝一定也是有速度的,那计算机的速度其实就是设备之间整体拷贝的速度;众所周知的是CPU的速度是非常快的,而我们的外设(输入输出设备)的速度是很慢的,所以CPU如果和我们的外设之间传数据,速度就会被外设牵累,变慢;这很像木桶原理,不能以长处为标准,要以短板为准;那这时,怎么来提升计算机的速度呢?

首先我们先看这张图片:存储金字塔

        这个结构就是表明了各个设备的速度,我们可以看到外设是最底层的,速度最慢,但是价格却很便宜,大家要记住计算机之所以可以家喻户晓的原因就是因为造价不是很昂贵,家家都可以拥有;所以我们在解决计算机的速度的时候,完全可以让寄存器贯穿计算机的所有设备,因为这可以使计算机的速度变的飞快,但是价格也是十分的昂贵;所以这不利于计算机的广泛传播。基于这两个原因,既要提速,又要控制价格。就有了内存这个中间者,这也是冯诺伊曼体系结构的核心所在,正是这个结构有了内存,才会被计算机广泛应用

        在这里讲解一下内存是如何提高效率的:

        我们知道最开始效率低下是因为外设直接和CPU传数据,这就是计算机的速度以外设为标准,大大降低了整体的速度。而内存的引入,是完全有效地提高了整体的速度的,大家这里一定有了疑问,最开始是外设 —> CPU,而加入内存之后,外设 —> 内存 —> CPU,这看起来并没有提高速度,反而还降低了速度啊。其实并不是这样的,我们的内存提高效率的原因是在于,可以将数据预先加载到内存中,然后由内存直接和CPU对接,CPU操作完的也是先放到内存中的缓存里,等CPU闲置了,再一并发送给外设。这样的流程也就注定了计算机的速度是以内存为准了,大大提高了计算机的整体效率。

所以到了这里,我们也就不难去模拟一个数据传输的过程了

场景设立:我发送hello给小杨

所以总结一下:冯诺伊曼体系结构是一个以内存为核心的结构、外设和CPU传送数据必须要通过内存、这样既提高了计算机的效率,价格也不贵

二、操作系统(OS)

        想真正弄懂操作系统是一个过程,不是一篇博客可以解释清楚的,你需要在漫长的学习生活中去感受它,我们现在大多数学习的知识都是具有滞后性的,所以下面的内容,将会让你对操作系统有初步的认识,但不会让你秒懂。

学习之前,依旧是要提出两个问题:

  1. 什么是操作系统?
  2. 为什么要有操作系统?

1. 什么是操作系统?

操作系统是一个进行软硬件资源管理的软件

        既然是一个软件,那么它就是一个可执行的程序,既然是一个可执行的程序,那么就注定是必须要运行的,既然必须被运行,就一定会经过CPU的处理,一定会被加载到内存上。

        所以操作系统是第一个被加载到内存的软件。这个加载的现象大家是都看到过的,在我们电脑开机的那段时间,就是进行着对操作系统加载到内存的操作!

        那我们来分析一下什么叫对软硬件的资源做管理,重点要落在管理这个词上,管理的存在,就注定了有管理者和被管理者,如学校、公司、医院等,校长、董事长、院长这几个角色就是管理者,他们要分别对学生、员工、病人和医护人员进行管理,那他们会挨个人的管理吗?答案是肯定不会的,所以管理者是不会直接对被管理者本身做管理的,如果你是管理者,一定是希望去管理被管理者的信息,做成表格去管理。所以管理者是对信息做管理,那管理的本质就是对信息或者数据做管理

        思考这样一个问题,一个学校有上万个人,管理者对这些人的数据一定不会是一个一个看的,一定是要建立在某种数据结构之上的,并且要具备增删查改等操作。而每个人都是不一样的个体,有自己的姓名、年龄、喜好、住址等等,但是这些都是人人必备的元素,也是管理他们信息的必备的标识,所以我们可以建立一个结构体来记录他们的信息,之后组成顺序表、链表等数据结构,并且具有增删查改的功能。

        那么对人的管理,就是对数据的管理,最后就演变成对数据结构的增删查改!得到他们的信息之前必须的步骤就是先描述人的信息,再组织数据结构。总结就是先描述,再组织。所以管理,其实就是对数据进行先描述,再组织的过程。那回到操作系统这里,操作系统对软硬件资源的管理,其实就是对这些软硬件的信息的管理,也就是对存放软硬件信息的数据结构做管理!因为语言的本质就是对数据做管理,我们可以回想写代码的时候,无一不是对数据的管理,增删查改、输出输入、判断等等。

        操作系统是通过驱动程序来管理硬件的,而软件其实就是一个个可执行的程序,可执行程序是要加载到内存中的,因为要经过CPU的处理,所以必须到内存,而操作系统就是在内存里的,所以操作系统管理软件是在内存中去管理的。

2. 为什么要有操作系统?

        既然我们知道什么是操作系统了,也知道操作系统是管理软硬件信息的,那到底为什么要有操作系统呢?操作系统有什么作用呢?

先给结论:对下可以管理好软硬件资源,对上可以给用户提供稳定、高效和安全的运行环境

        管理好软硬件资源不用解释了,上面已经解释清楚了,那为什么可以给用户提供稳定、高效和安全的运行环境呢?

        比如一家银行、你能让取钱的直接去金库拿钱吗?肯定不能,因为怕偷钱。这换在计算机上就是更改计算机的底层数据,是不被允许的,所以银行才有银行窗口帮你办理,操作系统也是一个道理,为了让计算机安全,坚决不能让用户直接访问计算机底层的数据,否则带来的影响十分不好。那用户应该如何来访问数据呢?这时操作系统就提供了一个系统调用接口,我们要访问数据,必须通过系统调用接口来访问这就类似于类里面的public,而数据就是private但是用户直接使用系统调用接口的成本太高,不利于操作,就出现了指令、shell外壳和lib(库)这样的操作来供我们使用,我们只需要发送指令,调用库函数,他们就会自动匹配系统调用接口,但是我们依旧是可以直接使用系统调用接口的。

        比如printf和scanf函数,这两种函数是涉及到输入输出的,也就是涉及到了硬件的改变,硬件是属于操作系统内部的,用户不可以直接访问,就一定要通过系统调用接口,而printf和scanf其实就是对系统调用接口进行了封装,使用这两个函数之后,会自动匹配系统调用接口来完成操作;所以只要涉及对硬件信息的更改,就一定要通过系统调用接口

        大家可以思考这样的问题,现在市面上的操作系统有Unix、Linux、macOS、Windows等,这些操作系统的系统调用接口一定是不同的,我们一定听说过某个语言是具备可移植性和跨平台性的原因就是他们的lib(库)是可以实现对不同系统的系统调用接口的使用,实际就是对不同接口进行了封装。简单理解,条件编译,如果是Unix系统就用这个系统调用接口、Linux就用Linux的、Windows就用Windows的接口等等

综上所述,操作系统存在的意义就是两方面

  1. 对下可以管理好软硬件资源
  2. 对上提供良好的运行环境

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

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

相关文章

VMALL 商城系统

SpringBoot MySQL Vue等技术实现 技术栈 核心框架:SpringBoot 持久层框架:MyBatis 模板框架:Vue 数据库:MySQL 阿里云短信,对象存储OSS 项目包含源码和数据库文件。 效果图如下:

奥特曼被指爱权力胜过金钱;人类才是「幻觉问题」根本原因丨 RTE 开发者日报 Vol.103

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有…

【网络编程】-- 05 UDP进阶之在线聊天

网络编程 6 UDP 6.2.2 UDP聊天实现 “循环实现消息的发送和接收” 接收端只能接收到消息而无法反馈交流 接收: package com.duo.chat;import java.net.DatagramPacket; import java.net.DatagramSocket;public class UdpReceiveDemo1 {public static void mai…

12月11日作业

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示登录成功,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配,弹…

【flink番外篇】1、flink的23种常用算子介绍及详细示例(完整版)

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的…

宝塔PostgreSQL设置数据库远程访问

宝塔PostgreSQL设置数据库远程访问 宝塔的PostgreSQL1. 添加数据库2. 打开PostgreSQL设置界面3. 修改配置4. 重载配置/重启数据库 Docker的PostgreSQL1. postgresql.conf2. pg_hba.conf3. 重启数据库 注意其他问题 宝塔PostgreSQL设置数据库远程访问?docker容器Post…

这样的Python自动化测试面试题,测开来了都不一定都会把!

十、接口自动化 10.1 接口自动化怎么测试 ( Python requestspytest 版本) 原来我们接口自动化是用 python request pytest 执行 接口自动化其实主要就是接口测试的基础上填加了断言,参数化,动态关联 做接口自动化之前,我们也会划分模块&#…

Java毕业设计 SSM SpringBoot 在线学习系统

Java毕业设计 SSM SpringBoot 在线学习系统 SSM SpringBoot 在线学习系统 功能介绍 首页 图片轮播 视频推荐 在线学习 学习介绍 评论 收藏 资料中心 资料详情 下载资料 话题讨论 文档发布 试题中心 系统公告 登录 注册学生 个人中心 试题记录 错题本 我的收藏 算法演示 结果分…

智能优化算法应用:基于蝴蝶算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蝴蝶算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蝴蝶算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蝴蝶算法4.实验参数设定5.算法结果6.参考文献7.MA…

课后作业7.3.1:构造一个自己的小操作系统

构造一个自己的 mini 操作系统 任务描述 请实现如下功能: 1.写一个命令解释器程序 mysh.c ,其功能是接收用户输入的命令并给出反馈。要求该程序既支持内部命令 cd、sync、exit ;也支持外部命令,即可以接收 cat、ls 等命令&#x…

【电路笔记】-电位器

电位器 文章目录 电位器1、概述2、电位器类型2.1 旋转电位器2.2 滑块电位器2.3 预设和微调电位器2.4 变阻器 3、电位器示例14、电位器作为分压器5、电位器示例26、变阻器6、滑块变阻器7、线性或对数电位器8、总结 当连接的轴物理旋转时,电位计和变阻器的电阻值会发生…

【linux】yum安装时: Couldn‘t resolve host name for XXXXX

yum 安装 sysstat 报错了: Kylin Linux Advanced Server 10 - Os 0.0 B/s | 0 B 00:00 Errors during downloading metadata for repository ks10-adv-os:- Curl error (6): Couldnt resolve host nam…

Aesthetically Relevant Image Captioning 美学上相关的图像字幕

1.摘要 图像美学质量评估(AQA)旨在为图像指定数字美学等级,而图像美学字幕(IAC)旨在生成图像美学方面的文本描述。在本文中,我们研究了图像AQA和IAC,并提出了一种新的IAC方法,称为审美相关图像字幕(ARIC)。基于大多数图像的文本评…

基于ssm高校教师科研信息展示网站论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师科研项目展示信息管理混乱,出错率高&#xff0c…

记录 | ubuntu源码编译安装/更新boost版本

一、卸载当前的版本 1、查看当前安装的boost版本 dpkg -S /usr/include/boost/version.hpp通过上面的命令,你就可以发现boost的版本了,查看结果可能如下: libboost1.54-dev: /usr/include/boost/version.hpp 2、删除当前安装的boost sudo …

【数据结构(十·树结构的实际应用)】赫夫曼编码(3)

文章目录 1. 基本介绍1.1. 赫夫曼编码基本概念1.2. 通信领域中的编码方式1.2.1. 定长编码1.2.2. 变长编码1.2.3. 赫夫曼编码(属于变长编码的一种) 2. 实例应用-赫夫曼编码实现数据压缩2.1. 创建赫夫曼树2.2. 生成赫夫曼编码2.2.1. 生成赫夫曼树对应的赫夫曼编码表2.2.2. 赫夫曼…

初识人工智能,一文读懂强化学习的知识文集(5)

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

BMP转PNG工具BMP2PNG

自己写的一个BMP转PNG工具BMP2PNG 写这个工具是因为要使用传奇的部分素材在COCOS2DX使用, 但是COCOS2DX不支持BMP 如果直接将BMP转换到PNG的话,网上找到的工具都不支持透明色转换。难道要用PS一个一个抠图吗?要累死 所以写了这个工具。一些古…

HBase 详细图文介绍

目录 一、HBase 定义 二、HBase 数据模型 2.1 HBase 逻辑结构 2.2 HBase 物理存储结构 ​2.3 数据模型 2.3.1 Name Space 2.3.2 Table 2.3.3 Row 2.3.4 Column 2.3.5 Time Stamp 2.3.6 Cell 三、HBase 基本架构 架构角色 3.1 Master 3.2 Region Server 3.3 Zo…

Axure简单安装与入门

目录 一.Axure简介 二.应用场景 三.安装与汉化 3.1.安装 3.2.汉化 四. 入门 4.1.复制、剪切及粘贴区域 4.2.选择模式 4.3. 插入形状 4.4.预览、共享 感谢大家观看!希望能帮到你哦!!! 一.Axure简介 Axure RP是一款专业的原型…