操作系统到底是在干嘛?

目录

前言:

什么是操作系统?

操作系统的作用:

尝试理解操作系统——理解“管理”

尝试理解系统调用层

总结:


前言:

        在上一篇文章中我们对冯诺依曼体系有了初步的了解,最重要的是引入了内存这一概念,下面就是对于操作系统的认识和定位。

什么是操作系统?

        不知道我们在学习Linux操作系统之前是否有自己动手装过Windows操作系统?我们在组装一台新电脑后,一般会拿一个U盘进行windows操作系统的安装,会打开类似终端的界面进行设置和调配,最后等待下载和安装我们就可以使用它了!那为什么我们一定要安装这个操作系统呢?

操作系统的作用:

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

        广义上对操作系统的认识由这几部分组成:操作系统的内核 + 操作系统的外壳周边程序操作系统的主要目的是提供给用户一个(良好的、稳定的、高效的)运行环境。而上述的外壳周边程序其实就是“目的”,为给用户提供一个良好的运行环境。我们作为用户是不能直接脱落操作系统直接访问硬件。

        不难看出在这一张图里关于操作系统的部分它的功能包含了很多管理项目,那么谈何管理呢?这个操作系统管理了些什么呢?

尝试理解操作系统——理解“管理”

        管理一词可谓是贯穿整个操作系统,其实驱动程序也算是一种管理,但是它是重识别和实现,是搭建在计算机硬件设备与操作系统之间的桥梁,通过驱动程序,各种硬件设备才能正常运行,达到既定的工作效果。

         下面我们来对操作系统的管理举一个形象的例子。假设你是一位校长,你想能实时的查看对应学生的信息,那么第一步你就需要去统计学生,这也算是一种管理,但是你要怎么管理呢?首先你需要清楚的是,你是一个校长,你只是想要知道学生的信息,而不是想要知道怎么管理和统计。这时候就有了辅导员,一个辅导员管理几个专业的几个班,然后每个班都会有班长,班长统计本班的学生人数再交给辅导员,辅导员和辅导员之间的统计的数据进行加合再创建Excel表格交给校长,这样校长就不用自己亲自管理学生数据。

        在上述的例子中,校长就作为用户,辅导员就相当于操作系统,Excel表格就相当于图形界面啥的,学生就作为信息数据。所以可以发现,校长作为用户是不会对学生也就是数据直接接触,而是通过辅导员也就是操作系统来进行管理和交互。

        但是也会存在一个问题,上述的例子是讲述了校长和辅导员和学生的关系,辅导员通过班长统计学生这个只是一个方面,但是对于辅导员将自己管理的所有学生是如何查找的呢?又是如何统计管理的呢?难道只是做一个Excel表格这么简单吗?假如辅导员是一个程序员,他想要通过编写代码的方式来管理学生,请问他该怎么做呢?

        如果以C++的语言来看,那么我们每次有学生入学就得new一个学生的结构体对象,这个学生肯定包含了类似姓名,班级,性别之类的基本信息,当然创建是难免的,但是一旦涉及管理,类似去对这个学生删除或者修改那么就涉及了查找的操作了,那我们想要将这些学生管理起来也需要将查找考虑进去,那么我们不放可以往每一个学生的对象里面再定义一个next指针,用来指向下一个学生,于是就构成了一个学生链表,所以对学生的管理,就转化成了对链表的增删查改。

         那么我们可以总结一句话,任何管理

        都是“先描述,再组织” 

        我们在学习C语言的通讯录甚至是C++模拟实现string,我们都会创建一个一个对象或者说是结构体,这个对象会存在许许多多的性质,这些性质同时也会存在些许动作效应,比如实现交互功能,就是咱们函数的实现。那么上述将各个学生抽象成一个链表无异于描述阶段,而实现链表的增删查改就是所谓的组织阶段。

尝试理解系统调用层

        我们作为一个程序员也就相当于用户了,之前在讲解Linux权限的话题时,我们讲解过用户是无法访问操作系统内核的,那么从这张图来看操作系统内核里面有许许多多的管理操作我们是无法进行直接访问的,因此就有了系统调用接口这一层,我要访问操作系统也必须通过系统调用这一层来进行访问系统调用实质上就是函数调用,只不过调用的是系统函数,处于内核态而已。 用户在调用系统调用时会向内核传递一个系统调用号,然后系统调用处理程序通过此号从系统调用表中找到相应的内核函数执行,最后返回。

        而对于一个不熟悉系统调用接口的使用的用户,操作系统也必须提供用户操作接口方便对系统调用层进行调用。比如我们之前使用的c或c++标准库就是在使用用户接口层中的库这一部分来进行系统调用,因此我们之前都没有直接调用系统调用接口层,而是通过标准库来访问操作系统,而这些库都是别人提供好的,因此我们在实现开发操作的时候都是在使用C或C++标准库。这就是为什么之前安装VS2022的时候会有选项,说需要实现什么什么开发功能,而选择到了的功能VS社区就会帮我们下载对应的库,而一旦我们把库删了那么我们将无法进行系统调用。

        但是对于不同的操作系统都有不同的管理模式,因此系统调用层也会有所不同,而直接使用系统调用层进行访问操作系统是不具备跨平台性的!

总结:

         这一块知识听听就好了,主要想告诉大家学习这一块内容一定要有“对抽象事物实例化的能力”,同时要记住“先描述,再组织”的理念,后续这个理念就贯穿整个操作系统的知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无双@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值