【Linux旅行记】探究操作系统是如何进行管理的!

文章目录


🎉博客主页:小智_x0___0x_

🎉欢迎关注:👍点赞🙌收藏✍️留言

🎉系列专栏:Linux入门到精通

🎉代码仓库:小智的代码仓库


什么是操作系统?

在上篇【Linux】冯诺依曼体系结构思想中我们介绍了计算机的各个部件的主要功能,以及他们工作的方式和步骤,但是这些设备都很笨,只能提供基本的功能,就好比键盘来说,它就只能从键盘来获取数据,等待被使用,那么就少不了一个管理者,来管理这些设备,这个设备可以在合适的时间使用合适的工具去完成任务,那么这个管理者就是操作系统(OS)

在整个计算机软硬件架构中,操作系统的定位是:一款纯正的"搞管理"的软件!

操作系统概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,shell程序等等)

操作系统的目的

  • 与硬件交互,管理所有的软硬件资源
  • 为用户程序(应用程序)提供一个良好的执行环境

接下来我们通过计算机层状结构来了解操作系统:

底层硬件

  • 计算机底层硬件是指计算机系统中直接参与数据处理、存储和传输的实体部件,包括中央处理器(CPU)、内存、硬盘、主板、显卡、网卡等。这些硬件组成了计算机的核心部分,是计算机系统能够正常运行的基础。

驱动程序

  • 驱动程序是一种软件,它允许操作系统或其他软件与硬件设备进行通信。驱动程序通常由硬件制造商提供,用于控制硬件设备的操作和性能。通过安装正确的驱动程序,操作系统可以识别设备并与之通信,从而确保设备能够正常工作。常见的驱动程序包括打印机驱动程序、显卡驱动程序、声卡驱动程序等。没有驱动硬件设备是无法使用的。

就好比我们平时使用无线鼠标的时候,把USB接口插入电脑之后的几秒钟是用不了鼠标的,过了几秒后,电脑右下角会弹出驱动安装成功之类的提示,此时我们的鼠标才能正常使用,一般的驱动程序操作系统会自带,也有少部分的需要我们去手动下载。

操作系统

  • 操作系统是计算机系统中最基本的系统软件之一,它是一种控制和管理计算机硬件与软件资源的程序集合,为应用程序提供运行环境和服务。操作系统负责管理计算机的内存、文件系统、输入输出设备、网络等硬件资源,并提供进程管理、内存管理、文件管理、网络管理等核心功能。

操作系统就好比银行的管理人员,可以将一家银行比作一个计算机系统,操作系统就像银行的管理人员,负责协调银行内部各个部门之间的工作,确保银行正常运行。具体来说,操作系统可以:

  1. 管理银行的硬件资源,如ATM机、服务器、网络设备等,保证这些设备能够正常工作。
  2. 管理银行的软件资源,如数据库、应用程序等,确保它们能够高效地运行。
  3. 管理银行的数据,如客户信息、账户信息等,保证数据的安全性和完整性。
  4. 管理银行的业务流程,如开户、存款、取款等,确保各个环节的顺畅进行。
  5. 管理银行的安全性,如防火墙、加密技术等,保证银行系统不受到黑客攻击和病毒感染。

通过这些管理措施,操作系统可以让银行更加高效、安全地运营。

总结:操作系统帮助用户,管理好下面的软硬件资源!

那么新的问题又来了,操作系统为什么要管理好软硬件资源呢?

操作系统需要管理好软硬件资源,主要是为了提高计算机系统的性能和可靠性,确保应用程序能够正常运行。以银行为例,如果操作系统不能管理好软硬件资源,可能会导致以下问题:

  1. 银行的ATM机无法正常工作,客户无法进行取款和存款操作,影响银行的服务质量和客户满意度。
  2. 银行的数据库出现故障,客户的账户信息丢失或泄露,对客户的财产安全造成威胁,同时也可能损害银行的声誉。
  3. 银行的应用程序崩溃或运行缓慢,导致客户无法正常办理业务,影响银行的业务效率和收益。
  4. 银行的网络受到攻击或病毒感染,可能导致银行系统瘫痪,造成严重的经济损失。

通过管理好软硬件资源,操作系统可以最大限度地避免这些问题的发生,确保银行的正常运营和服务质量。

总结:操作系统通过管理好底层的软硬件资源(手段),为用户提供一个良好的执行环境 (目的)


操作系统里面会有各种数据。可是,操作系统本身并不相信任何用户!但是不相信你,但是可以让你用。

举个栗子

在银行,银行也不会相信你,在我们平时取钱办理业务的时候,只能通过一个小窗口来进行办理,其他的基本都是用防弹玻璃隔开的,给我们用户只提供一个窗口。如果银行相信每一个人,变成开放的话,什么人都可以进银行,那么就可能会出现资金丢失等的问题。甚至有些人无心的把某些设备误触了造成财产损失,为了避免这些问题银行就会把自己封闭起来,但又不能完全封闭这样就不能为用户提供服务也就没人回来银行办理业务,因此银行会给我们开放各种窗口来给我们用户提供服务,这样银行就可以在不相信用户的同时还能帮你办理各种业务。

操作系统也是这样,操作系统在不相信任何用户的情况下,还要给用户提供一个良好的执行环境。

理解系统调用接口

操作系统保证数据安全,也为了保证给用户提供服务,操作系统以接口的方式给用户提供调用的入口,来获取操作系统内部的数据。

操作系统使用C语言写的,所以操作系统上的接口本质上就是C语言的一个函数,是函数就要有返回值,参数等等。就好比我们要去银行取钱,我们就要带上自己的身份证,银行卡,存折之类的,来通过窗口交给银行的工作人员,工作人员通过内部认证确认无误后,再来帮我们取钱。 操作系统接口也是如此,我们通过系统接口可以传递一些参数,就可以拿到我们想要的系统数据,以便于我们继续开发。
这样自己内部函数调用 ---- 系统调用
所有的访问操作行为,都只能通过系统调用来完成。

系统调用可以对用户输入的参数进行审核,因为系统调用的代码是操作系统自己写的,不会出现恶意修改的现象,这样操作系统既保证了自己安全的情况下,又为上层提供服务了,有了这些系统调用接口,我们就可以允许用户对底层的软硬件资源进行间接管理,所以就有些人基于系统调用接口来设计实现各种各样的软件啦。

但是因为系统调用接口难度太大,所以就有人对这些操作系统调用接口进行封装,将底层操作系统封装成库。

就比如我们平时使用的scanfprintfscanf是从键盘中获取数据到内存,其实本质上是scanf函数通过调用系统接口去访问硬件资源,printf函数也是通过调用系统接口来访问显示器资源。

但凡是涉及到硬件系统的编程语言,都是通过调用系统接口来实现的,所有的编程语言都是在系统调用接口之上的。无论编程语言怎么变化,系统调用接口都是不会变的。

总结:

系统调用接口是操作系统提供给用户程序的一组函数,用于访问操作系统内部的数据和资源。这些接口本质上是C语言的函数,可以传递参数和返回值。所有的访问操作行为都只能通过系统调用来完成,这样可以保证操作系统的安全性和可靠性。系统调用接口可以被封装成库,方便用户程序的开发和使用。无论编程语言怎么变化,系统调用接口都是不会变的。
库函数和系统调用之间是上下层的调用和被调用的关系!库函数在上,系统调用在下!

操作系统是如何进行管理的?

什么是管理?

这里我们来举一个例子,在大学里,有校长,有辅导员,有学生,宿管等等。其中最典型的管理者就是校长 。我们大学生就是最典型的被管理者 ,但是我们从开学到毕业估计也见不到校长几次,甚至不知道校长长什么样子,不知道校长叫什么名字,但是我们确实被管理了,所以说明管理者和被管理者是不需要见面的。

那么问题又来了管理者在不见到被管理者的情况下,是如何进行管理的呢?

比如我们在公司中上班,有一天被老板叫到办公室,老板说,小张最近在公司怎么样啊,工作顺不顺利啊,干了什么事啊,有哪些事情没干啊,有什么困难啊?我们可以发现这个过程中老板是为了获取信息,所以见不见面不是必须的,只要能够获取信息就可以,所以我们只要把信息管理起来就可以完成管理工作。

所以管理的本质:通过对 数据的 管理达到对人的管理。

再来回到大学这个例子,假如我们大学规定挂科达到9门就要被责令退学,小张同学今年 刚好挂了第9门课,然后到每年期末校长都会收到这些挂科信息,校长拿到了小张的挂科信息,就对小张说,你挂了9门课了,可以去办理退学了。在这个过程中校长获取了小张的挂科信息,进而对小张进行了管理。进一步说明了管理的本质就是通过对数据的管理来达到对人的管理。

那么又有新的问题了,管理者和被管理者的面都不见,管理者如何拿到我们的数据呢?

在大学中我们的成绩挂科情况会通过辅导员来进行汇总,来提供给校长,那么辅导员是管理者吗?

我们这个世界上所做的事情就分为两种:

  1. 做决策
  2. 做执行

真正的管理者他的核心工作应该放在做决策上,具有决策权

再来回到这个例子当中,辅导员对于学生大部分工作是没有决策权的,所以辅导员不算是真正意义上的管理者,而是在做学校安排的一些工作,而是一个执行者。

所以管理者需要通过执行者来获取被管理者的数据信息。

回到我们的计算机当中,校长就相当于操作系统,辅导员就是驱动程序,学生就是软硬件资源。

驱动程序来获取软硬件资源,再将获取的资源交给操作系统,操作系统再对数据进行处理,以达到对软硬件资源的管理。

比如我们的网卡在日常使用中遇到了故障,那么驱动程序就会把错误信息传递给操作系统,操作系统能自己处理的话就自己处理,处理不了就会将错误信息报告给用户,来告知我们网卡有问题了。

操作系统是如何管理硬件信息呢?

我们再来回到大学这个例子。校长想要收集每个学生的信息,就给各个学院的辅导员发了一张Excel表格上面有要收集的信息,等辅导员收集好信息之后,校长看着眼前的这一大堆表,陷入了沉思,心想这要找一个人还不得给我找累死,正好这个校长之前是个程序员,他就想着把这些学生的信息用一个结构体保存起来,再加上一个结构体指针把这些学生一个个用链表链接起来,解释代码如下:

cpp 复制代码
struct student
{
	char 学号[];
	char 姓名[];
	char 班级[];
	char 手机号[];
	int 身高;
	................
	struct student* next;
};

通过结构体把每个学生的属性信息保存起来,再通过链表将每个学生链接起来。

这样保存成链表,就可以把对学生信息的管理,转换成对链表的增删查改。

假如我们学校要选举行运动会,校长要在全校学生中找一个身高最高的,有了链表就可以将这个问题转换为,遍历这个链表找到身高属性最高的那个节点,就可以查看到这个人的所有信息。

那么有了链表,校长就只需要把学生链表管理好就可以了,再也不用对着Excel表格疯狂查找了。

这样我们就成功的将 对学生的管理 转换成为了 对链表的增删查改!

这里我们小小总结一下:校长在列举学生信息的过程叫做描述的过程,而把每个学生的结构体链接起来的过程叫做组织的过程。这样子我们就可以得到对数据的管理的过程分为两个步骤:

  1. 先描述:用struct结构体保存属性信息
  2. 再组织:用结构体指针将结构体对象链接起来。

在操作系统中也一样,我们需要定义一个结构体,结构体里面存储硬件设备的各种属性比如名称,设备状态。设备容量等等,这样一来一个结构体对象就代表一个硬件设备,接下来再用各种结构体指针将这些结构体对象链接起来,对这些设备链表进行管理。以至此,在操作系统中,管理任何对象,最终都可以转换成为对某种数据结构的增删查改!

🍀小结🍀

今天我们学习了"Linux操作系统是如何进行管理的"相信大家看完有一定的收获。种一棵树的最好时间是十年前,其次是现在! 把握好当下,合理利用时间努力奋斗,相信大家一定会实现自己的目标!加油!创作不易,辛苦各位小伙伴们动动小手,三连一波💕💕~~~,本文中也有不足之处,欢迎各位随时私信点评指正!

相关推荐
IT_陈寒4 小时前
Vue的响应式把我坑惨了,原来问题出在这
前端·人工智能·后端
key_3_feng4 小时前
ADI边缘AI开发板MAX78000FTHR开发实战:从零开始点亮LED
人工智能·开发板
胡志辉的博客4 小时前
多智能体协作,不是多开几个 Agent:从中介者模式看 OpenClaw 和 Hermes Agent
人工智能·设计模式·ai·agent·中介者模式·openclaw·herman
QQ676580084 小时前
智慧工厂之扬尘识别 铲车装载识别 工程重型机械识别 磁铁识别 深度学习YOLO格式图像识别第10435期
人工智能·深度学习·yolo·扬尘识别·铲车装载·工程重型机械·磁铁识别
Raink老师4 小时前
【AI面试临阵磨枪】KV Cache 是什么?为什么能加速推理?如何实现?
人工智能·ai 面试
代码中介商4 小时前
手把手教你Linux 打包压缩与 gcc 编译详解
linux·运维·服务器·编译·打包·压缩
longerxin20204 小时前
阿里云AlmaLinux操作系统允许root登录配置步骤
linux·服务器·阿里云
独小乐5 小时前
019.ADC转换和子中断|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·驱动开发·笔记·嵌入式硬件·mcu·arm
xuanwenchao5 小时前
ROS2学习笔记 - 2、类的继承及使用
服务器·笔记·学习
newsxun5 小时前
第十六届北京国际电影节东郎分会场启幕
人工智能