1.什么是操做系统?
操作系统实际上就是一个软件,是一个管理电脑硬件与软件资源的软件,同时也是计算机系统的内核与基石。
操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。
2.为什么要用操作系统?
在几十年前,计算机感刚开始发展的时候,那时候只有甚至没有简单的操作系统,都是通过开关,二极管等显示计算机信息,计算机使用起来非常不方便,通过操作系统,软硬件得到合理的管理(程序的正常运行,计算机的正常工作)。
对于我们来说,计算机在启动的那一刻,加载的第一个软件就是操作系统,通过操作系统,给用户提供了稳定的,高效,安全的使用环境。
计算机的层状结构:
对于我们的下三层结构就可以清晰的看到,操作系统以底层硬件之间的间接交互。
底层硬件:底层硬件是以冯诺依曼体系结构的方式组合在一起。
驱动程序:每一个硬件基本都要有一个与之匹配的驱动程序,通过驱动程序,操作系统可以控制我们的硬件。
3.操作系统是如何管理的呢?
对于整个计算机系统使用我们可以将它分为两个阶段:
第一阶段:
操作系统管理的本质并不是管理软硬件,而是软硬件的数据,对结构化数据的管理。
对于操作系统对任何软硬件的管理的工作我们都可以用六个字来概括:“”先描述再组织”
先描述:将被管理的对象以什么样的结构体形式描述出来
再组织:把描述的结构体,定义的对象按数据结构的方式存储起来
故操作系统并不是直接和底层硬件打交道,而是通过驱动程序,获取这些硬件的结构体数据(设备状态,id,设备名称等各种属性),然对这些结构体数据进行管理(增删查改)。
在操作系统内部就存有大量的数据结构和数据对象。
那么一个硬件怎样才算是被操作系统管理着呢?
硬件对应的结构体数据被操作系统拥有并管理着,那么硬件就是被操作系统管理着。
而对于操作系统的管理,主要是四个方面:
1.进程管理
2.内存管理
3.文件/Io管理
4.驱动管理
无论管理哪一方面,都离不开“先描述,在组织”,先描述管理的是啥,再讲它按数据结构的形式存储下来。
第二阶段:
对于用户:广义上是指所有的人,狭义上是指开发者。
而操作系统是不相信任何的用户的(不会直接与用户交互),因此用户想要访问到操作系统,就要通过用户的接口调用函数来访问,且接口是操作系统自己实现的,且接口是有限的。用户是不能直接访问操作系统,且因为操作系统管理着硬件,用户也是不能直接访问到底层硬件,必须贯穿整个层状结构。
system call:系统调用会将操作系统封装起来并提供系统调用接口,对于用户访问操作系统i,用户首先要进行调用系统调用的各个接口。
外壳系统:虽说访问操作系统需要用户去调用系统的各个接口,但是站在使用者的方向上,使用者并不知道系统调用具体的实现,也不知道如何调用,此时,使用者使用外壳程序(shell,图形化界面等),通过输入指令或者手动点击等操作,外壳程序将这些指令告诉给系统调用,此时操作系统就知道用户想要什么,执行对应的操作。
库(lib):当然系统调用站在开发者的角度上,是提供了许多系统调用接口,并且将系统调用接口封装成一个个函数,打包形成库,开发者就不用自己再去写,直接调用库中的函数实现系统调用。
明白了这些,我们就会理解操作系统的具体指向:
广义的操作系统:
狭义上的操作系统(也是我们常说的):
对于linux,就是linux内核,所谓一般我们遇到的各种操作系统,(安卓,Linux,红旗,ubuntu等)内核都是一样的,我们都是在这之外的外壳程序,系统调用等重新实现。