在 20 世纪 50 年代中期,出现了第一个简单的批处理 OS;60 年代中期开发出多道程序批处理系统:;不久又推出分时系统,与此同时,用于工业和武器控制的实时 OS 也相继问世。20 世纪 70 到 90 年代,是 VLSI和计算机体系结构大发展的年代,导致了微型机、多处理机和计算机网络的诞生和发展,与此相应地,也相继开发出了微机 OS、多处理机OS 和网络 OS,并得到极为迅猛的发展.
从 1945 年诞生的第一台计算机,到 50 年代中期的计算机,都属于第一代计算机。这时还未出现 OS,对计算机的全部操作都是由用户采取人工操作方式进行的。
早期的操作方式是由程序员将事先已穿孔的纸带(或卡片),装入纸带输入机(或卡片输入机),再启动它们将纸带(或卡片)上的程序和数据输入计算机,然后启动计算机运行。仅当程序运行完毕并取走计算结果后,才允许下一个用户上机。
但是这样的缺点也显而易见:
可见,人工操作方式严重降低了计算机资源的利用率,此即所谓的人机矛盾。虽然 CPU的速度在迅速提高,但 IO 设备的速度却提高缓慢,这使 CPU 与 IO 设备之间速度不匹配的矛盾更加突出。为此,曾先后出现了通道技术、缓冲技术,然而都未能很好地解决上述问题.直至后来引入了脱机输入/输出技术,才获得了相对较为满意的结果。
为了解决人机矛盾及 CPU 和 I/O 设备之间速度不匹配的矛盾,20 世纪 50 年代出现了脱机 IO 技术。该技术是事先将装有用户程序和数据的纸带装入纸带输入机,在一台外围机的控制下,把纸带(卡片)上的数据(程序)输入到磁带上。当 CPU 需要这些程序和数据时,再从磁带上高速地调入内存。
类似地,当 CPU 需要输出时,可先由 CPU 把数据直接从内存高速地输送到磁带上然后在另一台外围机的控制下,再将磁带上的结果通过相应的输出设备输出。
由于程序和数据的输入和输出都是在外围机的控制下完成的,或者说,它们是在脱主机的情况下进行的,故称为脱机输入/输出方式。
这种脱机IO 方式的主要优点为:
为实现对作业的连续处理,需要先把一批作业以脱机方式输入到磁带上,并在系统中部署监督程序(Monito),在它的控制下,使这批作业能一个接一个地连续处理.
其处理过程是:首先由监督程序将磁带上的第一个作业装入内存,并把运行控制权交给该作业,当该处理完成时,又把控制权交还给监督程序,再由监督程序把磁带上的第一个作业调入计算机系统就这样自动地一个作业紧接一个作业地进行处理.这样便形成了早期的批处理系统。虽然系统对作业的处理是成批进行的,但在内存中始终只保持一道作业,故称为单道批处理系统。
单道批处理系统最主要的缺点是:
系统中的资源得不到充分的利用。这是因为在内存中仅有一道程序,每逢该程序在运行中发出 IO 请求后,CPU 便处于等待状态,必须在其I/O 完成后才继续运行。又因 I/O 设备的低速性,更使 CPU 的利用率显著降低。
为了能在系统中运行较大的作业,通常在计算机中都配置了较大容量的内存,但实际情况是有 80%以上的作业都属于中小型,因此在单道程序环境下,也必定造成内存的浪费。类似地,为了满足各种类型的作业需要,在系统中将会配置多种类型的 IO 设备。显然在单道程序环境下也不能充分利用系统资源。
为了进一步提高资源的利用率和系统吞吐量,在 20 世纪 60 年代中期引入了多道程序设计技术,由此形成了多道批处理系统。
在该系统中,用户所提交的作业先存放在外存,并排成一个队列,称为“后备队列”。然后由作业调度程序按一定的算法,从后备队列中释若干个作业调入内存,使它们共享 CPU 和系统中的各种资源。由于同时在内存中装有干道程序,这样便可以在运行程序A时,利用其因 I/O 操作而暂停执行时的 CPU 空档时间再调度另一道程序B 运行,同样可以利用程序 B 在 I/O 操作时的 CPU 空档时间,再调度程序C运行,使多道程序交替地运行,这样便可以保持 CPU 处于忙碌状态。
多道批处理系统的优缺点如下:
多道批处理系统是一种十分有效,但又非常复杂的系统,为使系统中的多道程序间能协调地运行,系统必须解决下述一系列问题:
(1)处理机争用问题。既要能满足各道程序运行的需要,又要能提高处理机的利用率.
(2)内存分配和保护问题。系统应能为每道程序分配必要的内存空间,使它们“各得其所”,且不会因某道程序出现异常情况而破坏其它程序。
(3) I/O 设备分配问题。系统应采取适当的策略来分配系统中的 IO 设备,以达到既能方便用户对设备的使用,又能提高设备利用率的目的。
(4)文件的组织和管理问题。系统应能有效地组织存放在系统中的大量的程序和数据,使它们既便于用户使用,又能保证数据的安全性。
(5) 作业管理问题。系统中存在着各种作业(应用程序),系统应能对系统中所有的作业进行合理的组织,以满足这些作业用户的不同要求。
(6) 用户与系统的接口问题。为使用户能方便的使用操作系统,OS 还应提供用户与OS 之间的接口。
为此,应在计算机系统中增加一组软件,用以对上述问题进行妥善、有效的处理。这组软件应包括: 能有效地组织和管理四大资源的软件、合理地对各类作业进行调度和控制它们运行的软件,以及方便用户使用计算机的软件。正是这样一组软件构成了操作系统。据此,我们可把操作系统定义为: 操作系统是一组能有效地组织和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合.
如果说推动多道批处理系统形成和发展的主要动力是提高资源利用率和系统吞吐量,那么,推动分
时系统形成和发展的主要动力,则是为了满足用户对人一机交互的需求,由此形成了一种新型
OS。
用户的需求具体表现在以下几个方面:
由上所述不难得知,分时系统是指,在一台主机上连接了多个配有显示器和键盘的终端并由此所组成的系统,该系统允许多个用户同时通过自己的终端,以交互方式使用计算机,共享主机中的资源.
在多道批处理系统中,用户无法与自己的作业进行交互的主要原因是: 作业都先驻留在外存上,即使以后被调入内存,也要经过较长时间的等待后方能运行,用户无法与自己的作业进行交互。为了能够实现人一机交互,必须解决的关键问题是,如何使用户能与自己的作业进行交互。为此,系统首先必须能提供多个终端,同时给多个用户使用;其次,当用户在自己的终端上键入命令时,系统应能及时接收,并及时处理该命令,再将结果返回给用户。此后,用户可根据系统返回的响应情况,再继续键入下一条命令,此即人一机交互.
1) 及时接收
要做到及时接收多个用户键入的命今或数据,只需在系统中配置一个多路卡即可。例如当主机上需要连接 64 个终端时,就配置一个 64 用户的多路卡。
多路卡的作用是,实现分时多路复用。即主机以很快的速度周期性地扫描各个终端,在每个终端处停留很短的时间,如 30.ms,用于接收从终端发来的数据。
2) 及时处理
(1) 作业直接进入内存。因为作业在磁盘上是不能运行的,所以作业应直接进入内存.
(2) 采用轮转运行方式。如果一个作业独占 CPU 连续运行,那么其它的作业就没有机会被调度运行。为避免一个作业长期独占处理机,引入了时间片的概念。
一个时间片,就是一段很短的时间(例如 30 ms)。系统规定每个作业每次只能运行一个时间片,然后就暂停该作业的运行,并立即调度下一个作业运行。
实时系统最主要的特征,是将时间作为关键参数,它必须对所接收到的某些信号做出“及时”或“实时”的反应。由此得知,实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
随着计算机应用的普及,实时系统的类型也相应增多,下面列出当前常见的几种:
(1) 周期性实时任务和非周期性实时任务。
周期性实时任务是指这样一类任务,外部设备周期性地发出激励信号给计算机,要求它按指定周期循环执行,以便周期性地控制某外部设备。
反之,非周期性实时任务并无明显的周期性,但都必须联系着一个截止时间(Deadline),或称为最后期限。它又可分为: 开始截止时间,指某任务在某时间以前必须开始执行:2 完成截止时间,指某任务在某时间以前必须完成。
(2)硬实时任务和软实时任务。
硬实时任务(Hard Real-time Task,HRT)是指系统必须满足任务对截止时间的要求,否则可能出现难以预测的后果。用于工业和武器控制的实时系统,通常它所执行的是硬实时任务。
软实时任务(Soft Real-time Task,SRT)也联系着一个截止时间,但并不严格,若偶尔错过了任务的截止时间,对系统产生的影响也不会太大。诸如用于信息查询系统和多媒体系统中的实时系统,通常是软实时任务。
前面所介绍的多道批处理系统、分时系统和实时系统这三种基本操作系统都具有各不同的特征,如批处理系统有着高的资源利用率和系统吞吐量: 分时系统能获得及时响实时系统具有实时特征。
除此之外,它们还共同具有并发、共享、虚拟和异步四个基本特征
并行性和并发性是既相似又有区别的两个概念。并行性是指两个或多个事件在同一时刻发生。而并发性是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单处理机系统中,每一时刻却能有一道程序执行,故微观上这些程序只能是分时地交替执行。
在一个未引入进程的系统中,在属于同一个应用程序的计算程序和 I/O 程序之间只能是顺序执行,即只有在计算程序执行告一段落后,才允许 IO 程序执行:反之,在程序执行IO操作时,计算程序也不能执行。但在为计算程序和I/O 程序分别建立一个进程(Process)后,这两个进程便可并发执行。若对内存中的多个程序都分别建立一个进程,它们就可以并发执行,这样便能极大地提高系统资源的利用率,增加系统的吞吐量。
所谓进程,是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。多个进程之间可以并发执行和交换信息。
OS 环境下的资源共享或称为资源复用,是指系统中的资源可供内存中多个并发执行的进程共同使用。这里在宏观上既限定了时间(进程在内存期间),也限定了地点(内存).对于这种资源共享方式,其管理就要复杂得多,因为系统中的资源远少于多道程序需求的总和,会形成它们对共享资源的争夺。所以,系统必须对资源共享进行妥善管理。由于资源属性的不同,进程对资源复用的方式也不同
目前主要实现资源共享的方式有如下两种:
系统中的某些资源,如打印机、磁带机等,虽然可以提供给多个进程(线程)使用,但应规定在一段时间内,只允许一个进程访问该资源。为此,在系统中应建立一种机制,以保证多个进程对这类资源的互斥访问。
当进程 A 要访问某资源时,必须先提出请求。若此时该资源空闲,系统便可将之分配给请求进程 A 使用。此后若再有其它进程也要访问该资源,只要 A 未用完就必须等待。仅当A 进程访问完并释放系统资源后,才允许另一进程对该资源进行访问。
这种资源共享方式称为互斥式共享,把这种在一段时间内只允许一个进程访问的资源,称为临界资源(或独占资源)。系统中的大多数物理设备,以及栈、变量和表格,都属于临界资源,都只能被互斥地共享。为此,在系统中必须配置某种机制,用于保证诸进程互斥地使用临界资源。
系统中还有另一类资源,允许在一段时间内由多个进程“同时”对它们进行访问。这里所谓的“同时”,在单处理机环境下是宏观意义上的,而在微观上,这些进程对该资源的访问是交替进行的,典型的可供多个进程“同时”访问的资源是磁盘设备。一些用重入码编写的文件也可以被“同时”共享,即允许若千个用户同时访问该文件。
并发和共享是多用户(多任务)0S 的两个最基本的特征。它们又是互为存在的条件一方面资源共享是以进程的并发执行为条件的,若系统不允许并发执行也就不存在资源享问题,另一方面,若系统不能对资源共享实施有效管理,以协调好诸进程对共享资源访问,也必然会影响到诸进程间并发执行的程度,甚至根本无法并发执行.
在 OS中,把通过某种技术将一个物理实体变为若干个逻辑上的对应物的功能称为“虚拟”.
在计算机领域中,广泛利用时分复用技术来实现虚拟处理机、虚拟设备等,使资源的利用率得以提高。时分复用技术能提高资源利用率的根本原因在于,它利用某设备为一用户服务的空闲时间,又转去为其他用户服务,使设备得到最充分的利用。
利用多道程序设计技术,为每道程序建立至少一个进程,让多道程序并发执行。
我们还可以利用虚拟设备技术,也通过分时复用的方法,将一台物理 IO 设备虚拟为多台逻辑上的 IO 设备,并允许每个用户占用一台逻辑上的 IO 设备.
如果说,多道程序技术(时分复用技术)是通过利用处理机的空闲时间运行其它程序提高了处理机的利用率,那么,空分复用技术则是利用存储器的空闲空间分区域存放和运行其它的多道程序,以此来提高内存的利用率。
但是,单纯的空分复用存储器只能提高内存的利用率,并不能实现在逻辑上扩大存储器容量的功能,还必须引入虚拟存储技术才能达到此目的。
虚拟存储技术在本质上是实现内存的分时复用,即它可以通过分时复用内存的方式,使一道程序仅在远小于它的内存空间中运行。
例如,一个 100 MB 的应用程序之所以可以运行在 30 MB 的内存空间,实质上就是每沃只把用户程序的一部分调入内存运行,运行完成后将该部分换出,再换入另一部分到内存中运行,通过这样的置换功能,便实现了用户程序的各个部分分时地进入内存运行。
对于内存中的每个进程,在何时能获得处理机运行,何时又因提出某种资源请求而暂停,以及进程以怎样的速度向前推进,每道程序总共需要多少时间才能完成等等,都是不可预知的。
由于各用户程序性能的不同,比如,有的侧重于计算而较少需要 IO;而有的程序其计算少而 IO 多,这样,很可能是先进入内存的作业后完成,而后进入内存的作业先完成。或者说,进程是以人们不可预知的速度向前推进的,此即进程的异步性.
尽管如此,但只要在 OS 中配置有完善的进程同步机制,且运行环境相同,则作业即便经过多次运行,也都会获得完全相同的结果。因此异步运行方式是允许的,而且是操作系统的一个重要特征。
客户/服务器(Client/Server)模式可简称为 C/S 模式。其在 20 世纪 90 年代已风靡全球,不论是LAN,还是企业网,以及 Intermet 所提供的多种服务,都广泛采用了客户/服务器的模式.
1.客户机: 通常在一个 LAN 网络上连接有多台网络作站(简称客户机),每台客户机都是一个自主计算机,具有一定的处理能力,客户进程在其上运行,平时它处理一些本地业务,也可发送一个消息给服务器,以请求某项服务。
2. 服务器:通常是一台规模较大的机器,在其上驻留有网络文件系统或数据库系统等,它应能为网上所有的用户提供一种或多种服务。平时它一直处于工作状态,被动地等待来自客户机的请求,一旦检查到有客户提出服务请求,便去完成客户的请求,并将结果送回客户,这样,工作站中的用户进程与服务器进程就形成了客户/服务器关系。
3.网络系统:是用于连接所有客户机和服务器,实现它们之间通信和网络资源共享的系统。
一次完整的交互过程可分成以下四步:
(1) 客户发送请求消息。当客户机上的用户要请求服务器进行应用处理时,应输入相应的命令和有关参数。由客户机上的发送进程先把这些信息装配成请求消息,然后把它发往服务器;客户机上的接收进程则等待接收从服务器发回来的响应消息。
(2) 服务器接收消息。服务器中的接收进程平时处于等待状态,一旦有客户机发来请求,接收进程就被激活,根据请求信息的内容,将之提供给服务器上的相应软件进行处理.
(3) 服务器回送消息。服务器的软件根据请求进行处理,在完成指定的处理后,把处理结果装配成一个响应消息,由服务器中的发送进程将之发往客户机。
(4) 客户机接收消息。客户机中的接收进程把收到的响应消息转交给客户机软件,再由后者做出适当处理后提交给发送该请求的客户。
C/S 模式之所以能成为在分布式系统和网络环境下软件的一种主要工作模式,是由于该模式具有传统集中模式所无法比拟的一系列优点。
(1) 数据的分布处理和存储。由于客户机具有相当强的处理和存储能力,可进行本地处理和数据的分布存储,从而摆脱了由于把一切数据都存放在主机中而造成的既不可靠又容易产生瓶颈现象的困难局面。
(2) 便于集中管理。尽管 C/S 模式具有分布处理功能,但公司(单位)中的有关全局的重要信息、机密资料、重要设备以及网络管理等,仍可采取集中管理方式,这样可较好地保障系统的“可靠”和“安全”。
(3) 灵活性和可扩充性。C/S 模式非常灵活,极易扩充。理论上,客户机和服务器的数量不受限制,其灵活性还表现在可以配置多种类型的客户机和服务器上。
(4)易于改编应用软件。在客户/服务器模式中,对于客户机程序的修改和增删,比传统集中模式要容易得多,必要时也允许由客户进行修改。
基本客户/服务器模式的不足之处是存在着不可靠性和瓶颈问题。
在系统仅有一个服务器时,一旦服务器故障,将导致整个网络瘫痪。当服务器在重负荷下工作时,会因忙不来而显著地延长对用户请求的响应时间。
如果在网络中配置多个服务器,并采取相应的安全措施,则这种不足可加以改善。