目录
一.操作系统的概念
操作系统是一款进行软硬件资源管理的软件
现在我们知道了操作系统的概念了,那么为什么要有操作系统呢?
操作系统将软硬件资源管理好,给用户提供良好(稳定,安全,易用,高效)的使用环境
二.正确理解"管理"
如何理解"管理"这个词呢?一个学校的管理者是校长,他管理着众多的学生,但身为被管理者的学生,平时基本都见不到校长,可能和我们打交道最多的就是辅导员,校长只负责在某些事物上拍板决策,下达命令。
由此可见,一个管理者只负责决策,并不直接和被管理的对象打交道,管理者只需知道被管理对象的相关数据,然后分析信息,做出决策即可。
我们得到一个重要结论,管理的本质不是管对象本身,而是管理对象的数据
如何管理数据呢?例如校长手上有所有学生的相关信息,姓名,性别,年龄,班级等等,我们发现所有的学生都有各自对应的信息,把每个人的信息放在一起,不就可以描述一个学生了吗?
为了方便管理所有学生信息,于是将它们按表格形式,一人对应一行,罗列出来。
所以管理数据要先描述,再组织
而C语言中的结构体,C++中的类,就是为了描述一个对象的所有属性,数据结构中的顺序表,链表等,就是为了将这些离散的数据组织在一起。
所以操作系统对软硬件进行管理,实质上就是通过结构体将所有软件或硬件的相关属性描述出来,然后通过链表,队列等数据结构将所有数据组织起来
总结起来就两句话**:管理的本质管理数据,要想管理数据就要先描述,再组织**
三.操作系统对硬件进行管理
操作系统和底层硬件之间还有一层驱动,什么是驱动呢?驱动通俗来说就是替操作系统跑腿的。
操作系统想要收集硬件的信息,于是它就安排对应的驱动程序去和硬件打交道,把信息收集回来。
操作系统想要对硬件进行操作,也是安排驱动去跑腿办事。
所以说,当你将一个u盘插进USB接口,能说u盘就是计算机的一部分吗?不能,只有u盘驱动程序访问到了u盘的信息,u盘这个硬件被操作系统纳入了管理,才能说u盘成为计算机的一部分。
四.系统调用接口
作为用户,我们对硬件进行操作,实际上是去访问操作系统,因为操作系统管理着所有硬件,有对应硬件的相关信息。那我们怎么访问操作系统呢?我们是要系统调用接口去访问的。系统调用接口相当于操作系统开的一个个小窗口,这样做的目的是防止用户"为所欲为"。
操作系统实际上是不信任用户的,如果让用户随意地直接访问操作系统里的数据,可能遭到破坏,所以才开了一个个的系统调用接口来限制用户的可操作空间,以达到保护操作系统的目的。系统调用接口也就是一个个函数,要想访问我操作系统,必须通过系统调用,按照规定传相应的参数,如果不按规矩来就将你拒之门外。
五.用户操作接口
让用户直接去使用系统调用接口难度还是不小,为此又设计了一层外壳程序,Windows系统的外壳程序就是我们熟悉的GUI图形化界面,例如双击鼠标左键,就可以打开一个程序。LInux系统中的外壳程序是Shell(命令行解释器),例如我输入一个ls指令,Shell就能对它进行解释,调用相应的系统调用接口。
故狭义上的操作系统指的是操作系统和系统调用接口,我们称之为操作系统内核
而广义上的操作系统就是操作系统内核加上Shell外壳
还有我们经常会使用C语言的printf函数,向显示器上打印字符,显示器也是硬件呀,我们向硬件写入内容,肯定是要访问操作系统的,要使用系统调用接口的。但printf函数是C语言标准库里的函数呀,哪来的什么系统调用呀。实际上,printf函数内部封装了对应的系统调用。
将系统调用接口,封装成各种各样好用的函数,打包形成库(lib),这样一来开发人员直接调用库函数就好了,从而提高开发效率。