2.操作系统的发展与分类
2.1操作系统的发展
操作系统的发展是对早期计算机系统问题非常自然的解决方式。操作系统是应客观需要产生的,随着计算机本身以及其应用的发展而逐渐发展和不断完善,与计算机的发展过程相对应,操作系统也经历了如下几个阶段的发展:
- 无操作系统阶段(手工操作与脱机输入/输出)
- 单道批处理系统
- 多道批处理系统
无操作系统阶段:
在第一代计算机时期,电子管是构成计算机主要元器件,这个时候计算机运行速度很慢,没有操作系统甚至没有任何软件,人们采用手工操作的方式来使用计算机,即将程序纸带装入输入机,然后启动输入机把程序和数据送入计算机,通过控制台的开关启动程序来运行,程序运行完毕后用户取走输入纸条和结果。随着CPU速度的大幅度提高,手工操作的慢速与CPU的高速出现了矛盾,此外,CPU与I/O设备之间速度的不匹配矛盾也日益突出。为了解决这些矛盾,通道技术和缓冲技术先后出现,但是并没有很好地解决上述的矛盾,直到后来引入了脱机输入/输出技术才获得了让人较为满意的效果。
脱机输入/输出技术是为了解决CPU和I/O设备之间速度的不匹配而产生的,这项技术大大减少了CPU等待的空闲时间,提高了I/O速度。在这种技术下,用户程序和数据在一台外围机的控制下,预先从低速度输入设备(纸带机)输入到输入带上,当CPU需要这些程序和数据时,再直接从输入带高速输入到内存中,这就大大加速了信息的输入,减少了CPU的等待时间,这就是脱机输入技术。在输出时,当程序运行告一段落时,CPU准备输出,这个时候会直接把结果高速地送到输出带上,而不是低速输出设备,然后在外围机的控制下把磁带上的结果由相应的输出设备输出,这就是脱机输出技术。
单道批处理系统:
单道批处理系统是最早出现的一种操作系统,严格来说它只能算做操作系统的前身而非现在人们所理解的操作系统。在这种系统中,用户通常把一批作业以脱机输入的方式输入到磁带上,并在系统中配置监督程序来管理作业的运行,即负责装入和运行各种系统程序来完成作业的自动过渡。在其控制下,先把磁带上的第一个作业装入内存,并把运行的控制权交给第一个作业,当第一个作业完成后又把控制权交还给监督程序,由监督程序将控制权交给下一个作业,按照这样的流程直到磁带上所有的作业都完成。
单批道操作系统主要具有如下特点:
- 自动性:顺利的情况下,在磁带上的一批作业能自动地依次运行,无需人工干预。
- 顺序性:磁带上的作业按顺序进入内存,先调入的作业先完成。
- 单道性:内存中同一时刻只有一个程序运行,只有这个程序运行结束或者发生异常终止的时候才会换到其他程序进入内存运行。
多道批处理系统:
多道批处理系统进一步提高了CPU的利用率。多道程序设计技术是将一个以上的作业放入内存,并且同时处于运行状态,这些作业共享处理器、外设以及其他资源。现在计算机系统一般都基于多道程序设计技术。
在单处理器的系统中,多道程序运行具有如下特点:
- 多道:内存中同时放入多道相互独立的程序。
- 宏观上并行:同时进入系统的几道程序都处于运行状态中,即它们先后开始了各自的运行,但都没有运行完毕。
- 微观上串行:实际上同一时刻只有一个程序在运行,一段时间内多道程序轮流占用CPU,交替运行。
2.2操作系统的分类
操作系统有3种基本分类:
- 批处理操作系统
- 分时操作系统
- 实时操作系统
批处理操作系统:
单道批处理操作系统是早期计算机系统中配置的已种操作系统类型。其工作流程大如下:
系统操作员将用户作业收集起来,并将这些作业组成批输入并传送到外存。批处理操作系统每次将其中的一个作业调入运行, 同时只有一道作业处于运行状态,运行完成或出现错误而无法再进行下去时,输出有关信息并调入下一个作业运行。如此反复处理,直到这一批作业全部处理完毕为止。
单道批处理操作系统大大提高了机器的利用率,减少了人工操作的时间,但是对于某些作业来说,当其发出输入输出请求后,CPU 必须等待IO的完成,这就意味着CPU空闲,特别是当IO设备的速度较慢时,将导致CPU的利用率很低。为了提高CPU的利用率,引入了多道程序设计技术。
在单道批处理操作系统中引入多道程序设计技术,就形成了多道批处理操作系统。在多道批处理操作系统中,不仅在主存(也称内存)中可以同时有多道作业运行,而且作业可随时(不一定集中成批)被接受进入系统,并存放在外存中形成作业队列,然后由操作系统技一定的原则从作业队列中调度一个或多个作业进入主存运行。
多道批处理操作系统的主要特点如下:
- 用户脱机使用计算机:用户提交作业之后,在获得结果之前几乎不和计算机交互。
- 成批处理:工作人员把用户提交的作业分批进行处理,由监督程序负责每批作业的自动调度。
- 多道程序运行:按多道程序设计的调度原则,从一批后备作业中选取多个作业调入内存并组织其运行,形成多道批处理系统。
分时操作系统:
在批处理操作系统中,用户以脱机方式使用计算机。在作业运行过程中,不管出现什么情况用户都不能加以干预,只有等待该批作业运行结束,用户才能得到运行结果。若运行出错则需要重复上述过程,这是极其不方便的。人们希望可以通过联机的方式使得计算机,这样交互性更好,这样的需求导致了分时操作系统的诞生。
所谓分时技术,就是把处理器的运行时间分成很短的时间片,按时间片轮流吧处理器分配给各联机作业使用。若某个作业不能在分配给它的时间片内完成其计算,则该作业暂时停止运行,把处理器让给另一个作业使用,等待下一轮时再继续运行。由于计算机速度快,作业运行轮转也很快,给每个用户的感觉都好像是自己独占一台计算机
在操作系统中采用分时技术就形成了分时操作系统。在分时操作系统中,一台计算机和许多终端设备连接,用户可以通过终端向系统发出命令,请求完成某项工作,而系统则分析从终端设备发来的命令,完成用户提出的要求,然后用户再根据系统提供的运行结果,向系统提出下一步请求, 这样重复上述交互会话过程,直到用户完成预计的全部工作为止。
除了这些操作系统,许多操作系统应运而生,如嵌入式操作系统、集群系统、网络操作系统、分布式操作系统等。
分时操作系统具有以下特征:
- 多路性。 指一台计算机与若干台终端相连接,终端上的这些用户可以同时或基本同时使用计算机。
- 交互性。 分时操作系统中用户的操作方式是联机方式,即用户通过终端采用人机会话的方式直接控制程序运行,同程序进行交互。
- 独占性。由于分时操作系统采用时间片轮转的方法使. 台计算机同时 为许多终端用户服务(通常能在2~3s内响应用户请求),因此客观效果是这些用户彼此之间都感觉不到别人也在使用这台计算机,好像自己独占计算机”样。
- 及时性。 系统能够在较短时间内响应用户请求。
实时操作系统:
实时操作系统是操作系统的又一种类型。 对外部输入的信息,实时操作系统能够在规定的时间内处理完毕并作出反应。“实时”的含义是指计算机对于外来信总能够以足够快的速度进行处理,并在被控制对象允许的时间范围内做出快速反应。实时系统要求比分时操作系统更高,一般要求秒级、毫秒级甚至微秒级的响应时间。
3.操作系统的运行环境
3.1内核态与用户态
为了避免操作系统以及进程PCB等关键数据被破坏,通常将处理器的执行状态分为两种:
- 内核态:内核态又称为管态,系统态,是操作系统管理程序执行时机器所处的状态,它具有较高的特权,能执行包括特权指令在内的一切指令,能访问所有的寄存器和存储区。
- 用户态:用户态又称为目态,是用户程序执行时机器所处的状态,具有较低的特权,只能执行规定的指令,访问规定的寄存器和存储区。
3.2中断与异常
3.3系统调用
4.操作系统的结构
操作系统的体系结构就是操作系统的组成结构。主要包括模块组合结构、层次结构和微内核结构。
模块组合结构:
模块组合结构是软件工程出现以前的早期操作系统以及目前一些小型操作系统的体系结构。操作系统是一个有多种功能的 系统程序,可以看作一个整体模块, 也可以看作若干个模块按照一定的结构方式组成的。 系统中的每个模块都是根据它们要完成的功能来划分的,这些功能模块按照一定的结构方式组合起来, 协同完成整个系统的功能。
- 优点: 结构紧密、接口简单直接、系统的效率相对较高。
- 缺点: 首先,这种结构的模块之间可以随意转接,各模块相互牵连,不容易把握好模块的独立性,导致系统结构不清晰。其次,这种结构的可扩展性较差。在更换一个模块或修改一个模块时,要先弄清模块间的接口,如果要按当初设计的模块接口来设计新的模块,而当初设计的模块接口很可能是随意约定的,那么要做这项工作就存在一定难度。 最后,这种结构系统的可适应性差。随着系统规模的不断增大,采用这种结构构造的系统的复杂性会迅速增长,所以它只适用于系统小、模块少、使用环境比较稳定的系统。
层次结构:
要弥补模块组合结构中模块间调用存在的不足之处,就必须改善模块间毫无规则的相互调用、相互依赖的关系,尤其要清除模块间的循环调用。层次结构的设计就是从这一点出发,力求使模块之间调用的无序性变为有序,减少了模块调用的无规则性。按层次结构来设计操作系统,就是将操作系统的所有功能模块按功能的调用次序排列成若干层,使得功能模块之间只存在单向调用和单向依赖。
- 优点: 模块间的组织和依赖关系清晰明了,上层功能是建在下层功能基础之上的,系统的可读性、可适应性以及可靠性都得到了增强。此外,对某层进行修改或替换时,最多只影响到邻近的两层,便于修改和扩充。
- 缺点:操作系统的各个功能模块应该放在哪层如何有效地进行分层是必须要考虑的问题。 断处理、输入输出管理等)为了增强其适应性,必须把与机器特点紧密相关的软件如中断式改变的部分放在最底层:其次,要将最常用的操作方式放在最内层,而把随着这些操作万 供服务的系放在外层。另外,当前操作系统的设计都是基于进程的概念,通常要将为进程提统调用模块放在系统的内层。
微内核结构:
随着网络技术的普遍应用和发展,很有必要为用户提供一个符合处理分布式信息的分布式系统环境。因此,操作系统可以采用微内核结构。微内核的主要思想是:在操作系统内核中只留下一些最基本的功能,而将其他服务尽可能地从内核中分离出去,用若干个运行在用户态下的进程(即服务器进程)来实现,形成所谓的“客户/服务器”模式,即C/S模式。普通用户进程(即客户进程)可通过内核向服务器进程发送请求,以取得操作系统的服务。从微内核结构的主要思想可以看出,它非常适用于分布式系统。
- 优点:首先,每个服务进程运行在独立的用户进程中,即便某个服务器失败或产生问题,也不会引起系统其他服务器和其他组成部分的崩溃,可靠性好:其次,系统具有很好的灵活性,只要接口规范,操作系统可以方便地增删服务功能:再次,便于维护,即修改服务器的代码不会影响系统其他部分;最后,这种结构的操作系统适合分布式处理的计算环境。
- 缺点: 这种结构的操作系统效率不高,因为所有用户进程都要通过微内核相互通信,以微内核本身就成了系统的“瓶颈",尤其是通信频繁的系统。