【Linux系统编程】管理理念和操作系统结构

目录

前言

操作系统是什么?

为什么要有操作系统?

管理到底是什么意思?

学校模型理解管理

银行模型与操作系统模型的对比

系统调用接口

第三方库/shell外壳/图形化界面


【Linux系统编程】管理理念和操作系统结构_第1张图片

前言

这一篇内容,我会先初步介绍一下操作系统,然后会进行说明管理的概念是什么,通过管理的概念引出操作系统在计算机软硬件中有关的部分!很感谢大家的访问,读完这篇文章,相信你会对操作系统这个概念有个全新的了解!

操作系统是什么?

我们先来看一张计算机软硬件的简略结构图

【Linux系统编程】管理理念和操作系统结构_第2张图片

 我们可以看到,操作系统是在用户层之下,在硬件层之上的

由图中我们也可以看到,操作系统并非硬件,那么它就是一个软件。

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

至于我们为什么下了这个结论,且看后续!

为什么要有操作系统?

 在我们解释为什么要有操作系统之前,我们先了解一下操作系统与它上下各种软硬件的关系

操作系统在这个结构中,扮演的是一个管理者

管理者:是进行决策和定规则的角色

驱动程序在这个结构中,扮演的是一个执行者

执行者:是进行执行的一个角色

硬件在这个结构中扮演的是一个被管理者的角色

被管理者:就是被管的

这个结构具体的运行流程是:操作系统定好决策后让驱动程序去控制硬件如何操作,操作系统不与硬件直接打交道!

很显然我们上面说的都是操作系统管理的手段!那么它这么做的目的是什么呢?

目的:是为了给上层的用户提供一个良好的、高效的使用环境

【Linux系统编程】管理理念和操作系统结构_第3张图片

总结:因为操作系统需要给上层的用户提供良好的、高效的使用环境,所以操作系统需要管理好下层的软硬件。这也就是操作系统在这个结构中的作用!

管理到底是什么意思?

在上文中,我们说到了操作系统通过驱动程序管理的硬件,但我相信你心中也有一个问题!

你说被管就被管?操作系统叫一声硬件就被管了?到底是操作系统是银角大王还是硬件是孙悟空?管理又是什么意思呢?

接下来我将用一个小例子解决你的这些疑惑

学校模型理解管理

首先,一个学校中,分为校长、辅导员、学生三个角色

那么我请问在这三个角色谁是管理者呢?毫无疑问是校长

那么谁是被管理者呢?毫无疑问是学生

有些人说不对,平时我在学校中都没怎么见到过校长,反倒是辅导员我经常见到,那么在这三个人中应该辅导员是学生的管理者!

那么我请问辅导员听谁的呢?显然是校长,那么校长在这三个人当中是管理者的角色无可厚非

有些人可能就纳闷了,我都没跟校长接触过,他是怎么管理我的呢?

那么我请问:管理你一定要看到你这个人?一定要一直跟着你吗?

显然不是的,我可以通过拿到你的数据,比如你计算机拿了满分,我可以根据这个满分对你下决策,不一定跟在你身边才是对你进行了管理

重点:管理就由管理你这个人,转化为了管理你的数据!

【Linux系统编程】管理理念和操作系统结构_第4张图片

于是校长通过你计算机满分的这个数据,对你下达了一个决策,去准备一下,参加xxxx比赛,于是实现了不与你接触就对你进行了管理。但我想说这其中出现了一些bug

首先,校长对你下达了一个决策,但校长不会与你接触,他是怎么下达给你的呢?

然后,校长不与你发生接触,又是如何拿到你的数据的呢?

于是,辅导员的作用就来了,辅导员通过把你的数据给校长,然后校长给辅导员说了他的决策,再然后辅导员再把决策下达给你 ,这时逻辑上就能说通了!

然后有一次,这学校一下子入学了50000个人,你们学校原本只有一个辅导员,于是辅导员把50000个同学的数据全部给了校长,校长直接懵了。于是他开始想办法,恰好校长就是一个优秀的程序员。他想到一个办法,他把这些学生的数据定义为了一个结构体类型描述这50000个同学的相似数据,例如:姓名、性别、成绩啥的,然后通过一个数据结构把这些数据连接起来(假设用的是链表),此时我们把这50000个同学的数据插入链表中,此时我们就由对学生本身的管理,转化为了对数据结构的增删查改

例如:

有一天又来了一个同学,校长再把它的数据用结构体创建一个变量,然后把这个结构体插入链表中

有一天校长喝醉了,说我今天一定要把成绩最差的3个人给开除了,于是校长就对这个链表进行了排序,然后找到最差的三个,把他们的结点从链表中删除

。。。。

在上述例子中,操作系统就是校长、硬件就是学生

操作系统通过把硬件信息用结构体描述出来,然后再用数据结构把这些结构体管理起来,把对硬件的管理转化为对数据结构的增删查改

而在linux中,这种管理方式也是非常常见的,我们可以广义化为管理的理念

管理的概念总结为6字:先描述、再组织

银行模型与操作系统模型的对比

在我们进一步理解什么是操作系统之前,我们先看下面的银行系统与操作系统的对比图

【Linux系统编程】管理理念和操作系统结构_第5张图片

我们可以看到,其实银行管理系统和操作系统是有异曲同工之妙的

银行的行长不会直接与电脑、桌子。。。硬件直接接触,他是通过管理保洁、宿管、库管、IT人员实现了对各种硬件的管理

比如说,银行的行长有一天需要换一些新的电脑,那么操作流程就是

先叫IT人员进行统计要换的电脑有多少,然后IT人员统计好以后把信息给到行长,那么行长就可以通过他的数据进行决策

同样的操作系统也会对驱动进行管理,让驱动去具体实现某些事件!这里就不多赘述了

当行长能把下面的这些人管理好的话那么他就是一个合格的行长

同样的当操作系统能把它及它之下的软硬件资源管理好它就是一个合格的操作系统,于是操作系统中要管理的东西我们分为4个,分别为:进程管理、文件管理、内存管理、驱动管理

其中驱动管理我们已经介绍过了,就是对应银行系统的管理行长之下的人员

进程管理

这个就好比在疫情期间银行外面有做扫健康码的工作人员,因为有扫健康码的要求,所以行长在门外设置了一个工作人员,工作人员把它的数据交给行长,行长决策,再比如有些时候银行有一些抽奖业务,行长也会让一个工作人员专门进行抽奖业务,而这些工作人员的目的就是为了实现某些任务,同样的操作系统也是为了实现某些任务所以创建了一个个的进程, 银行行长在不需要某些任务时就可以把工作人员撤掉,同样的操作系统在不需要某些进程时也可以把进程去掉!这也就是进程的管理

文件管理

这个我们就可以类比当我们在银行借了钱或者是存了钱以后以后会专门有一个档案记录了这些经历,银行行长需要把这些档案管理起来,操作系统亦是如此!

内存管理

这个我们可以假设此时银行的大小是50平米的,但此时人流量很大,基本上24个小时都有人来办理业务,因为银行的大小是固定的,于是行长就把工作人员由原来的5个人变成了15个人来轮班,这种行为也就对标了操作系统的内存管理

OK,我们有了以上的这些行长、宿管、IT人员、库管、保洁、再假设有工作人员此时银行就能开门营业了吗?难道你要存5块钱的时候走到银行里把钱给工作人员就把钱存起来了?

我们说不是的,下面具体说明

系统调用接口

 在银行中我们需要有柜台,柜台一般是有个非常小的口子然后玻璃很厚

为什么需要柜台呢?

因为银行不信任任何人!

哪怕你说你是个很善良的人,但银行不知道,银行也无法承担这种风险!所以为了安全考虑银行直接把你假设为坏人,这样的话风险就能降到最低

同样的操作系统靠近上层部分也有操作系统版的柜台,我们叫他系统调用接口,这个接口的作用是为了上层用户能使用到系统中的某些软硬件资源

为什么需要系统调用呢?

因为操作系统不相信任何人!

就比如当你恶意访问操作系统的时候把它内核中的资源全部破坏了怎么办?

所以任何人如果需要使用操作系统中的某些资源的时候只能使用系统调用接口

第三方库/shell外壳/图形化界面

ok,到此为止,银行已经能够正常营业了,但是每一个行业肯定是想越做越好的,在我们这个时代一般比较流行的就是方便简单的事物!

银行现在虽然可以进行正常的业务交互,但许多人其实并不会如何操作,所以银行一般就设置了几个不是面向银行,而是面向用户的工作人员,我们把它叫做服务人员!

当有了服务人员以后,以前不知道怎么跟柜台说明的人就可以把需要办理的业务告诉服务人员,再把所需材料给服务人员,用户就可以让服务人员与柜台人员进行交互就完成了此次的业务!

同样的,操作系统此时虽然能运行了,但有些系统调用接口过于基础,太难操作了,所以有些大佬就把操作系统的系统调用接口进行了封装,封装为了一个第三方库(例如boost库C库C++库。。。。)总的来说就是为了方便用户使用。shell外壳和图形化界面也是同理

【Linux系统编程】管理理念和操作系统结构_第6张图片

至此,操作系统的结构我也说明清楚了!这篇文章也到头了,欢乐的时光总是短暂!

                                这期内容就到这啦~感谢大家的支持!                                                               

你可能感兴趣的:(linux,运维,服务器)