文章目录
- 概念(是什么)
- 设计OS的目的(为什么)
- 如何理解 "管理"(怎么办)
- 总结
- 系统调用和库函数概念
概念(是什么)
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
内核(进程管理,内存管理,文件管理,驱动管理)
其他程序(例如函数库,shell程序等等)
总结:在整个计算机软硬件架构中,操作系统的定位是:一款进行软硬件资源管理的软件。要留意“管理”和“软件”这两个字。
设计OS的目的(为什么)
对下:为了与硬件交互,管理所有的软硬件资源。
对上:为用户程序(应用程序)提供一个良好的、稳定的、高效的、安全的执行环境。
如何理解 “管理”(怎么办)
管理的例子
就比如在大学中,对于重大事宜有决策权力的一般是校长,但我们一般情况下是见不到校长的,一般也就和辅导员联系,那我们是怎么被学校管理(发奖学金、评奖评优等)的呢?其实不难理解本质上是我们各种学号、姓名、专业、班级等等的数据信息已经被校方拿走了,而且一直在更新。所以管理者不需要和被管理者直接交互,依旧能够把被管理对象管理起来。那么管理的本质就是对数据做管理。
那么管理者怎么拿到对应的数据呢?
下面画了一张图来表示这样的一个关系。
假如说新生开学军训这件事本身是校长这个管理者做出的决策,班主任需要做的工作就是让学生们做执行,
那么其实这里也是一样,操作系统和被管理者硬件之间其实还有一个驱动层,一方面帮助操作系统拿到硬件对应的数据,另一方面给当操作系统根据数据做决策也由对应的驱动来执行。
那么数据太多校长要怎么管理这些数据呢?不难发现,每一个学生的数据种类虽然多但是都是差不多的,有姓名、年龄、班级、联系电话、学号、成绩等等,那么给每个学生一人一个表格,把对应的数据填上,就可以对学生进行管理了。
那么校长其实就可以利用一个个的结构体将学生的数据都描述起来,通过对应的增删查改的算法就可以对这些结构体进行管理了。
其实操作系统也是这样的,先把要管理的数据都抽象出来,然后利用对应的数据结构算法对数据进行管理即可。
操作系统对所有软硬件资源管理的思维方式是:
1.先描述:对被管理对象抽象出来变成一个结构体。(面向对象)
2. 再组织:根据该结构定义出来的一个一个的对象,将他们设计成一个特定的数据结构,把对于被管理对象的管理转换为对某种结构的管理。
总结
管理的本质是:对数据的管理。
管理的方法是:先描述,再组织。
系统调用和库函数概念
在开发角度,操作系统对外会表现为一个整体,类似于银行,银行其实是不能直接把各种设备和资源等暴露在外面,防止一些不法分子来进行破坏,那为什么不直接把银行封起来不让任何人进入呢?原因就在于银行存在的意义就是为人民服务,提供我们各种存取钱的需求,所以银行就用很多比较坚硬的玻璃封起来,然后下面开一个小口口来提供给我们各种服务,操作系统也是这样,它们本质上不相信任何人,不能把各种驱动和管理程序随意的暴露出来,也不能完全封闭,所以会暴露自己的部分接口,供上层开发使用,这部分由操作系统通过C语言给我们提供的接口,叫做系统调用。像是fork、signal等等
系统调用在使用上,对用户的要求相对也比较高,必须要特别了解操作系统,让用户直接用这个接口太麻烦了,所以,开发者对部分系统调用进行适度封装,从而形成各种各样的软件层有C/C++库(各种lib,完成编程操作)、shell(帮助用户进行各种基本指令的操作)、各种图形化界面,就像C语言中的printf函数,调用一下就可以让屏幕轻松的打印我们想要打印的东西,各种ls、touch命令。这样的操作需要系统调用接口来做的,可以说成本是非常高的,但有了各种库、shell、各种图形化界面就有利于跟上层用户或者开发者进行二次开发。
综上就有了下面的这一幅图。
好了今天的分享就到此为止了
最后:如果你觉得对你有用就一键三连吧,哪里有没看懂的地方或者哪里有错误可以在评论区留言欢迎批评指正,作者看到的话会第一时间回复。
end