【Linux取经路】冯诺依曼结构体系与操作系统的碰撞(二)

简介: 【Linux取经路】冯诺依曼结构体系与操作系统的碰撞(二)

二、操作系统

上面我们提到了很多硬件设备,如键盘、显示器、网卡、CPU等等,它们都有各自独特的功能,可以完成不同的工作,它们就像是一个个的工具,最终要被使用就必须要有一个角色将它们管理起来,该角色能够在合适的时间去使用合适的工具,操作系统就充当了这个角色。

操作系统的定位是:一款纯正的“搞管理”的软件。

📖概念

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

内核(进程管理、内存管理、文件管理、驱动管理)

其他程序(例如函数库、shell程序等等)

小Tips:我们把这种包含其他程序的操作系统概念称为宏观上的操作系统,微观上操作系统的概念只包括内核。

2.1 设计操作系统的目的

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

这两点相辅相成,我们需要从一下几个方面来深入理解。

📖计算机的层状结构


33b7a5e8c7824d7aa3ee24940eefe24d.png

📖什么是驱动程序?

所有的硬件要想被软件去访问,都必须配上相应的驱动程序,没有驱动程序是无法使用硬件的。举个例子:在电脑刚开机的时候,我们的鼠标,键盘虽然在物理上已经和电脑建立起了连接,但并不是直接就可以使用,往往需要等上几秒,等待的过程就是加载驱动的过程。所有的硬件都有它自己的驱动程序,一般的驱动程序操作系统会自带,也有的需要我们自行下载。

📖操作系统为什么要进行软硬件资源的管理?

以银行为例,在银行中有保安、保洁阿姨、柜员、行长等几种角色,其中保安负责维护银行秩序,保洁阿姨负责银行的卫生,柜员负责办理业务,行长负责管理银行的各种事务。前三种角色就对应计算机中的各种硬件,行长就对应于计算机中的操作系统。假如行长不履行他的管理职责,那么这家银行就很可能出现,安保措施不到位,柜员办理业务不积极,保洁阿姨不认真打扫卫生等各种问题,反正行长啥也不管,大家都开始摆烂,这样就会导致客户体验变差,大家都不想再到这家银行办理业务。

计算机也一样,假如操作系统不对各种软硬件资源进行管理,那么用户在使用该电脑的时候,就可能出现一会儿蓝屏、一会儿卡顿、一会儿没声音等各种各样的问题,这样一来会导致用户体验变差,最终就没有人想用这台电脑。而电脑作为工具,生产出来的目的就是让用户使用,因此操作系统对软硬件资源的管理,本质上是为了给用户提供一个良好的运行环境,这里的良好包括不限于稳定、高效、安全。

📖系统调用接口的理解

用户在计算机上的各种操作,最终都会被转换成硬件行为,例如用QQ发送消息,本质上会调用键盘、显示器、网卡等硬件设备;听歌,本质上会调用音响设备。这些硬件都是由操作系统进行调度的,这就意味着,当我们想用计算机干一些事情的时候,必须先经过操作系统。但是我们作为用户是无法直接去和操作系统进行交互的,因为操作系统本质是一款软件,它里面也会有各种信息,它不希望用户直接对这些信息进行随意的访问改动,因此操作系统为了保证自己的数据安全,也为了保证给用户能够提供服务,操作系统以接口的形式给用户提供调用的入口,来获取操作系统内部的数据。就像银行不允许我们直接到金库去拿钱一样,它给我们提供了很多办理业务的窗口,我们只能通过窗口去取钱,操作系统也是这样,我们只能通过系统调用接口去和操作系统进行交互。

20a55193e9014f549f71c20ffcdae150.png

操作系统是用C语言写的,所谓的接口本质上就是操作系统提供的一个函数,这个函数是在操作系统的内部具体实现的。既然是函数调用,那就需要有参数和返回值,就像去银行取钱,我们要把自己的身份证、银行卡等证件交给柜员,柜员确认无误后再将钱交给我们,系统调用接口也一样,它会对用户传递的参数进行合理性检查,确认无误后操作系统再去执行相应的操作,这样既保护了操作系统,也为用户提供了服务。

有了这些系统调用接口,就允许用户对底层的软硬件资源进行间接的管理。用户可以通过系统调用接口去要求操作系统调用某个硬件设备,所以就可以基于系统调用接口来设计实现各种各样的软件,例如shell外壳程序,用户可以在上面执行指令,而指令本质上也是可执行程序存储在磁盘上,要执行指令就需要把可执行程序从磁盘加载到内存,把数据从磁盘加载到内存这个动作,本质上是shell外壳程序调用系统接口来实现的。

直接使用系统调用接口是比较困难的,因此有人又对系统调用接口进行了上层封装,例如我们C语言中平时使用的scanf,它可以从键盘中读取数据到内存,本质上是scanf函数中通过系统调用接口去访问硬件。在同一台计算机上可以使用不同的编程语言来开发,这些语言只要是涉及到硬件的,都是通过系统调用接口来实现的,所有的语言都是在系统调用接口之上的。因此,语言可以发生变化,但是系统调用接口是永远不变的。我们把这种基于系统调用接口的开发,称作系统编程。

📖总结

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

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

库函数和系统调用之间是上下层的调用和被调用的关系,库函数在上,系统调用在下。

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

📖如何理解管理?

以校园管理为例,校长作为学校的管理者,学生作为被管理对象,那校长是如何管理学生的呢?每个学校都有自己的教务系统,教务系统里面存储了学生的各种信息,如姓名、学号、年龄、考试成绩、挂科情况等等。要评选奖学金的时候,校长只需要在教务系统中依据每个学生的成绩排个名,根据排名就可以把奖学金发给对应的学生。一名学生因挂科次数过多需要勒令退学,也是校长在教务系统中查出来的,退学只需要把该学生的信息从教务系统中去掉就可以,校长并不需要亲自告诉张三“喂,你小子因为挂科太多被退学啦”。校长并没有和学生见面就完成了一些列的管理任务。因此我们可以得出下面的结论:

管理者和被管理者并不需要见面。

管理本质上是对信息(数据)进行维护。

管理学生本质上就是对学生各种信息的管理,那校长是如何知道学生的各种信息的呢?答案是通过执行者,在学校里辅导员就扮演者这一角色,相信大家都遇到过辅导员发了一个在线表格,要求我们在几点前填完,这个表头全是我们的一些信息,这个过程就是辅导员作为执行者,去完成管理者(校长)安排的任务。

管理者和执行者的本质区别在于,管理者拥有决策权,而执行者是没有决策权的,执行者只能按照管理者的要求去执行任务。


94af4ac959be492aa7b685ae887a2ad5.png

回到计算机,操作系统就相当于是校长,属于管理者;驱动程序就相当于是辅导员,属于执行者;硬件就相当于学生,属于被管理者。因此操作系统是通过驱动程序来获取到硬件的各种信息,以实现对硬件的管理。比如说网卡在使用的过程中发生了故障,那么驱动程序会把错误信息报告给操作系统,操作系统能解决了当然是最好的,操作系统解决不了加把信息报告给用户,提示用户需要更换网卡。

📖操作系统是如何维护硬件信息的?

上面我们知道了管理的本质就是对信息的维护,那操作系统是如何对硬件信息进行维护的呢?首先我们需要定义一个结构体,结构体里面是硬件设备的各种属性,这样以来,一个结构体对象就表示一个硬件,计算机中的所有硬件都可以在操作系统中以结构体对象来描述,接下来需要把这些结构体对象组织起来,一般采用链表或其他高效的数据结构。至此,操作系统对硬件设备的管理就变成了对一个链表的管理。

结论:计算机对硬件设备的管理,分为以下两步:

先描述:用struct结构体。(因为操作系统使用C语言写的)。

再组织:用链表或其他高效的数据结构,将描述硬件设备的结构体对象组织起来。

小Tips:操作系统对硬件设备的管理最终都会转换成对某种数据结构的增删查改。这种管理方式就决定了操作系统中含有大量的数据结构。

🎁结语:

 今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,您的支持就是春人前进的动力!


目录
相关文章
|
4月前
|
Ubuntu 物联网 Linux
从零安装一个Linux操作系统几种方法,以Ubuntu18.04为例
一切就绪后,我们就可以安装操作系统了。当系统通过优盘引导起来之后,我们就可以看到跟虚拟机中一样的安装向导了。之后,大家按照虚拟机中的顺序安装即可。 好了,今天主要介绍了Ubuntu Server版操作系统的安装过程,关于如何使用该操作系统,及操作系统更深层的原理,还请关注本号及相关圈子。
|
4月前
|
Ubuntu Unix Linux
操作系统的最强入门科普(Unix/Linux篇)
下期文章,小枣君会重点聊聊Windows和macOS那条线。敬请关注! 如果大家觉得文章不错,还请帮忙多多转发!谢谢!
|
4月前
|
监控 Ubuntu Linux
什么Linux,Linux内核及Linux操作系统
上面只是简单的介绍了一下Linux操作系统的几个核心组件,其实Linux的整体架构要复杂的多。单纯从Linux内核的角度,它要管理CPU、内存、网卡、硬盘和输入输出等设备,因此内核本身分为进程调度,内存管理,虚拟文件系统,网络接口等4个核心子系统。
306 0
|
4月前
|
Unix 物联网 Linux
都什么年代了,你还不懂啥是Linux操作系统
至于华为鸿蒙操作系统是不是独树一帜,这个留给各位阅读本文的网友们来讨论
114 0
|
4月前
|
Web App开发 缓存 Rust
|
4月前
|
安全 Linux iOS开发
linux属于什么操作系统
Linux是一种自由和开放源代码的操作系统,具有高度的灵活性和可定制性。与常见的操作系统如Windows和macOS相比,Linux具有自由、安全和稳定等优势。Linux已广泛应用于服务器、桌面电脑、超级计算机和嵌入式设备等领域,并且在未来的发展前景广阔。由于其自由和开放源代码的特性,Linux还促进了计算机技术和社区的发展,为全球的计算机用户提供了更多的选择和可能性。
|
4月前
|
安全 Ubuntu Unix
关于Linux操作系统,你必须要知道的事
我们可以看到无论是Debian还是Buildroot都有各自的特点,为客户提供了更大的选择空间和灵活性,大家可以根据自己的需求选择合适的版本来满足终端用户的体验和功能需求。从平技术将会一直关注更多更安全、灵敏、易于开发的Linux版本,做好适配工作,不断为客户带来“简单开发、方便应用”的使用体验。
|
4月前
|
安全 Ubuntu Linux
如何安装Linux操作系统?
此时,您可以选择重新启动计算机,然后从硬盘上的Linux系统启动。以上是一个大致的安装过程。请注意,不同的Linux发行版可能会在细节上有所差异,因此在进行安装之前,请确保您阅读并理解了相应发行版的安装指南或文档。
|
4月前
|
Ubuntu Linux 开发者
Linux发行版比较:选择适合你的操作系统
在做出选择之前,建议您先在虚拟机或双系统环境中尝试不同的发行版,根据自己的体验和需求做出决策。选择适合自己的Linux发行版是一个个人化和主观的过程,最重要的是找到符合自己需求和喜好的发行版,让您在使用Linux系统时感到舒适和方便。
|
4月前
|
Ubuntu Unix Linux
玩机强化技能,动手安装Ubuntu Linux操作系统
(13)Ubuntu重启过程中,你将在关机画面中看到提示文字“Please remove the installation medium, then press ENTER:”,按下“Enter”键即可重启电脑。