Linux ----冯诺依曼体系结构与操作系统

news2024/12/23 9:49:20

目录

前言

一、冯诺依曼体系结构

二、为什么选择冯诺依曼体系结构?

三、使用冯诺依曼结构解释问题

问题1:

问题2:

四、操作系统

1.操作系统是什么

2.为什么需要操作系统

3.操作系统怎样管理的

4.如何给用户提供良好环境

五、我们是怎样调用系统接口的

六、总结 


前言

了解冯诺依曼体系结构与操作系统,可以建立好计算机知识体系,至少在后面学习进程时,可以逻辑自洽。

一、冯诺依曼体系结构

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

我们当前的计算机主要由五部分组成:输入单元,输出单元,存储器,运算器和控制器。如下

二、为什么选择冯诺依曼体系结构?

为什么现在的计算机基本都选择了冯诺依曼体系结构?

这是因为我们要进行存储分级,计算机里几乎所有的设备都有数据能力,如CPU存储速度最快,内存其次,磁盘再次之。

如果不会存储速度进行分级,全部都是用最快的存储器,会造成价格极具昂贵的现象,我们这种普通老百姓根本承担不起。如三星、西数的硬盘,英伟达60系列显卡、intel i5家族才是主流用户的选择。

冯诺依曼体系结构中,CPU并不会和外设直接打交道,这是因为外设的存储效率太慢,直接交互会让计算机速度变很低,因为木桶效应。在数据层面上,CPU优先要和内存直接打交道。

我们读取磁盘中的数据进入内存,再让CPU与内存进行直接访问,这样在保证计算机效率的同时,也让成本尽可能的降低。这也是使用冯诺依曼体系结构的本质:用较少的钱,做出来效率不错的计算机。

如下是存储分级图。 

三、使用冯诺依曼结构解释问题

问题1:

在我们学C/C++语言时,总听说过一句话,程序要运行之前,必须要加载到内存?这是为什么呢?

这是因为程序=代码+数据,程序最终都需要CPU来执行,CPU在处理前需要先读取到这些代码和数据,我们刚刚了解到,CPU只和内存直接进行数据交互,因此需要先将数据加载到内存中,再让CPU进行相关数据的处理。

问题2:

你和你的朋友,在QQ上聊天,你发送了一个“在吗”,在硬件层面上,“在吗”这个在设备上的数据流动是怎样的?

数据从你的电脑中键盘输入,转到内存中,有CPU进行相应的打包处理,再通过网卡传输到你的朋友的电脑网卡端,你朋友的电脑接受到也会先加载到内存,再CPU进行相应的解包处理,最后再显示器上显示出来。

以上案例只是为了让大家理解冯诺依曼体系结构,具体流程肯定不仅仅只有网卡键盘显示器参与,还有其他硬件共同参与。 

四、操作系统

1.操作系统是什么

操作系统是一款软件,是可以进行软硬件资源管理的软件,也是第一个加载到内存里面的软件。

2.为什么需要操作系统

操作系统将软硬件资源管理好,并且给用户提供稳定、高效、安全的使用环境。(后面两点围绕这个展开)

3.操作系统怎样管理的

先回答上面第2点的第一句话:操作系统如何将软硬件资源管理好

操作系统管理的的核心是:进程管理、内存管理、文件/IO管理、驱动管理。如下图

他是如何管理好这些的呢? 我们举例子来理解。

比如在一个大学,校长是管理者,会做决策,辅导员或者老师做执行,学生是被动接受管理。那么校长是如何做决策的呢?

他总不能是跟小阿giao一样拍拍脑袋,随便管理决策的吧。他肯定是掌握了辅导员/老师提供的数据(姓名/成绩/班级/奖项等等),根据这些数据来进行管理,比如张三喜欢打架,成绩也不好,那我们就不要给张三奖学金,或者直接将张三开除了。再比如李四成绩好,品学兼优、辅导员和同学对他评价很高,那么就颁给李四一个三好学生。这也是为什么我们都见不到校长,但确确实实是校长在间接或直接管理着我们。

通过这个故事,我们可以看到管理的本质并不是管人,而是管理数据 !!!通过数据下发指令进行管理。

那么既然管理者管理的是数据,那么我将数据用 结构体/类 来描述很合理吧,比如上面的学生数据,我定义一个struct或者class,里面有名字、性别、身高、体重、成绩等等信息来描述。我们再使用链表或者红黑树等其他数据结构,将学生类都串起来,方便我们进行增删改查等处理。

对应到计算机中,对应的操作系统就是管理者代表校长,驱动程序代表辅导员/老师,硬件被管理者学生。

计算机将你要管理的内存、进程等分别使用结构体或者类来描述清楚,再使用容器进行组织起来。

总以经结一句话:先描述、再组织。   任何管理工作都可过这六个字进行计算机建模。

如何理解先描述呢?

人是通过属性来认识世界上的任何事情/事物的。比如我描述一个物品,它是液体的,黑色的,外包装为红色,可以喝的,带气泡的,喝第一口非常好喝的,喝后面一般的,喝起来冲鼻的。大家很容易联想到可乐。这些内容都是该物品的属性。由此我们可以得出一个结论,重要属性的集合就代表这个人或者事物

既然先描述,再组织,那么操作系统内部,一定存在大量的数据对象。我们只要描述清楚对应的硬件,用数据结构将他们组织起来,那么我们对硬件的管理就可以转化为对数据结构的管理。这样就完成了对管理事物的建模过程。

比如,我们想知道,我们显卡是否在正常工作,那么操作系统就会去查看显卡的相关数据对象,查询后,再将结果返回给上层。 

4.如何给用户提供良好环境

回答上面第2点的第二句话,操作系统如何给用户提供稳定、高效、安全的使用环境

现在我们已经知道了操作系统很棒,可以将软硬件资源管理好,那他是如何给用户提供良好的使用环境的呢?

这里的用户,在广义上指所有人,狭义上指开发者,因为至少至少,操作系统得让开发者用起来舒服,让开发者能开发各种软件,如qq,微信等给所有人使用。

那么用户能直接通过操作系统去访问到底层硬件的数据对象,同时可以修改吗?

答案是不能,因为群众里面有坏人,你无法保证每个人都正常的对底层硬件进行访问修改,万一有坏人或者不小心修改了数据,我们后面查看到的结果与实际可能就不一样了。

就像银行一样,不相信我们,有保安和好几米厚的墙来防止坏人,但还是要设置窗口让业务员与我们沟通。同理,虽然操作系统不相信我们,但还是要给我们提供接口来为我们服务。我们要通过操作系统访问软硬件,也就需要调用操作系统给我们的接口。

五、我们是怎样调用系统接口的

一般一个用户要想访问非常底层的操作系统数据或者访问硬件,必须贯穿整个层状结构,这就意味着用户必定要调用系统调用接口。比如C语言中打印的printf,他一定是封装系统调用,不然不可能在屏幕中给我们进行显示。

但是系统调用,用起来会很麻烦。

站在用系统的人的角度,操作系统给我们提供了外壳程序(linux的shell,windows的图形化界面),我们可以通过外壳程序,来通过简单的操作进行系统调用

站在在系统上开发的人的调度,可以直接调用系统接口,但是开发的人也会有小白,如果将系统接口封装成为各种好用的函数,打包形成库!所有开发者,用很多功能的时候,不用再自己去写了,而是直接调用库函数即可。

现在我们再回过头来看一下这个图片,是不是容易理解了,用户通过shell外壳和库访问系统调用接口,通过接口对访问操作系统,再通过操作系统对硬件的管理进行访问硬件。

六、总结 

不要求了解很多,只需要知道冯诺依曼体系结构中的  “先描述再组织”。

计算机管理硬件

1. 描述起来,用struct结构体

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

还有系统调用和库函数概念

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

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

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

相关文章

imgaug库指南(18):从入门到精通的【图像增强】之旅

引言 在深度学习和计算机视觉的世界里,数据是模型训练的基石,其质量与数量直接影响着模型的性能。然而,获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此,数据增强技术应运而生,成为了解决这一问题的…

CodeQL基本使用

0x01 安装codeql 去github下载一个对应版本的codeql捆绑包。 https://github.com/github/codeql-action/releases 然后解压,这里我是解压到桌面 然后用添加到环境变量中 然后在任意位置输入codeql命令,如果能有以下提示就表示安装成功 然后下载vscode…

戴尔服务器有8条内存条,开机有一条内存条自检提示出错,可以不用管他吗,有影响吗?

环境 戴尔R730 问题描述 戴尔服务器有8条内存条,开机有一条内存条自检提示出错,可以不用管他吗,有影响吗? 提示B1内存有问题 解决方案 不能,有影响,安装系统时卡住在启动节目无法正常安装,…

mysql原理--redo日志1

1.redo日志是个啥 我们知道 InnoDB 存储引擎是以页为单位来管理存储空间的,我们进行的增删改查操作其实本质上都是在访问页面(包括读页面、写页面、创建新页面等操作)。我们前边唠叨 Buffer Pool 的时候说过,在真正访问页面之前&a…

神州数码集团荣获“TiDB 社区最佳贡献企业”

日前,神州数码在 TiDB 开源社区中获得了“TiDB 社区最佳贡献企业”奖。PingCAP 颁发该奖项以认可生态企业在社区中的卓越贡献和积极参与。 神州数码与 PingCAP 最早于 2020 年 12 月 28 日进行战略合作,基于全球领先的开源分布式关系型数据库 TiDB&…

详细分析Java中的@JsonFormat注解和@DateTimeFormat注解

目录 前言1. JsonFormat注解2. DateTimeFormat注解3. Demo3.1 无注解3.2 有注解 4. 拓展 前言 下文中涉及MybatisPlus的逻辑删除的知识,可看我之前这篇文章:详细讲解MybatisPlus实现逻辑删除 对应的Navicat设置数据库最新时间可看我这篇文章&#xff1…

修改SSH默认端口,使SSH连接更安全

以CentOS7.9为例: 1、修改配置文件 vi /etc/ssh/sshd_config 2、远程电脑可连接,暂时将SELinux关闭 # 查询状态 getenforce # 关闭 setenforce 0 # 开启 setenforce 1 3、SELinux设置(如果启用),semanage管理工具安…

雷达信号处理——恒虚警检测(CFAR)

雷达信号处理的流程 雷达信号处理的一般流程:ADC数据——1D-FFT——2D-FFT——CFAR检测——测距、测速、测角。 雷达目标检测 首先要搞清楚什么是检测,检测就是判断有无。雷达在探测的时候,会出现很多峰值,这些峰值有可能是目标…

GPT function calling v2

原文:GPT function calling v2 - 知乎 OpenAI在2023年11月10号举行了第一次开发者大会(OpenAI DevDays),其中介绍了很多新奇有趣的新功能和新应用,而且更新了一波GPT的API,在1.0版本后的API调用与之前的0.…

品牌出海新风尚:联名营销战略全面解析

随着全球化的推进,品牌出海已经成为许多企业拓展市场的重要战略之一。然而,要想在海外市场中获得成功,品牌需要面对一系列的挑战,包括文化差异、市场竞争、消费者需求等等。在这样的背景下,联名营销作为一种有效的品牌…

【ChatGPT-Share,国内可用】GPTS商店大更新:一探前沿科技的魅力!

使用地址:https://hello.zhangsan.cloud/list GPTS商店预览,王炸更新 精选应用: 系统内置应用: 绘画应用: 写作应用: 高效工具应用: 学术搜索和分析应用: 编程应用: 教育应…

6.3、SDN在云计算中的应用

目录 一、SDN概念 1.1、传统网络机制 1.2、SDN网络机制 1.3、二者区别 1.4、SDN架构 二、云数据中心 2.1、公有云环境特点 2.2、两大挑战 2.3、云数据中心引入SDN技术解决两大挑战 三、SDN云计算解决方案 3.1、SDN云计算解决方案之控制平面openflow协议 3.1.…

vue前端开发自学,父子组件传递数据,借助于Props实现子传父

vue前端开发自学,父子组件传递数据,借助于Props实现子传父! 之前我们说过,Props这个是用在父传子的情况下,今天为大家介绍的代码,就是在父组件里,自定义事件,绑定一个函数,让子组件可以接受到这…

架构01 - 知识体系详解

架构,又称为知识体系,是指在特定领域或系统中的组织结构和设计原则。它涵盖了该领域或系统的核心概念、基础理论、方法技术以及实践经验等。架构的主要作用是提供一个全面且系统化的视角,帮助人们理解和应用相关知识,并指导系统的…

PHP短链接url还原成长链接

在开发过程中,碰到了需要校验用户回填的短链接是不是系统所需要的,于是就需要还原找出短链接所对应的长链接。 长链接转短链接 在百度上搜索程序员,跳转页面后的url就是一个长链接。当然你可以从任何地方复制一个长链接过来。 长链接 http…

MySQL 按日期流水号 条码 分布式流水号

有这样一个场景,有多台终端,要获取唯一的流水号,流水号格式是 日期0001形式,使用MySQL的存储过程全局锁实现这个需求。 以下是代码示例。 注:所有的终端连接到MySQL服务器获取流水号,如果获取到的是 “-1”…

2022 年全国职业院校技能大赛高职组云计算赛项试卷

【赛程名称】云计算赛项第一场-私有云 某企业拟使用OpenStack 搭建一个企业云平台,以实现资源池化弹性管理、企业应用集中管理、统一安全认证和授权等管理。 系统架构如图 1 所示,IP 地址规划如表 1 所示。 图 1 系统架构图 表 1 IP 地址规划 设备…

【Oracle】数据库对象

一、视图 1、视图概述 视图是一种数据库对象 视图 > 封装sql语句 > 虚拟表 2、视图的优点 简化操作:视图可以简化用户处理数据的方式。着重于特定数据:不必要的数据或敏感数据可以不出现在视图中。视图提供了一个简单而有效的安全机制&#x…

使用 gitee+sphinx+readthedocs 搭建个人博客

给大家安利如何快速搭建个人博客网站! 前言 这是我本地运行的一个使用sphinx构建的博客服务,这些文章,都是用markdown写的。 一直有个想法,就是把自己写的这些文件,搞成一个博客网站,放到网上&#xff0c…

正面PK智驾,华为与博世「硬扛」

12月20日,随着奇瑞星纪元ES的亮相上市,华为与博世,分别作为新旧时代的供应商角色,首次在高阶智驾赛道进行正面PK。 11月28日,奇瑞和华为合作的首款车型智界S7上市,作为星纪元ES的兄弟车型,搭载华…