1.概念
操作系统是一个进行软硬件资源管理的软件。任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
①内核(进程管理,内存管理,文件管理,驱动管理)
②其他程序(例如函数库, shell程序等等)
对于操作系统,有三连问:
①什么是操作系统?
②为什么需要操作系统?
③操作系统是怎么干活的?
答:操作系统是一个进行软硬件资源管理的软件。我们需要操作系统来合理的管理软硬件资源。操作系统通过管理操作来干活。
而我们需要了解管理的本质:
管理者不需要与被管理者之间打交道,依旧能够把被管理对象很好地管理起来。原因是管理者只需拿到被管理者的数据,就能很好的管理了。
所以,管理的本质:就是对数据做管理
2.管理者如何拿到数据?
管理者是如何拿到被管理者的数据的呢?并且,被管理者的数据如果是不断的发生改变,要怎么办?
那么此时,在管理者和被管理者的中间,需要一个执行者。这很好理解,院长是管理者,学生是被管理者,而辅导员就是负责执行院长的决策的执行者,辅导员收集学生信息,上交给院长。
因此,执行者的任务:①执行上面的命令 ②和被管理者接触并拿到相关的数据
那么对应的:操作系统就是管理者,硬件就是被管理者,而在它们之间,就有一层叫做驱动。
3.数据的数量问题
当数据量很少的时候,管理者管理起来当然容易,然而当数据量非常大的时候,管理者管理起来一年下来身体不得报废?所以问题来了,如何去高效地将大数据管理起来?
先来举个例子:一个校长,需要上万名学生的信息,如果要将每个学生的信息做成一个表格, 那么需要上万个表格,那样岂不是不用一个学期,就得换校长啊。
但幸运的是,校长是科班出身的,曾经是一位高级工程师,他想了个办法。他观察到,每个学生的信息,其种类几乎相同,那么,他就使用代码的方式,进行数据管理:
简单的方法:将需要管理的学生的信息(种类):包括姓名,班级,性别,手机号,成绩等等信息,用结构体封装起来,然后创建一个链表!
有了这个链表之和,每当校长要删除或添加学生信息的时候,只需要对链表进行修改即可!当校长需要找成绩最好的那个学生来报送时,直接在链表中找到成绩最高的那个便可。
所以,对学生数据做管理,变成了对链表做管理。
所以,计算机管理硬件:① 描述起来,用struct结构体 ② 组织起来,用链表或其他高效的数据结构.也就是说,操作系统就是使用这种思路去管理硬件的:先描述,将对象描述起来(C++的对象,C语言的结构体),再组织,使用数据结构。
其实所有的管理,本质逻辑都是先描述,再组织。
对应的,对于硬件的管理,就是将硬件的属性种类,以对象的形式,写出类,然后使用数据结构来管理,当有一个硬件不行了,坏掉了,那么就对这个硬件的代码去掉或者怎么样。
结论:管理的本质:对数据做管理;管理的方法:先描述再组织
4.管理软件
我们说了,操作系统是管理软硬件资源的软件,我们知道了操作系统是怎么样去管理硬件的了,现在就去探究一下,它是怎么管理软件的是。
也就是说,软件能够管理硬件,也能管理软件。
其实,跟管理硬件一样,也是先描述再组织,使用数据结构组织起来统一管理。
所以,操作系统对下通过驱动来管理硬件,对内也会管理软件
5.操作系统对上
先来举个例子,银行为什么不让别人进去他的仓库,用他的电脑等等?因为银行系统不相信任何人,而且自己非常容易受到伤害,因此银行要将自己保护起来。
但银行又必须对外提供服务,怎么办呢?那就是使用玻璃窗,下面打一个小孔用于对外服务。
同样的,操作系统也不相信任何人,但是也必须给上层用户提供各种服务。
此时操作系统做了一件事,那就是:给用户提供操作系统接口。
对于这个系统调用,就是C式接口,即操作系统通过C语言给我们提供函数调用!
当我们想要访问显卡,显示器等设备硬件,都是通过调用这个接口进行的,我们向操作系统发出访问请求,操作系统就会拿着我们的访问"资料"去给我们处理,当然,如果你的请求不合理,那么操作系统是不会给你处理的!
6.辅助用户去完成访问操作的工具
在Linux中,用户通过shell来实现指令操作,对操作系统接口的访问;在Windows中,用户通过图形化界面来实现对操作系统接口的访问,当然还有点就是编程操作,是通过C/C++的库来进行访问。
对于编程操作,通过冯诺依曼体系我们知道,我们在输入设备(键盘)输入数据的时候,通过内存调用了库中的函数,然后函数向操作系统发出访问硬件的请求,操作系统再给我们处理,最后输出设备(显示器)打印出来。并不是我们直接写在硬件上!
总结:
以上:就是操作系统软硬件体系结构!