操作系统再理解

news2024/11/29 6:30:50

目录

1、概念

2、操作系统的结构

3、对操作系统的理解(管理角度)

4、OS对硬件是怎么管理的?


1、概念


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

广义的认识:操作系统的内核+操作系统的外壳周边程序(用户提供使用操作系统的方式)
侠义的认识:操作系统的内核

2、操作系统的结构


操作系统有很多功能,最核心的有四个:进程管理、文件系统、内存管理、驱动管理(硬件)
为了协调软硬件的使用,即当各种硬件设备有了改动,相应的要改动操作系统
改操作系统的时候,对应的也要改动硬件
这个就比较扯,双方互相掣肘
所以,为了协调双方,就再操作系统的软件层面和硬件层面多了一个驱动层
这个驱动层就只是为了给硬件提供一个接口,方便操作系统从硬件读取数据
因此,操作系统就不用直接跟硬件打交道,而是跟硬件自带的驱动程序打交道
每个硬件对应的都有一个驱动程序(也有可能某些硬件公用一个驱动程序)
一般硬件的驱动程序都是厂商自定义的

为什么会有操作系统呢?
对软硬件进行管理(手段),为用户提供一个良好(稳定的、安全的、高效的)的运行环境(目的)

3、对操作系统的理解(管理角度)


管理者对被管理者是如何进行管理的?
例如校长对学生的管理:
需要校长对人一对一吗?
不需要,只需要知道学生的数据即可,例如年级、成绩、表现、记过、奖励等等
校长知道了这个学生对应的数据,就可以做决策,是不管、是开除、是发奖学金、还是别的决定
所以,本质上,管理一个人,本质上是对这个人的数据信息进行管理
所以,管理,拿到数据才是目的
国家主席对国家的调控,需要国家的数据
总裁对企业进行管理,需要企业的数据
同理,操作系统管理硬件,也是需要硬件的数据信息

因此,拿到数据是关键
那么,拿什么数据?只需要拿到关键的属性数据即可
例如,学生比较重要的数据有:姓名、籍贯、性别、年级、紧急联系人、记过、成绩、、、
可是那么多学生,张三、李四、王五、赵六、田七、丘八、老九、、、假如说有5万名学生。形态各不相同,怎么管理?
假如校长是一个程序员,而且他只会写C,那么有没有可以同时管理不同数据的东西呢?
有,结构体。
所以,他就可以用一个struct对这5万名学生进行管理
可是,有5万个结构体,难道他要一个一个的struct吗?
不可能,写完估计也就退休了。
所以,这个时候,在一个又一个寂寞且孤单的夜晚,他在抽了一根又一根烟后,他想明白了。
加一个next指针
现在,校长对学生的管理,数据管理,就变成了链表的增删查改
例如说,要找一个数学成绩最好的人,直接遍历,然后返回这个人即可
张三智力超群,一年干完所有大学课程,直接毕业,这个时候只需要遍历链表,找到张三,改在学为毕业状态即可
以上这个过程,就是对学生管理工作的计算机建模过程

因此,任何语言,六个字:先描述、再管理

C++:封装、继承、多态
封装的本质是描述对象
而STL提供了各种容器,这些容器用来封装对象,是对对象的一种组织方式,
所以容器的本质就是数据结构

语言的精华:先描述、再组织

4、OS对硬件是怎么管理的?


当检测到键盘、鼠标等硬件时,操作系统就读取对应硬件的数据属性,先描述对象,设置为节点,然后将各个硬件的对象节点给组织起来

用户不能绕过操作系统访问访问硬件
因为硬件是操作系统管理的,如果你可以直接访问硬件你,绕过了操作系统,就有可能对操作系统的硬件管理产生影响
同样,用户也不能直接访问绕过操作系统访问硬件的驱动程序等,因为非常有可能用户自己访问软硬件之后,
不小心修改了一些核心数据,就可能导致整个操作系统的崩溃
因此,为了保证操作系统的稳定性和安全性,在操作系统外,给用户提供了一层系统接口(system call)
上面有诸多关于系统调用的接口,方便用户通过操作系统和底层的软硬件进行交互
这个系统接口很像银行的柜台

但是系统接口,也是需要建立在对操作系统有一定理解的基础上才很好的使用
例如,一些不识字的大爷大娘来银行办理业务,他们对银行的业务了解几乎为0
在这种情况下,他是没有办法去使用系统接口的
所以,银行为了照顾、方便大部分人,所以还设置了大堂经理

同样的,为了方便用户可以更好的与操作系统下的软硬件进行交互
操作系统在提供系统接口的同时,在系统接口的上面一层还提供了一层软件层
这一层的软件层将系统接口进行封装,用人们便于理解的方式描述接口
这一层,就是我们用户操作接口
例如,shell外壳、lib(C、C++标准库)、部分指令等
再往上,就是编程语言
所以,我们原来使用的printf、scanf就是经过封装过后的系统接口,用C语言描述成为我们便于理解的样式
所以,库函数是对系统接口的封装
因此,一切技术的发展,都会使得操作、理解方式越加的简单化、便于理解化
操作系统存在的意义也同样如此,是为了让人能够更好的使用电脑这个工具

不同的操作系统提供的系统接口不一样
因此,如果使用系统接口直接进行代码书写,不具备跨平台性
但是C、C++写的代码却可以有跨平台性
为什么?
因为C、C++的标准库已经做好了跨平台的工作
当你在windows下运行,提供的是windows的系统接口
当你在linux下运行,提供的是linux的系统接口

因此,一个完整的操作系统,是包括系统软件进行各种管理加上系统接口

操作系统存在的意义,就是为了让人更好的使用工具,仅此而已

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

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

相关文章

mysql的下载、安装

首先进入官网:MySQL 点击“downloads”进入下载界面 2.往下滑动滚轮,点击“mysql community...(公开版)” 3.往下滑,找到并单击“install for Windows” 4.选择版本:初学者可以使用较低版本,较…

Java:定时任务无法正常执行(scheduling + ShedLock)

目录 一、场景二、代码片段三、排查四、原因五、解决 一、场景 1、使用定时任务(scheduling) 分布式锁(ShedLock)定期执行一段代码 2、configureTasks()对于任务执行周期的更新是正常的 3、但任务方法无法被执行 二、代码片段 三、排查 1、确认Trigger没有问题 2、查看red…

Mac用户必备神器:Default Folder X,让文件操作更快捷、更智能!

Default Folder X for Mac是一款功能强大的文件管理辅助工具,它为Mac用户带来了前所未有的文件操作体验。🌟 无论是日常办公、学习还是娱乐,Default Folder X都能帮助你更高效地管理文件,让你的工作更加得心应手。💼 …

java-spring 图灵 02 手写spring

01.idea中创建一个maven管理的空项目 02.模拟创建出spring容器类,这里叫wzpApplicationContext,创建的时候会自动加载配置类的数据: 这里wzpApplicationContext对标的是AnnotationConfigApplicationContext public class wzpApplicationCo…

【算法刷题 | 回溯思想 04】4.15(分割回文串)

文章目录 7.分割回文串7.1题目7.2解法:回溯7.2.1回溯思路(1)函数返回值以及参数(2)终止条件(3)遍历过程 7.2.2代码 7.分割回文串 7.1题目 给你一个字符串 s,请你将 s 分割成一些子…

鸿蒙原生应用再新丁!企查查 碧蓝航线 入局鸿蒙

鸿蒙原生应用再新丁!企查查 碧蓝航线 入局鸿蒙 来自 HarmonyOS 微博13日消息,碧蓝航线 将启动鸿蒙原生应用开发,双方将基于HarmonyOS NEXT鸿蒙星河版的原生流畅等特性,进一步提升游戏流畅度和画面精美度,为用户提供更…

汽车零部件制造迎来智能化升级,3D视觉定位系统助力无人化生产线建设

随着新能源汽车市场的蓬勃发展,汽车零部件制造行业正面临着前所未有的机遇与挑战。为了提高产能和产品加工精度,某专业铝合金汽车零部件制造商决定引进智能生产线,其中,对成垛摆放的变速箱壳体进行机床上料成为关键一环。 传统的上…

iframe嵌入海康威视摄像头监控视频画面

前言:海康威视有非常好的开放平台支持(海康开放平台),如遇到技术问题,可以先花点时间在开放平台视频教程板块学习一下。直接问客服可能会比较懵,而且sdk客服和api客服互相分离,一开始可能都不知道问谁。 在开放平台上…

《二》Qt Creator工具介绍与使用

一、关于界面 点击文件--->新建文件或项目会出现如下图: 我们选择第一个 点击下一步下一步: 继续下一步直到结束: 二,具体文件介绍 我们点击pro查看以下 QT core gui第1行 表示使用qt的core和gui库,如果以后…

【JAVA基础篇教学】第十四篇:Java中设计模式

博主打算从0-1讲解下java基础教学,今天教学第十四篇:Java中设计模式。 设计模式是解决软件设计中常见问题的可重复利用的解决方案。在 Java 中,常见的设计模式包括单例模式、工厂模式、观察者模式等。目前在基础教学篇中只展示常见的几种模…

背会这套面试八股文!还怕拿不到offer吗?

给各位小伙伴总结了软件测试的高频面试题,其中包含了多个方面的知识点,包括: 测试基础(102页) Linux基础(38页) MySQL (63页) ️ web测试(28页) APP测试(38页) selenium相关(50页) 性能测试(55页) 数据结构跟算法(51页) 大厂逻辑题(…

图深度学习(一):介绍与概念

目录 一、介绍 二、图的数据结构 三、图深度学习的基本模型 四、图深度学习的基本操作和概念 五、训练过程 六、主要应用场景 七、总结 一、介绍 图深度学习是将深度学习应用于图形数据结构的领域,它结合了图论的概念和深度学习的技术,用以处理和…

二叉树的创建和遍历(java)

简介 二叉树是一种常见的树形数据结构,它由节点组成,每个节点最多有两个子节点,分别称为左子节点和右子节点。这些节点以层次结构的方式组织在一起,每个节点都有一个父节点,除了根节点外,每个节点都有一个…

SpringBoot配置profile

一、profile简介 我们在开发Spring Boot应用时,通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。profile功能就…

用Python做一个游戏辅助脚本,完整编程思路分享!

一、说明 简述:本文将以4399小游戏《 宠物连连看经典版2 》作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对。对于有兴趣学习游戏脚本的同学有一定的帮助。 运行环境:Win10/Python3.5。 主要模块&#xff1…

吴恩达llama课程笔记:第七课llama安全工具

羊驼Llama是当前最流行的开源大模型,其卓越的性能和广泛的应用领域使其成为业界瞩目的焦点。作为一款由Meta AI发布的开放且高效的大型基础语言模型,Llama拥有7B、13B和70B(700亿)三种版本,满足不同场景和需求。 吴恩…

C语言:文件操作(三)

目录 前言 5、文章的随机读写 5.1 fseek 5.2 ftell 5.3 rewind 结语 前言 本篇文章继续讲解文件操作,讲解文件的随机读写,主要有三个函数:fseek;ftell;rewind。 前面讲解的函数都是对文件内容进行顺序读写&#x…

STM32CubeMx下载安装环境搭建及工程创建

一、stm32介绍 STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。除了被我们熟知的STM32,ST公司还有SPC5X系列、STM8系列等&…

【C++类和对象】类和对象的引入

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…