【Linux】冯诺依曼体系、再谈操作系统

目录

一、冯诺依曼体系结构:

1、产生:

2、介绍:

二、再谈操作系统:

1、为什么要管理软硬件资源:

2、操作系统如何进行管理:

3、库函数:

4、学习操作系统的意义:


一、冯诺依曼体系结构:

1、产生:

首先,计算机的诞生就是解决人无法计算的问题的,所以要想建立人与计算机之间的练习,必须要通过输入设备到计算机中,然后在通过计算机的运算结果进行执行算术和逻辑运算处理之后再通过输出设备给人看的,

既然计算机能够进行运算,但是什么时候从输入设备获取数据,什么时候输出数据到输出设备等,这些是不知道的,这个时候就需要控制器来进行上述过程的控制,这样进行计算机运算的运算器,进行计算机控制的控制器这两个加起来就还有一个名字--------CPU

有了输入,输出,运算,控制,本来计算机应该就可以跑起来了,但是由于输入设备和输出设备相较于CPU的处理是极为缓慢地,毕竟它们的设计需求和功能需求不同

设计需求‌:输入设备和输出设备的设计主要是为了快速响应和传输数据,而不是进行大量的数据处理。因此,它们的处理速度和复杂度较低

功能差异‌:CPU是计算机的核心处理单元,负责执行复杂的计算和指令。相比之下,输入设备和输出设备的功能相对简单,不需要高速处理能力

那么整体来说,这就会导致计算机的整体效率变慢(这是根据木桶原理一个系统的整体能力或效率并不取决于其中表现最好的部分,而是取决于表现最差的部分),这样用户使用起来就不舒服,计算机就不能够走向市场,所以就在输入设备和CPU,输入设备和CPU之间增加了内存,

内存主要作用是作为临时存储设备,在计算机执行程序过程中存放程序程序所处理的数据‌‌,内存使得CPU可以快速访问数据,避免了从硬盘读取数据带来的延迟,提高了计算机的运行速度‌,内存在冯诺依曼体系结构中就起到了缓冲作用,能够加快计算机运算流程。

内存提高效率主要是通过内存预取将指令和数据在被运算器实际使用前,预先置于存取速度更快的内存中,以减少CPU等待数据加载的时间。

2、介绍:

如今,几乎所有的计算机都是以冯诺依曼体系结构来构成基本单元的,冯诺依曼体系结构由五部分组成:输入设备,输出设备,存储器,运算器与控制器。

输入设备:键盘、鼠标、网卡、磁盘、话筒、摄像头

输出设备:显示器、音响、网卡、磁盘

存储器:也就是上面所讲的内存,主要是对数据进行预加载

运算器:计算机中对数据进行算术运算和逻辑运算

控制器:什么时候将输入设备的数据放入到存储器,什么时候运算器从存储器中读取数据,什么时候将运算器的数据放回到存储器中, 什么时候将存储器中的数据输出。

注意:

这里的存储器指的是内存
不考虑缓存情况,这里的CPU只能对内存进行读写,不能访问外设(输入或输出设备)
外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取
所有设备都只能直接和内存打交道

这些硬件之间用“线”连接起来,叫做总线,总线又分为两种,一类是系统总线,一类是IO总线

系统总线:cpu和和内存中进行交互的线

IO总线:内存和外设(输入输出设备)交互的线

二、再谈操作系统:

之前我们了解过操作系统是一款管理软硬件资源的软件。

接下来我们更深层次的理解:操作系统为什么要进行管理,如何进行软硬件资源管理的呢?

1、为什么要管理软硬件资源:

首先要对计算机的结构有认知,计算机是一个层状结构构成的:

接下来主要就是根据上图来进行分析与理解:

操作系统帮助用户,管理好下面的软(驱动程序)硬件(网卡,磁盘等)资源,通过上述的手段,为用户提供一个良好(稳定,高效,安全)的执行环境(目的)

操作系统对下管理

底层硬件与驱动程序:所有的硬件能够被软件/操作系统访问都要配上对应的驱动程序

操作系统并不是直接和底层的硬件打交道的,而是通过驱动层而访问底层硬件,这样提高了系统的稳定性、安全性和兼容性,还简化了硬件管理,使得操作系统能够更好地适应不同的硬件环境

操作系统主要进行以下管理:

进程管理‌:进程管理实质上是对处理机执行时间的管理,即如何将CPU合理地分配给每个任务。

内存管理‌:包括内存的分配和回收、内存的保护和内存的扩充,目的是尽量提高内存的使用效率

驱动管理:对计算机设备驱动驱动程序的分类、更新、删除等操作

文件管理‌:文件管理涉及文件的存储空间管理、目录管理、文件操作管理和文件保护。文件管理系统负责文件的存储、检索、修改等操作,解决文件的共享、保密和保护等问题‌

用户与操作系统:

操作系统里面有各种数据,但是操作系统不相信用户(它怕用户把它里面的数据乱改了),那么操作系统即需要保证自己的数据安全,也要保证能够给用户提供服务,那么操作系统就以接口的方式给用户提供调用的入口,来获取操作系统内部的数据

如上的这部分就是类似于银行的管理方式,银行里面有很多钱,银行的目的也是服务于老百姓的,但是银行也不相信群众(因为群众里面有坏人,这就对应着有的用户会乱改操作系统中的数据),那么银行就开了几个窗口,当群众想要去取钱的时候就通过这些窗口来进行取钱(这就对应了操作系统以接口的方式给用户提供服务)

那么什么是接口呢?

接口就是操作系统  用C实现的自己内部的 一个个函数调用,比如说我要访问int x,不能够直接访问数据,要使用操作系统提供的接口如getx来访问该数据。

通过接口的调用就是系统调用:

这种调用就叫做系统调用(system call),用户的所有访问操作系统的行为,都只能通过系统调用完成,系统调用是操作系统给用户提供的接口,如果一个用户需要在程序中使用操作系统的服务,则只能通过系统调用。

‌系统调用是‌操作系统提供给‌用户的接口,允许运行的进程与底层硬件设备进行交互。通过系统调用,用户可以执行各种底层操作,如‌文件操作、‌进程控制、‌设备管理等。系统调用是操作系统留给应用程序的一个接口,使得用户能够通过这些接口请求操作系统提供服务

这种基于系统调用接口上面的开发就叫做系统编程

1、执行一个命令就得先从磁盘加载到内存,对应到冯诺依曼中就是将数据从输入搬到内存里面,这个工作是通过调用系统接口来进行完成的

2、操作系统在使用的时候系统调用接口难度比较大,所以就有各种各样的人将这些系统调用接口做了各种各样的上层封装,有人就基于操作系统设计了各种各样的语言供其他程序猿来进行编程开发,有人就将系统调用接口以及语言上的个种功能封装成库给别人使用

任何语言,进行间接访问硬件,就必须经过操作系统,而经过操作系统必须进行系统调用

2、操作系统如何进行管理:

首先要理解什么是管理:

我们以在大学的管理系统为例,这里只认为大学中有三类人:校长,辅导员,学生,他们所扮演的角色分别对应着:

校长 ----- 管理者         辅导员 ----- ?      学生 ----- 被管理者

很明显,校长对应着管理者,学生就对应着被管理者,并且他们之间:

1、管理者和被管理者是不需要进行见面的,那么在没有进行见面的前提下,如何进行好管理呢?---------通过数据,对,只需拿到对学生的数据就可以对其进行管理(其实见面的目的也是对其进行数据的收集)

2、那么管理者和被管理者没有进行见面,那么如何拿到对应的数据呢?------ 这就需要辅导员了,在生活中我们其实就一直在执行两件事,决策和执行,这对应到这个体系其实就是校长作为决策者进行决策,辅导员作为执行者 进行执行校长的决策,如下就是三者之间的管理关系

那么对应起计算机中的软硬件资源,操作系统就对应着校长,硬件就对应着学生,驱动程序就对应着辅导员,那么校长对学生进行管理就是操作系统对硬件进行管理的,一个通过辅导员,计算机中的操作系统就是通过驱动程序进行管理硬件的,操作系统就是进行决策的,驱动程序就执行这些决策,然后让硬件执行相应的效果

但是上述有一个问题:如果学校的人非常多,那么校长直接对这些数据进行管理就很不好搞,对于操作系统,管理着的硬件那么多, 它是如何对某个硬件进行管理的呢?

依然通过学校系统管理的例子进行解释:

对于校长来说,一个学生有许许多多的信息(名字,学号,年龄,户籍......)那么要对这些数据进行管理,首先将学生的各个属性通过类进行封装,这种将学生的信息列举出来的过程就叫做描述的过程

然后通过将这些类进行实例化出各个学生,然后进行链接,就能够获得一个有着所有学生数据的链表,这样,校长对学生的数据进行管理就转换成了对这个链表的维护了。这种将一个个学生进行描述,然后创建出链表进行维护,这个过程就叫做组织的过程

上面总体来说就是:校长就利用学生有的各个属性,创建一个结构体,描述了一个学生。然后将这个类实例化出每个学生对象,并且将这些对象组织起来,成为一个链表,就可以将对学生的数据进行管理转换成了对这个链表的维护。

知道上述的例子后,回到操作系统:操作系统管理软硬件数据也就是和上述差不多的,先描述,再组织,就像之前学习C++的时候,先学习类与对象,然后在学习各种数据结构对这些对象进行数据管理,这也就是先描述再组织,那么就知道在操作系统中,管理任何对象,最终都可以转化为对某种数据结构的增删查改

管理者管理被管理者,实际上是先将被管理者的各种信息进行描述,然后再将这些类实例化出多个对象,将这些对象根据某种数据结构组织起来,最后管理者(操作系统)管理 被管理者(硬件)实际上就是对数据结构的管理

把数据描述出来,通过数据把对象定义出来,然后把它们组织起来就转化成了对数据结构的增删查改,这个动作是必须的,因为计算机是只能够这么做的

操作系统如何管理底层硬件:

操作系统管理各种各样的设备,内存,进程,文件,驱动,比如操作系统对下面的硬件做管理,就需要在操作系统内部描述一个又一个的设备,每一个设备都是用同样的结构体描述的,不同的设备填上不同的属性值,然后对每个设备构建属于这个设备的对象,然后把所有的对象管理链接起来,然后操作系统要增加,删除特定的设备就转化成了在操作系统内部对特定设备在组织之后形成的进行增删查改,所以操作系统内注定会存在大量的数据结构,所以就需要先学完数据结构,再学习学习操作系统

所以以后面对所有的工程问题就需要了解管理的目标是谁,管理的对象是谁,应该以什么样的结果组织起来就可以了。

总结来说,回答三个问题:

操作系统是什么:

操作系统是一款管理软硬件资源的软件

操作系统为什么要管理软硬件资源:

操作系统帮助用户,管理好下面的软硬件资源(手段)

为用户提供一个良好(稳定,高效,安全)的执行环境(目的)

操作系统是如何管理的:

操作系统先描述再组织,在操作系统内部对被管理对象进行建模,形成某种对应的数据结构,所以对软硬件资源的管理就会被转化成对某种数据结构的增删查改

3、库函数:

例如:我们使用printf函数进行打印,是不能够直接从用户层跳到硬件层的,必须要让操作系统“知道”,所以就必须要贯穿操作系统,也就是说从用户访问硬件必须经过操作系统,但是操作系统不相信任何人,那么就需要在库中封装各种接口,那么库函数和系统调用是调用和被调用的关系,是上下层的,库函数在上,操作系统在下,因为系统调用接口就是操作系统的一部分,是紧跟着操作系统的,库函数相较于操作系统更远就必须在更上处,

在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发

所有的C++、Java等语言进行开发都是在操作系统之上进行开发调用的

4、学习操作系统的意义:

我们学习操作系统的意义就在于操作系统是不变的,语言可能会变,可能会被淘汰,也会有新语言的产生,但不管用什么语言,怎么变,操作系统是不变的,我们不仅仅要与时俱进学习新的知识,还要了解那些在计算机领域中永远不会改变的知识。

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

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

相关文章

斗破QT编程入门系列之二:GUI应用程序设计基础:UI文件(四星斗师)

斗破Qt目录: 斗破Qt编程入门系列之前言:认识Qt:Qt的获取与安装(四星斗师) 斗破QT编程入门系列之一:认识Qt:初步使用(四星斗师) 斗破QT编程入门系列之二:认识…

ffmpeg命令

1. 修改视频的数据速率 ffmpeg.exe -i video.mp4 -r 30 -c:v libx264 -b:v 1500k output.mp42. mp4与h264互相转换 ffmpeg.exe -i a.mp4 -vcodec h264 output.h264 ffmpeg.exe -i output.h264 -vcodec mpeg4 output.mp4

前端三件套-css

一、元素选择器 元素选择器&#xff1a;利用标签名称。p,h1-h6...... 行内样式&#xff08;内联样式&#xff09;&#xff1a;例如<p style"color:red;font-size:50px"> id选择器&#xff1a;针对某一个特定的标签来使用。以#定义。 class&#xff08;类&a…

c++设计模式demo

模式设计原则 依赖倒置原则 ⾼层模块不应该依赖低层模块&#xff0c;⼆者都应该依赖抽象 &#xff1b; 抽象不应该依赖具体实现&#xff0c;具体实现应该依赖于抽象&#xff1b; ⾃动驾驶系统公司是⾼层&#xff0c;汽⻋⽣产⼚商为低层&#xff0c;它们不应该互相依赖&#x…

操作系统学习笔记-4.1文件管理

文章目录 文件的逻辑结构1. 顺序结构特点应用场景示例 2. 索引结构特点应用场景示例 3. 链接结构特点应用场景示例 总结 文件目录文件的物理结构1. 连续分配&#xff08;Contiguous Allocation&#xff09;2. 链接分配&#xff08;Linked Allocation&#xff09;隐式链接 3. 索…

ES文档:文档操作_doc(7.9.2)

用心记录技术&#xff0c;走心分享&#xff0c;始于后端&#xff0c;不止于后端&#xff0c;励志成为一名优秀的全栈架构师&#xff0c;真正的实现码中致富。 ElasticSearch文档的操作&#xff1b; 添加文档 新建一个索引 goboy-blog&#xff0c;如果添加文档索引不存在则会创…

深入解析 WinForms MVVM 模式中的事件驱动与数据驱动

前言 在传统的 WinForms 开发中&#xff0c;事件驱动模型&#xff08;Event-Driven Model&#xff09;是核心&#xff0c;它通过控件的事件&#xff08;如点击按钮、改变文本等&#xff09;触发业务逻辑。然而&#xff0c;MVVM 模式引入了数据驱动&#xff08;Data-Driven&…

Python中的 if __name__ == ‘__main__

在Python中&#xff0c;if __name__ __main__: 这行代码有一个特定的用途和含义。为了理解它&#xff0c;我们需要先了解Python中的__name__变量以及Python脚本是如何执行的。 __name__变量 每个Python模块&#xff08;python文件&#xff09;都有一个内置的属性__name__。当…

【系统面试篇】进程与线程类(2)(笔记)——进程调度、中断、异常、用户态、核心态

目录 一、相关面试题 1. 进程的调度算法有哪些&#xff1f; 调度原则 &#xff08;1&#xff09;先来先服务调度算法 &#xff08;2&#xff09;最短作业优先调度算法 &#xff08;3&#xff09;高响应比优先调度算法 &#xff08;4&#xff09;时间片轮转调度算法 &am…

大数据工具 flume 的安装配置与使用 (详细版)

参考网址&#xff1a;Flume 1.9用户手册中文版 — 可能是目前翻译最完整的版本了 1&#xff0c;上传安装包 安装包链接&#xff1a;文件下载-奶牛快传 Download &#xff5c;CowTransfer 口令&#xff1a;x8bhcg 1&#xff0c;切换盘符到安装目录 cd /opt/moudles 解压文件…

使用uni-app框架开发各种web前端程序

使用uni-app框架开发各种web前端程序是目前非常流程的开发方式&#xff0c;比如开发APP、小程序、H5等等&#xff0c;是一个使用 vue 开发所有前端应用的框架&#xff0c;开发者编写一套代码&#xff0c;可发布到ios&#xff0c;安卓、H5、以及各种小程序&#xff08;微信、支付…

鸿蒙ArkTS中的布局容器组件(Column、Row、Flex、 Stack、Grid)

在鸿蒙ArkTS中&#xff0c;布局容器组件有很多&#xff0c;常见的有&#xff1a;   ⑴ Column&#xff1a;&#xff08;垂直布局容器&#xff09;&#xff1a;用于将子组件垂直排列。   ⑵ Row&#xff1a;&#xff08;水平布局容器&#xff09;&#xff1a;用于将子组件水…

简单介绍一下mvvm mvc mvp以及区别、历史

MVC&#xff08;Model - View - Controller&#xff09; 因MVC架构的灵活性&#xff0c;架构图形式很多&#xff0c;仅供参考 历史&#xff1a; MVC 是最早出现的软件架构模式之一&#xff0c;其历史可以追溯到 20 世纪 70 年代&#xff0c;最初被用于 Smalltalk - 80 环境。…

黑马程序员linux学习【持续更新】

Linux基础 一、Linux简介 1.分类 不同领域的主流操作系统&#xff0c;主要分为下 几类&#xff1a;桌面操作系统、服务器操作系统、移动设备操作系统、嵌入式操作系统。 桌面操作系统 操作系统特点Windows用户数量最多MacOS操作体验好&#xff0c;办公人士首选Linux用户数…

Vert.x,应用监控 - 全链路跟踪,基于Zipkin

关于Zipkin Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System)&#xff0c;能够收集服务间调用的时序数据&#xff0c;提供调用链路的追踪。Zipkin每一个调用链路通过一个trace id来串联起来&#xff0c;通过trace id&#xff0c;就能够直接定位到这次调…

ENSP作业——园区网

题目 根据上图&#xff0c;可得需求为&#xff1a; 1.配置交换机上的VLAN及IP地址。 2.设置SW1为VLAN 2/3的主根桥&#xff0c;设置SW2为VLAN 20/30的主根桥&#xff0c;且两台交换机互为主备。 3.可以使用super vlan。 4.上层通过静态路由协议完成数据通信过程。 5.AR1作为企…

从壹开始解读Yolov11【源码研读系列】——Data.dataset.py:模型训练数据预处理/YOLO官方数据集类——YOLODataset

【前情回顾】在上一篇文章记录了YOLO源码data目录下的 base.py 文件&#xff0c;其中定义了一个可灵活修改的数据加载处理基类——Class BaseDataset 灵活基类博文地址&#xff1a;https://blog.csdn.net/qq_58718853/article/details/143249295 【实验代码】所有实验代码上传至…

HFSS 3D Layout中Design setting各个选项的解释

从HFSS 3D LAYOUT菜单中&#xff0c;选择Design Settings打开窗口&#xff0c;会有六个选项&#xff1a;DC Extrapolation, Nexxim Options, Export S Parameters, Lossy Dielectrics, HFSS Meshing Method, and HFSS Adaptive Mesh. DC Extrapolation 直流外推 直流外推分为标…

【板栗糖GIS】——如果安装的vscode版本落后了,如何无障碍更新

【板栗糖GIS】——如果安装的vscode版本落后了&#xff0c;如何无障碍更新 今天想安装新扩展插件时发现vscode版本有点旧&#xff0c;于是在不影响插件的情况下更新。 打开vscode软件&#xff0c;点击设置检查更新&#xff0c;如果有需要更新的直接安装到原目录&#xff0c;如…

数字化转型必看!华为数字化最全合集(192页PDF限免下载 )

今天给大家整理了6份关于华为数字化的资料&#xff0c;共计192页&#xff0c;干货满满&#xff01; 资料已经全部打包&#xff0c;划到文末添加大师兄即可免费下载&#x1f447;&#x1f447;&#x1f447; 一、华为实施数字化转型方法论与实践的业务解读 这份报告是华为实施数…