【Linux】冯诺依曼体系结构 OS的概念

🪐🪐🪐欢迎来到程序员餐厅💫💫💫

          主厨:邪王真眼

主厨的主页:Chef‘s blog  

所属专栏:青果大战linux

总有光环在陨落,总有新星在闪烁


前言废话:

      很好,距离上次更新已经过去5个月了,我这五个月干嘛去了呢,首先是当时学校快期末了我就在复习,我也不是计算机专业,要复习的和计算机没什么关系,所以博客就暂时停了,本来打算暑假好好学习,结果又迷上算法了,我学算法也不太爱写笔记,所以也没发博客,除此之外暑假还要学游泳和开车,就这样暑假过去了,开学第一个月,我又在摆烂打游戏当天命人,看番,直到国庆假期最后一天终于是觉得玩尽兴了,开始学习。

       这边的知识落下很多了,Linux的课还有很多,c++那边的知识点也忘了还要去复盘,大二了可以变多了,有一大堆实验,总之很忙,任重而道远啊。


一、冯诺依曼体系结构

我们都知道cpu的全称是中央处理器,可以说是电脑里的老大哥,软件和硬件都得靠他办事,那么我请问cpu和硬件之间的交互是如何的呢?

A:直接交互                          B:间接交互

看图可知,其实是间接交互的。

输入设备的数据进入存储器,存储器把数据交给cpu处理,cpu处理后返回给存储器,存储器再把数据传送给输出设备 。

为什么这样设计,直接让cpu和外设直接交互不是更省时间吗,还搞个中介?

所以我们接下就要开始解答这个问题了

硬件介绍

  • CPU

价格高昂,制作工艺复杂,高精尖技术,访问速度极快,空间极小(几十kb)

  • 内存

价格较贵,制作较复杂,访问速度快,空间较大(8/16G)

  • 普通外设

价格较低,访问速度慢,


结构分析

假如直接让cpu和外设交互

由于CPU的运算速度极快,所以数据刚送到CPU就立刻被计算出结果,对CPU来说就是等了很久才来活,结果刚发力就做完了,这就导致CPU强大的性能完全无法体现出。

这其实就是木桶原理,即一个木桶可以存储的水的容量取决于最短的木板而不是最长的木板。

但是如果要提高外设的速度,就要升级他的工艺,更换更好的材料,但是外设那么多,如果都做很大的提升,就会导致计算机成本极高,甚至于普通人工作一辈子也无法买一台电脑。

于是内存就出现了,他的造价和性能都处于外设和CPU之间,用它当一个中介,就可以提升计算机的性能了,,,,,,,,,吗?

并不是,因为木桶效应依旧存在,其实内存有个神器的功能,他可以对CPU未来要使用的数据进行预加载,也就是预判CPU的行为,这样当CPU忙完这个活,才歇一小会就会发现下一个活已经送过来了,于是他的性能就会被充分利用。

于是乎,我们并没有提高太多成本,就提高了计算机的性能,所以现在我们普通人也可以用上计算机了。

而这个让内存充当中介的结构就叫做冯诺依曼体系结构,他于1945年提出,现在cpu、外设、内存都在更新迭代,但它沿用至今。

混淆点:

  • 存储器就是内存,它是一个硬件设备,他可以存储一定的数据,他的硬件名称叫做内存条,我们电脑现在基本都是8G或16G的内存。
  • 磁盘也是硬件设备,也可以存储数据,空间是500G,但我们将它当作输入输出设备看待

二、OS概念及功能 

开宗明义:OS是一款帮助用户进行软硬件资源管理的软件。

计算机的软硬件架构如下图

首先OS是一款软件,我们在电脑C盘目录下即可找到文件名是windows的文件夹,这里放的就是操作系统的系统驱动程序、DLL文件、系统配置和其他重要的操作系统文件

OS对硬件进行管理

story time

       小明经过自己三年的努力后成功考入一所984.5高校,在校期间,他依旧刻苦学习,钻研知识,尤其喜欢编程,甚至期末拿了满分成绩。后来,学校想选拔一些学生去编程比赛,由校长亲自选人,那么问题来了,校长该怎么找到合适的人呢,其实很简单,把学生的c语言成绩排个序,找出最高的几个人就可以了。于是乎,小明就被校长发现,获得了参赛名额。
提出问题:在找的过程中,校长需要亲自去见那些学生吗?

答:不需要,它只需要处理学生的“c语言成绩”即可。 

事实上,不只是比赛,奖学金,保研,加学分,记过,是否可以毕业,这些对学生的管理操作都不

需要校长和学生一个个亲自接触,而只需要去观察学生的的绩点、综测、被举报的信息等等即可。

即:只需要对学生的个人信息进行处理即可。

现在是信息化时代了,用一张张个人信息表来记录已经过时了,我们可以直接把这些数据存到电脑

中,具体就是建立一个结构体,里面包含了学生的种种属性(身高,体重,爱好,特长,绩点等

等),然后给每个学生都赋值为一个结构体对象,为了防止数据丢失,我们可以把他们用链表再串

起来, 这样,就完成了管理者对被管理着的管理。

在这个过程中我可以发现,管理的本质不在于对你本人(这个看得见摸得着的存在)做管理,而在于对你的信息做管理。管理者的核心工作,就是根据你的数据来做决策

而这其实就是OS对硬件干的事!操作系统在管理硬件时,并不是管理它本身,而是管理他的数据。那么,如何拿到硬件的数据呢?这就是驱动的工作了。

每一个硬件都有自己的驱动,驱动是一份文件,它里面存储了硬件的详细信息

有些外设的驱动是你的电脑自带的,而有些,例如你自己买的鼠标,他就会提醒你去官网先下载好驱动,这也是为什么你直接把鼠标的usb接口插进去,电脑要等个一两秒才能被鼠标操作,因为这是OS去加载驱动的时间,加载完后OS才可以开始对鼠标的操作做出回应。

所以我们就知道了OS其实是先把驱动管理起来,然后再以驱动对硬件进行管理的。

就像校长要管理一堆学生一样,OS也要管理一堆硬件,他是如何管理的呢?

这就要提出OS管理机制的核心了。(重点!!!)

先描述,再组织

现在我要接入一个鼠标和键盘,那么首先OS会把他们的驱动加载进去,然后分别获得他们的信息

接着会建立一个结构体来存储他们的信息,

struct P
{
	char* name;
	bool st;
	int priority_num;
	//........
};

于是这个鼠标和键盘就被转化成了计算机中的数据,而这个过程就叫做“描述”,计算机有几十个外设就要建立几十个结构体,为了方便管理,我们就建立一个链表,把他们挨个连接起来。而当这鼠标被拔了,OS只要从链表里删掉这个节点就好了。为了达到其他目的,也可以用优先级队列,栈,队列进行管理,这个用数据结构把它们管理的操作叫做组织。这一整套操作就是OS的管理秘籍:先描述,后组织。

于是我们就讲完了下三层结构。

OS对用户提供服务

再上图的结构中,操作系统向上提供了系统调用接口,那OS为什么要这么做,还留一个接口,你直接让我随便用不好吗。

因为,操作系统不相信用户!!

OS把权限全给你打开了,万一你不小心删了这个重要文件怎么办,万一你给电脑搞出bug怎么办,万一你随便更改重要文件怎么办。毕竟哪怕顶尖程序员都会写出bug,又何况很多人都是电脑小白呢。但于是OS既要给你提供服务,还要保证你不乱来害了它,那他就只能把自己内部重要信息隐藏起来,以接口的方式提供服务了。

接着走是用户操作接口,包括shell外壳,库函数,指令

  • lib(库函数)

我们知道上层的很多就是我们日常用的软件,比如抖音,b站这种短视频的,王者,蛋仔这种游戏软件,PS,pr这种剪视频图片的,还有Proteus,matlab这种工作学习等等。他们显然是被程序员开发的,程序员是怎么开发的呢?有人立刻回答“写代码啊”

对,确实是c,c++等语言写出来,但我请问,为什么你写一个printf“666”,你的显示器就可以输出666,事实上printf是一个函数,而他底层调用的时系统的接口,系统给我们提供了几十种接口来进行各种操作,但他的使用门槛太高了,于是c,c++,java这些语言就把这些接口封装了一下,让程序员使用,当然,只要你够厉害想直接用系统接口写代码也是ok的。

  • 指令

对于指令也是同理,在linux为什么我写了ls敲一下回车,他就打印文件信息了,其实也是对相关接口的封装。

  • shell外壳

为什么你点一下图标的×号,就可以删除一个页面,双击一个文件就可以打开,这也是开发商在操作系统的接口基础之上,所进行的封装,显然用鼠标点击操作比输入指令代码来说学习成本低多了。

用户操作接口优点:

  1. 代码的跨系统移植,加入不封装我们写代码直接用对系统里的东西进行操控,那么在windows才可以跑的代码就无法在linux下跑,因为linux和windows是不一样的,于是你就要分别学习在两个系统怎么写代码,但现在可以直接让开发商写两个库,函数名都一样,但调用接口一个是windows一个是linux,那代码就可以跨平台跑了。

  2. 系统接口学习成本更高,用户操作接口降低了使用门槛

现在有了库函数,有了指令,有了shell外壳,程序员就可以开始更好的开发软件了,开发之后

那么普通用户就可以尽情的使用软件了。至此我们就简单的讲完了一款帮助用户进行软硬件资源管理的软件。

总结:

  1. 因为外设和cpu速度差异太大导致cpu性能不高,于是引入存储器充当二者交互的媒介,在预加载的作用下,提高了计算机效率。

  2. OS对下以先描述再组织的方式管理驱动进而管理外设,对上封装了功能接口,既保护了自己的安全也为用户提供了服务。

  3. 用户调用接口降低使用门槛,且具备跨系统移植能力

但是,OS到底是如何管理软件呢,这就涉及了进程的概念,于是乎,下节课继续吧。

 -----------------------------------------觉得有用的话,就关注一下吧------------------------------------------------


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

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

相关文章

将java项目jar包打包成exe服务

1.结构展示 2.注意事项 前提: 环境准备:jdk8 和 .net支持 { 1.控制面板》程序和功能》启用和关闭windows功能》.net的勾选》2.jdk8自行百度安装环境3.其他项目必须的软件环境安装等(数据库...) }第一次准备: 1.将打包好的jar包放到premiumServices.exe…

销冠教你如何转化观望客户

在销售实践中,常会遇到这样的场景:客户对我们的提案表现出极大的兴趣,但在执行阶段却显得迟疑,频繁表示“还需观望,再考虑”。这种态度不仅拖慢了项目进度,甚至可能导致项目完全停滞,从而错失宝…

Spring Boot技术栈在论坛网站开发中的应用

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

FLUX.1-dev-LoRA模型:用一张卡通图片总结4张真实人物照片One-Click-Creative-Template

在这个数字时代,创意图像生成正成为我们生活中不可或缺的一部分。Shakker Labs 推出的 FLUX.1-dev-LoRA-One-Click-Creative-Template 为我们带来了一个全新的体验。这款创新的模板模型专为文本生成图像设计,让您能够轻松创造出令人惊艳的照片。 模型功能…

听泉鉴宝在三个月前已布局商标注册!

近日“听泉鉴宝”以幽默的风格和节目效果迅速涨粉至2500多万,连线出现“馆藏文物”和“盗墓现场”等内容,听泉鉴宝早在几个月前已布局商标注册。 据普推知产商标老杨在商标局网站检索发现,“听泉鉴宝”的主人丁某所持股的江苏灵匠申请了三十…

qt QNetworkProxy详解

一、概述 QNetworkProxy通过设置代理类型、主机、端口和认证信息,可以使应用程序的所有网络请求通过代理服务器进行。它支持为Qt网络类(如QAbstractSocket、QTcpSocket、QUdpSocket、QTcpServer、QNetworkAccessManager等)配置网络层代理支持…

mysql innodb 引擎如何直接复制数据库文件?

mysql innodb 引擎如何直接复制数据库文件?介绍如下: 1、首先找到数据库文件所在位置 一般可以看my.conf/my.ini配置的文件的“datadir” 看示例: “MAMP”在Macos下的数据库文件位置: /Library/Application Support/appsolu…

展会亮点回顾|HMS汽车工业通信解决方案

2024 汽车测试及质量监控博览会(中国)(Testing Expo China – Automotive)于 8 月 28 日至 30 日在上海世博展览馆顺利举行。作为汽车测试技术领域的顶级盛会,来自全球的行业领袖和技术专家齐聚一堂,共同探…

值得细读的8个视觉大模型生成式预训练方法

大语言模型的进展催生出了ChatGPT这样的应用,让大家对“第四次工业革命”和“AGI”的来临有了一些期待,也作为部分原因共同造就了美股2023年的繁荣。LLM和视觉的结合也越来越多:比如把LLM作为一种通用的接口,把视觉特征序列作为文…

高速数字化仪,4路每路20M同步AD模拟信号采集卡——PCIe8531B/8532B

阿尔泰科技 型号:PCIe8531B/8532B 简介: PCIe8531B/8532B, 是4 通道12/14 位20Ms/s 采样数字化仪,专为输入信号高达 10M 的高频和高动态范国的信号而设计。模拟输入范围可以通过软件编程设罝为1V或者主SV。配备了容量高达256MB…

Java的评论大冒险:用代码征服API数据

在一个充满数字奥秘的虚拟世界里,Java勇士正准备踏上他的新征程:获取商品评论的API数据。这不仅是一次技术的挑战,更是一次与时间赛跑的较量。Java勇士,这位编程界的探险家,打开了他的IDE,准备开始这场冒险…

Qt贪吃蛇-游戏房间窗口(3)

目录 游戏房间 房间渲染 房间背景设置 设置房间标题和尺寸 运动逻辑 定义可能会用到的对象 向上移动逻辑 向下移动 向右移动 判断失败 绘制蛇 初始化贪吃蛇 创建食物 蛇的吃吃吃 绘制食物 连接上文 游戏房间 房间渲染 房间背景设置 背景图比例 绘制背景 设置…

【大模型】AutoDL部署AI绘图大模型Stable Diffusion使用详解

目录 一、前言 二、AI绘图大模型概述 2.1 AI绘图大模型介绍 2.2 AI绘图大模型特点 2.3 AI绘图大模型优势 三、主流的AI绘图大模型介绍 3.1 Midjourney 3.1.1 Midjourney介绍 3.1.2 Midjourney功能特点 3.1.3 Midjourney使用场景 3.2 Stable Diffusion 3.2.1 Stable …

【资料集】项目全周期过程管理资料、各类软件建设方案、源码梳理清单(全原件)

该资源库深度覆盖开发、运维、实施等核心流程,全面囊括项目从立项至结项的各类必需文档,如验收辅助材料、资质审核流程及投标策略方案等,确保项目生命周期的每个阶段都能找到相应的支持与依据。此外,资源库精心整理了研发流程细节…

代码随想录算法训练营第46期Day37,38,39,41

这几天晚上看比赛,就把刷题耽误了。还好是开新章节,前面的题都比较简单。 然后周天做完了又忘记发了 动态规划 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数 Day37前两道题太简单…

DBeaver查看已保存连接的密码

打开Dbeaver窗口菜单-首选项-工作空间,找到工作空间路径 在文件管理器中打开工作空间路径\General.dbeaver,找到credentials-config.json。 在Linux下,使用如下命令对credentials-config.json文件进行解密 openssl aes-128-cbc -d -K babb4…

简历怎么写?怎么准备面试?怎么让面试官感兴趣?

视频地址:如何写好简历打开找工作的第一道门_哔哩哔哩_bilibili项目介绍不过关,项目责任不清楚,项目技术方案有漏洞,项目优势不明显,八股文没有准备好。都是面试大忌讳。, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚…

AI 搜索战火重燃:Perplexity 企业版 VS Glean AI | LeetTalk Daily

“LeetTalk Daily”,每日科技前沿,由LeetTools AI精心筛选,为您带来最新鲜、最具洞察力的科技新闻。 在当今快速发展的人工智能(AI)领域,企业面临着日益增长的数据碎片化挑战。为了提高生产力和决策效率&am…

【element-tiptap】如何把分隔线改造成下拉框的形式?

当前的分隔线只有细横线这一种形式 但是咱们可以看一下wps中的分隔线,花里胡哨的 这些在wps里都需要使用快捷键打出来,真没找到菜单在哪里 那么这篇文章咱们就来看一下如何改造分隔线组件,改造成下拉框的形式,并且把咱们想要的分…

数据结构-八大排序之归并排序

归并排序 一、概念 归并排序(Merge sort)是建立在归并操作上的一种有效、稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使…