冯诺依曼体系与操作系统的理解

目录

一.冯诺依曼体系结构

存储分级

为什么程序运行之前,必须加载到内存上?

二.操作系统

操作系统是什么?

为什么需要操作系统?

操作系统是如何管理软硬件资源?


一.冯诺依曼体系结构

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

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

输入单元 :包括键盘 , 鼠标,usb,磁盘/ssd,网卡
存储器 :存储器起始就是 内存
中央处理器(CPU) :含有运算器和控制器等
输出单元 :显示器,打印机,网卡,显卡等

内存与磁盘的区别:

内存和磁盘是计算机中的主要存储部件

内存是利用电效益实现的

一旦电脑断电,内存存储的数据会全部丢失

磁盘(永久存储介质)是外设,可以永久存储数据。

内存的特点:处理数据速度非常快,造价高

磁盘的特点:相对于内存处理数据的速度较慢,造假低

注:计算机中几乎所有设备都有存储数据的功能,只是存储能力有大有小。

处理数据的速度:CPU>内存>各种外设(磁盘)

存储分级

从图中我们可以看出:

以cpu为中心,距离CPU越近,存储效率越高,造价越高。距离CPU越远,存储效率越低。造价越低

为什么采用存储分级?

如果全部都采用高价的存储介质,速度快但太贵,

如果全部采用低价的存储介质,便宜但速度太慢

因此,为了使造价相对较低,速度较快,采用了内存分级:

在数据层面上CPU一般不和外设直接交互(防止出现木桶效应,导致整机效率太低),CPU优先与内存进行数据交换,再进行处理。因此再在硬件上内存也可以看出成一个巨大的缓存。

因此基于冯诺依曼体系结构的计算机,本质:就是用比较少的钱,造出效率不差的计算机(性价比较高)

为什么程序运行之前,必须加载到内存上?

程序=代码+数据,最终都要CPU来执行,要想处理这些,CPU要先读取这些代码和数据,CPU和内存有“数据(二进制层面)”层面的交互,形成一个exe的可执行文件,而文件只能存储在磁盘(外设)中保存。而现代计算机大多数都是采用的冯诺依曼结构,CPU与内存进行数据交互,因此需先把exe文件(要执行的程序)里的东西,加载到内存上,才可以运行。

二.操作系统

操作系统是什么?

是一款软件,进行软硬件资源管理的软件。

是计算机开机后,第一个加载的软件

为什么需要操作系统?

我们知道,世界上第一台计算机埃尼阿克,他是没有操作系统的,他需要专业的人员手动的进行各种操作且很容易出错,同时具有的功能也很少。因此为了方便使用人员,大佬们专门写了一块软件来进行,让我们可以通过一些简单的指令或动作,告诉操作系统,让它代替我们对硬件进行一系列的操作。

简单来说:

操作系统可以代替我们对软硬件进行资源管理(手段),给用户提供良好(易用,稳定,安全,高效)的使用环境(目的)

操作系统是如何管理软硬件资源?

计算机的层状结构:

 举一个例子(校园管理)

在你来到入学时,记录你各种信息的档案会到学校里,然后你在学校这四年的学习与其他情况都会记录在你的档案里,在这期间,学校会根据你的档案里记录的信息对你进行管理,为了方便管理,可以定义一个student结构体记录信息

struct student
{
    int age;
    int grade;
    string name;
    ....
}

为了方便保存,查找等,学校将student以链表的方式链接在一起

struct student
{
    struct student* next;
    int age;
    int grade;
    string name;
    ....
}

从此学校对于学生的管理就变成了对结构体链表的管理,我们可以通过访问结构体的信息,来对链表进行增删查改(对学生进行扩招,开除)。

管理的本质不是管人,而是管理数据。

对学生的管理,就是我们计算机管理的建模过程。

我们可以总结对事务的管理:

先描述,再组织

操作系统管理核心有:


1.进程管理

2.内存管理

3.文件/IO管理

4.驱动管理

这些管理都遵循:先描述,再组织。

再看计算机的层状结构

对于下三层,我们知道操作系统通过先描述,再组织,将底层的硬件管理好。我们知道,操作系统给用户提供了良好的使用环境,那么用户是谁呢,又如何提供良好的环境呢?

广义上:用户包括所有使用计算机的人,

狭义上:用户是开发者(这里我们用户默认为开发者)。

在技术层面上,操作系统是可以实现,用户直接使用操作系统提供的各种功能的,但是因为不能确保群众中有没有坏人,因此操作系统是不完全信任用户的,用户不能直接使用操作系统,但是操作系统由不得不为用户提供服务。

因此,为了确保安全,操作系统会把各个功能,封装成一个一个的系统调用函数,用户只能通过系统调用函数,来获取操作系统的数据,因为系统调用函数是操作系统实现的,因此用户只能获得有限的数据,有效的防止群众中的坏人进行破坏。

一般用户想访问操作系统数据或者硬件,必须通过系统调用。

由于系统调用函数使用起来比较麻烦

站在用户的角度,创造了外壳程序(shell,图形化界面),让用户使用一些简单的指令就可以调用系统调用函数。

站在开发者的角度,是可以直接调用系统接口的,但是为了一些小白考虑,将一些系统接口封装成了各种各样的函数,打包形成库,方便了所有开发者使用,不用自己去写,而是直接调用库函数,提高了开发效率,降低开发成本。

库函数于系统调用函数是什么关系?

上下层(库函数里面封装了系统调用函数)。

因此:

广义上的操作系统:包括操作系统,shell(外壳程序),语言库,系统调用

狭义的操作系统:操作系统(以为就是我们平时所说的Linux内核)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker安装rabbitmq并安装死信队列插件

环境 debian11 docker 20.10.22 rabbitmq 3.10.0 拉取镜像到本地 docker pull rabbitmq3.10.0 实例化 docker run -d --name rabbit -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PASSadmin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:…

国标GB28181安防监控系统/磁盘阵列EasyCVR(V.3.4)新亮点:免保活功能

TSINGSEE青犀近日发布了EasyCVR安防管理平台的V.3.4版本,其中一大亮点就是很多朋友都在咨询的“免保活”功能,那么,什么是“免保活”功能?又该如何配置呢? 在EasyCVR平台有个【按需直播】按钮,顾名思义&…

3Dmax快捷键大全,让你的创作飞起来!附赠3dmax工具箱插件,快来收藏吧!

你是否曾经在3Dmax中因为繁琐的操作而感到困扰? 今天,我将为大家带来一份精心整理的3Dmax常用快捷键宝典,让你在建模、材质编辑、动画制作等各个方面都能游刃有余,让你的创作飞起来!! 💡 选择与…

专业证件翻译哪里比较正规?

随着国际化的步伐不断加快,我们与国外的交流日益频繁,无论是出国留学、旅游还是商务活动,都离不开证件翻译。那么,在选择证件翻译服务时,我们应该注意哪些事项呢?哪里能找到正规的翻译服务呢? 我…

Flink的容错机制

容错机制 容错:指出错后不影响数据的继续处理,并且恢复到出错前的状态。 检查点:用存档读档的方式,将之前的某个时间点的所有状态保存下来,故障恢复继续处理的结果应该和发送故障前完全一致,这就是所谓的检…

Flutter自定义TextInputFormatter实现金额输入框,同时解决iOS数字键盘不能输入小数点的问题

一、实现的效果 二、金额输入框基本要求 只能输入.和数字小数点后只能有俩位小数点不能作为开头 三、在iOS设备上这里还有个坑,数字键盘上这个小数点会根据你手机设置的不同国家地区来决定显示是.还是, 如下 所以这个时候最好的解决办法是允许输入.、数字和,然后在…

C++ Qt开发:CheckBox多选框组件

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍CheckBox单行输入框组件的常用方法及灵活运用…

GPT分区好处不言而喻!如何在Windows 11中将MBR转换为GPT分区

学习如何在Windows 11上将MBR转换为GPT分区将使你的计算机更好地组织起来。 GPT分区(GUID分区表)优于MBR分区,因为它允许128个分区,并且支持远大于2 TB的分区(每个分区最多支持1880万TB的空间)。另一方面&…

npm安装,idea中启动vue失败

node 设置配置之后,要查询时,会从.npmrc中读取路径 .npmrc自己创建的(默认情况下.npmrc会创建在C盘中) 我创建的在D:\studay-and-working\node16.14\node_modules\npm中 指定.npmrc文件,因为默认会访问C盘的.npmrc文件…

redis-学习笔记(Jedis string 简单命令)

mset & mget 批量设置和获取键值对 可以看出,参数都是可变参数 (就是说, 可以写任意个) 代码演示 getrange & setrange 获取和设置 string 类型中 某一区间的值 代码演示 append 往字符串的末尾拼接字符串 代码演示 incr & decr 如果 string 中为数字的话, 可以进行…

小程序禁止滚动穿透,page-meta

使用场景:页面中有弹窗,并且弹窗里数据超过弹窗的高,要在弹窗做滑动操作,当弹窗滑动到底部的时候,继续划动会导致底层页面的滚动,这就是滚动穿透。这种情况对于体验感很不友好。 解决办法:使用p…

vs2017+qt5.14.2遇到的问题

1、在安装qt插件后,导入pro文件时,报 msvc-version.conf loaded but QMAKE_MSC_VER isn’t set 修改E:\Qt\Qt5.14.2\5.14.2\msvc2017_64\mkspecs\common\msvc-version.conf文件中添加

MySQL——库,表基础操作

目录 一.库的操作 1.显示当前的数据库列表 2.创建数据库 3.字符集和校验规则 4.操纵数据库 5.删除数据库 6.数据库备份与还原 7.查看连接情况 二.表的操作 1.创建表 2.查看表结构 3.修改表 4.删除表 一.库的操作 1.显示当前的数据库列表 show databases; 2.创建数…

配电房电力智能运维系统

配电房电力智能运维系统是一种采用先进的信息技术手段,对配电房的电力设备进行实时监控、数据分析和管理的系统。它能够提高电力设备的安全性和效率,降低运维成本,为用户提供更加优质、高效的电力服务。 该系统依托智能运维工具-电易云&#…

自定义Mybatis LanguageDriver性能优化

场景:高并发情况下mybatis 动态sql 解析 锁问题优化 优化前 并发测试 XMLLanguageDriver 类 的 createSqlSource 方法有锁 而且 每次执行时都会走该方法 优化前 : 线程有Block 优化后的 LanguageDriver public class CustomXMLLanguageDriver im…

【CANoe】CANoe使用XCP读取观测量

文章目录 1、硬件连接:配置CANoe的CAN端口,连接到ECU标定对应的CAN口2、检查是否支持AMD/XCP3、加载a2l文件并配置相关信息4、选择需要的标定量和观测量5、在CANoe中系统变量中可查看刚才添加的量6、添加标定量和观测量到Data Window中7、开启CANoe工程&…

深度学习|词嵌入的演变

文本嵌入,也称为词嵌入,是文本数据的高维、密集向量表示,可以测量不同文本之间的语义和句法相似性。它们通常是通过在大量文本数据上训练 Word2Vec、GloVe 或 BERT 等机器学习模型来创建的。这些模型能够捕获单词和短语之间的复杂关系&#x…

【Python】计算最少排班人数(2)

接前一文章 部分关键代码及方法: 程序界面代码: winTk() win.config(bg#F2F2D7) win.geometry(550x440) win.title(最优排班计算器)frameFrame(win,width500,height60,bg#F2F2D7) frame.grid(row0,column0,columnspan5) l1Label(frame,text选择文件&a…

数字工厂管理系统建设层级分为哪几层

随着工业4.0时代的到来,数字工厂已成为制造业转型升级的必经之路。数字工厂管理系统作为数字工厂的核心组成部分,对于提高生产效率、降低成本、提升质量等方面具有重要意义。数字工厂管理系统的建设层级一般分为以下几个层次,本文将对其进行详…

vue 实现签字功能

1、安装&#xff1a;npm install vue-esign --save 2、main.js文件中全局引入&#xff1a; // 签字 import vueEsign from vue-esign Vue.use(vueEsign) 3、页面内容 <vue-esign ref"esign" :width"800" :height"300" :isCrop"isCro…