《操作系统 - 清华大学》1 -2:操作系统概述 —— 什么是操作系统
文章目录
- 1. 操作系统定义
- 2. 操作系统的位置
- 3. 操作系统软件的分类
- 4. 操作系统软件的组成
- 5. 操作系统内核特征
现在来继续讲什么是操作系统,操作系统什么样的?它是一个程序,它和其他程序是什么样的关系?然后它有些什么样的组成?它有什么样的特征?那我们首先来看什么是操系统。
1. 操作系统定义
操作系统实际上没有明确的定义,哪些功能算是操作系统里的,哪些功能是应用软件或者说是硬件。实际上随着这个操作系统的发展,操系统内涵实际上是在不断变化的,那我们现在能给操系统一个解释。
有一种解释说操系统是一个控制程序:
-
它是一个系统软件,它给用户提供一个运行的环境,用户使用计算机系统的时候,提供所需要的以下服务。
-
如果说用户的使用不当,那这时候它需要进行项目的一些错误处理。
-
如果说用户在使用的过程当中,提供各种服务,提供一些协助。比如说你在输入某一条命令的时候,输了半截,忘掉了后边是什么内容,这时候它是不是能给出一些提示。
这是我们的第一个理解。第二个理解是说操作系统它是一个资源管理器:
- 实际上就是说计算机的硬件和应用程序之间用操作系统来作为它的一个中间层;
- 它为计算机应用程序来管理所有的计算机软硬件资源;
- 协调于各个应用程序在使用这些资源的时候能够友好地使用资源。
具体说起来就是,如果说所有的资源都是由这个应用专用的,那这时候这个应用的使用肯定是没问题的。
~
但是如果说多个应用程序交替来使用,那这时候资源如何使用就会有一些问题了,比如说像这个内存,你在用我也在用,那这时候到底两个应用它们之间各分配多少呢?
~
有可能给你分配多了,那给它分配少了,而你的需要又跟这个分配的结果不一致。那这时候对于操作系统来说,就需要做一个高效的判断,来使得在这里能够按照应用程序的需求给它分配合理的资源,这是我们操系统提供的高效使用所要达到的目标。
- 然后第二个是说,我们可能都需要很多的资源,那这时候操作系统要负责解决这种需求上的差异,实现它的公平。
2. 操作系统的位置
操作系统的表现形式可能会有多种多样,比如说我们的 Windows,我们的 Linux,它的表现是完全不一样的,但是从操系统的内部结构上来讲,它基本上可以分成这样几个部分:
操作系统在中间,下边是硬件,上边是应用。应用又可以分成系统应用和应用程序。
若你想做操作系统,那么是在硬件的基础上来做操作系统,这属于系统设计者。
如果是写应用程序的人,或写系统应用的人,那这时候是利用操作系统提供的功能来实现应用程序和系统应用,这属于应用开发者。
如果说是一个应用程序的使用者,那么这时候直接使用应用程序,这属于用户。但即使是这样的话,你理解操作系统也有利于你更好的使用计算机系统。
操作系统实际就是在硬件进行一层隔离,对上边的应用提供通常所见到的逻辑资源。比如说进程、文件、地址空间,这都是在操作系统层面给用户程序看到的情况。
3. 操作系统软件的分类
操作系统是一个软件,在我们软件划分当中,可以把软件分成是应用软件和系统软件。系统软件又可把它分成系统应用和操作系统。
在操作系统里核心的内容是内核,而命令行由于它和操系统内核关系非常密切,把它划到这里头。实际有的时候也会认为它是系统软件里的一个组成部分。
4. 操作系统软件的组成
那我们在操作系统里到底有什么样的组成呢?
那首先说有内核,实现我们刚才所说到的资源的管理功能。
操作系统上用户可使用命令行接口,这里提供了两种命令接口。一个是命令行接口,这时候用户需要去敲键盘输入命令。
另一种是图形用户接口 GUI,那这时候实际是把命令转换成图形用户接口的一些基本读数。
比如说在这里的窗口、图标、菜单和指针,有了这些之后,去看文件系统的文件的图标,那就对应某个文件,这样的话方便用户来使用,这时达到的效果是所见即所得。
操作系统和外界关系?实际上用这个图可以很直观地表示出来,操作系统是整个计算机系统里的核心软件,然后在外边构造提供对外接口和一些应用,用户就可以来使用系统所提供的服务,那这是用户所在的位置。
ucore 操作系统提供些什么?
从下往上,中间两个黄色的部分是操系统的内容,下面是硬件。
硬件中写了几种在ucore 实验里头会涉及到的硬件,串口、磁盘和存储等,这有一个硬件抽象层,把底下这些做屏蔽,提供一个标准的接口。
然后在这里实现操作系统的功能:操作系统功能是各种各样的驱动,串口驱动、磁盘驱动、物理内存的管理等。操作系统内核提供的这些服务:
- 信号,在执行一个程序过程中,就可以强行它停下按 ctrl + c;
- 提供文件系统,可以把大量的数据以人比较好理解形式组织起来。
- 提供虚拟存储,提供虚拟存储之后,用户就可以使用到大于物理内存的存储空间;
- 提供处理机调度,就可以在一台机器上让多个应用程序交替运行;
提供这些服务都封装在系统调用接口之上,通过系统调用接口,上层应用(如系统库、编译器、解释器和命令行)利用系统调用和库提供的功能来实现应用功能。
5. 操作系统内核特征
操系统软件和应用程序之间有什么样的差别呢?也就说操系统内核它有什么样特征?
这里列出来的是操系统所具有的四个特征,并发、共享、虚拟和异步。
- 并发是指操作系统当中有多个正在运行的应用程序,需要操作系统的管理和调度。
如果多个应用程序交替运行,需要知道当前每一个应用都执行到什么位置,当前正在执行的是哪个应用?
~
如果说应用之间有切换的时候,那切换到下一个应用的时候,它上次执行到什么位置?那这次从什么地方开始?当时的状态是什么样子?都要操作系统来维护。
- 第二特征是共享是指多个应用并发运行的时候,宏观上要体现出它们同时在访问资源的情况,而微观上要实现它们互斥访问。
比如说内存,两个应用同时访问内存,那这时候每个应用需要知道它访问的是哪个,它俩之间不能访问错了。需要保护的这些内存资源不能让另外应用去访问。
~
而在微观上,这时候需要对它做很好的这种隔离。在数据总线上任何一个时刻只有一个应用去访问这个存储单元,这就是我们所说的微观上的互斥。
- 然后再一个是虚拟是指要通过交替运行使每一个用户感觉到整个计算机都是由它一个用户在专门为它提供服务。那如何做到这一点?
实际上就是由操系统在每个应用执行的时候交替运行,由于交替的频率非常高,让用户在用的时候感觉不太出来,那这台机器还有其他用户在用。
~
当然这里的这个负载大的应用程度,用户是可以感觉到的。
-
再有一个是异步是指由于程序是走走停停的,所以它的行为是不可预测。
实际上需要由操作系统来提供,只要用户的输入是一致的,那么它的输出结果就应该是不变的。
当然如果说你的那个应用就是需要知道跟时间相关的这种走走停停的信息,那也是可以在操作系统的支持之下,发现这种时间上的差异。