操作系统的概念
操作系统是一个管理软硬件资源的软件
对于软件的管理大致分为四个部分:进程管理,文件系统,内存管理,驱动管理
对于硬件的管理就是通过了驱动程序进行管理。
操作系统对上提供系统调用接口,给用户层的用户进行各种操作所使用,但是不是所有的用户都会调用系统调用接口,所以为了方便用户使用出现了shell外壳,将我们的指令操作变成系统接口的调用,lib是我们写代码的时候将需要调用的系统接口封装成库函数。
操作系统对自己的这一部分也是需要管理的。
操作系统对下是通过管理好驱动程序来管理硬件。
最底层的硬件是以冯诺依曼体系结构链接的硬件
操作系统最终是通过合理的管理软硬件资源(手段)为用户提供良好的(稳定,安全,高效)的运行环境。
从上操作系统的功能来说大部分都是在管理,管理硬件,管理软件。那么操作系统是如何进行管理的呢?
核心的思想就是:先描述,再组织
操作系统是怎么进行管理的
操作系统是个管理者,对于管理者的理解:管理者不需要和被管理者进行直接的交互,依旧能把被管理的对象管理好。
怎么做到的管理者不直接和被管理者进行交互却进行管理?
本质是对数据的管理
举例:以学校的例子举例,在学校里面一般你是见不到你们的校长的,校长是这个学校的管理者,你是被管理者,校长不会和你直接接触就能把你管理好。其实就是对你的数据(你的各种信息,成绩等等)进行的管理。那么校长不直接和你接触是如何拿到你的数据的呢?其中有一个角色就是执行者就是类似于辅导员或者是班长的角色。执行者可以执行管理者的指令,同时将被管理者的数据发送给管理者。在操作系统管理硬件的时候,驱动程序就是那个执行者。
执行者的作用:
- 执行管理者的命令
- 与被管理者接触拿到对应的数据
通过这种结构操作系统就可以拿到硬件的数据,并且是不断更新的数据,方便操作系统做决策。
现在校长可以拿到你的数据了,但是学校的学生很多数据量太大了,这时候校长要是一条一条的看估计要累洗了。所以为了对数据进行管理,从数据中抽象出一个模型,因为数据信息的种类是一定的,所以可以创建一个学生类,将每个学生的信息实例化成对象,对这些对象进行管理就可以使用数据结构将所有的对象组织起来,比如链表。这时候如果需要选出成绩最好的五名学生,只需要遍历链表找最大的五个人就可以了。
上面这种例子描述的就是管理的思想:先描述,再组织
描述就是将要管理的大量数据抽离出基本的公共信息种类,组成一个结构体,再组织就是将通过结构体创建出来的对象用数据结构组织起来,这样我们对硬件的管理就变成了对数据的结构的管理。
操作系统除了对底层以冯诺依曼体系结构组织的硬件是先描述后组织的管理方式,对于软件也是同样的管理方式。
操作系统提供的系统调用
操作系统为什么不允许我直接访问内核数据,只提供了几个系统调用接口来给我使用呢?
操作系统之所以不允许用户直接访问内核数据,是为了自身的安全考虑,万一用户删掉了某些重要数据导致系统崩溃呢?所以OS要将自己保护起来,但是操作系统还需要给用户提供服务,所以不能完全的封闭,由此就出现了接口式的服务。
系统调用接口本质就是C形式的接口,因为Linux就是C语言写的。
因为我们直接调用系统调用的接口会比较困难。所以在系统调用的上层出现了shell,和lib库不需要我们直接调用系统调用的接口可以通过这些工具访问操作系统和硬件。