1.2.1 操作系统的形成
1.无操作系统时的计算机系统
(1)人工操作方式。第一代计算机时期(1945年至20世纪50年代中期)没有操作系统。这时的计算机操作是由用户(即程序员)采用人工操作方式直接使用计算机硬件系统,即由程序员将事先已穿孔(对应于程序和数据)的纸带(或卡片)装入纸带输入机(或卡片输入机),再启动它们将程序和数据输入计算机,然后启动计算机运行。当程序运行完毕并取走计算结果后,才让下一个用户上机。这种人工操作方式有以下两个缺点:
①用户独占全机。一台计算机的全部资源只能由一个用户独占。
②处理机等待人工操作。当用户进行装带(卡)、卸带(卡)等人工操作时,处理机是空闲的。
人工操作方式严重降低了计算机资源的利用率。随着处理机速度的提高、系统规模的扩大,人机矛盾变得日趋严重。
此外,随着处理机速度的迅速提高而I/O设备的速度却提高缓慢,又使处理机与I/O设备之间速度不匹配的矛盾更加突出。为了缓和此矛盾,先后出现了通道技术、缓冲技术,但未能很好地解决上述矛盾,后来引入的脱机I/O方式获得了令人满意的结果。
(2)脱机I/O方式。为了解决人机矛盾及处理机和I/O设备之间速度不匹配的矛盾,20世纪50年代末出现了脱机I/O技术。该技术是指事先将装有用户程序和数据的纸带(或卡片)装入纸带(或卡片)输入机,在一台外围机的控制下把纸带(卡片)上的数据(程序)输入到磁带盘上。当处理机需要这些程序和数据时再从磁带盘上高速地调入内存。
类似地,当处理机需要输出时可由处理机直接高速地把数据从内存送到磁带上,然后再在另一台外围机的控制下,将磁带上的结果通过相应的输出设备输出。图1-2所示为脱机I/O示意图。由于程序和数据的输入与输出都是在外围机的控制下完成的,或者说它们是在脱离主机的情况下进行的,故称为脱机I/O方式;反之,在主机的直接控制下进行I/O的方式称为联机I/O方式。
图1-2 脱机I/O示意图
这种脱机I/O方式的主要优点有以下两方面:
①减少了处理机的空闲时间。装带(卡)、卸带(卡)、将数据从低速I/O设备送到高速的磁带(盘)上,都是在脱机情况下进行的,它们不占用主机时间,从而有效地减少了处理机的空闲时间,缓和了人机矛盾。
②提高I/O速度。当处理机在运行中需要数据时,是直接从高速的磁带(盘)上将数据调入内存的,不再是从低速I/O设备上调入,从而大大缓和了处理机和I/O设备不匹配的矛盾,进一步减少了处理机的空闲时间。
2.单道批处理操作系统
(1)批处理系统的处理过程。早期的计算机系统非常昂贵,为了能充分地利用它,应尽量让该系统连续地运行,以减少空闲时间。为此,通常是把一批作业以脱机输入方式输入到磁带(盘)上,并在系统中配上监督程序,在监督程序的控制下使这批作业能一个接一个地连续处理。其自动批处理过程是:首先,由监督程序将磁带(盘)上的第一个作业装入内存,并把运行控制权交给该作业。当该作业处理完成时又把控制权交还给监督程序,然后由监督程序将磁带(盘)上的第二个作业调入内存。计算机系统就这样自动地一个作业一个作业地进行处理,直至磁带(盘)上的作业全部完成,这样便形成了早期的批处理系统。
需要说明的是,作业是一个比程序更广的概念。作业通常是指用户在一次计算过程中或者一次事物处理过程中要求计算机系统所做的工作的集合,也就是把一次计算过程或者事务处理过程中,从输入开始到输出结束,用户要求计算机所做的全部工作称为作业。要让计算机知道用户如何处理它的程序和数据,就需要用户写出一份作业控制说明书。作业控制说明书是采用特定的命令来编写的。所以,作业由程序、数据和作业控制说明书组成。作业的概念一般用于早期批处理系统和现在的大型机、巨型机系统中,对于广为流行的微机和工作站系统,现在较少使用作业的概念。
由于系统对作业的处理都是成批地进行的,且在内存中始终只保持一个作业,故称为单道批处理系统。图1-3显示了单道批处理系统的处理流程。
单道批处理系统是在解决人机矛盾和处理机与I/O设备速率不匹配的矛盾的过程中形成的。也就是说,批处理系统旨在提高系统资源的利用率和系统吞吐量。但这种单道批处理系统仍然不能很好地利用系统资源,现在已很少使用。
图1-3 单道批处理系统的处理流程
(2)单道批处理系统的特征。单道批处理系统是最早出现的一种操作系统。严格地说,它只能算是操作系统的前身而并非是现在人们所理解的操作系统。尽管如此,该系统比起人工操作方式已有很大的进步。其主要特征如下:
①自动性。在顺利的情况下,在磁带上的一批作业能自动地逐个程序依次运行,而无须人工干预。
②顺序性。磁带上的各道作业是顺序地进入内存,各道作业完成的顺序与它们进入内存的顺序在正常情况下应当完全相同,即先调入内存的作业先完成。
③单道性。内存中仅有一道作业并使之运行,即监督程序每次从磁带上只调入一道作业进入内存运行,仅当该作业完成或发生异常情况时,才调入其后继作业进入内存运行。
3.多道批处理操作系统
(1)多道批处理系统的基本概念。在早期的单道批处理系统中,内存中仅有一道作业,这使得系统中仍有较多的空闲资源,致使系统的性能较差。为了进一步提高资源的利用率和增加系统的吞吐量,在20世纪60年代中期引入了多道程序设计技术,由此而形成了多道批处理系统。
在多道批处理系统中,用户所提交的作业都先存放在外存并排成一个队列,该队列称为“后备队列”;然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享处理机和系统中的各种资源,以达到提高资源利用率和系统吞吐量的目的。在操作系统中引入多道程序设计可带来以下好处:
①提高处理机的利用率。当内存中仅存放一道程序时,每逢该程序在运行中发出I/O请求后,处理机空闲,必须在其I/O完成后才继续运行;尤其是I/O设备的低速性,更使处理机的利用率显著降低。
图1-4(a)显示了单道程序的运行情况。从图中可以看出:在t2~t3、t6~t7时间间隔内处理机空闲。在引入多道程序设计技术后,由于可同时把若干道程序装入内存,并可使它们交替地执行,这样,当正在运行的程序因I/O而暂停执行时,系统可调度另一道程序运行,从而保持处理机处于忙碌状态。图1-4(b)显示了4道程序的运行情况。
图1-4 单道和多道程序的运行情况
②可提高内存和I/O设备利用率。为了能运行较大作业,通常内存都具有较大容量,但由于80%以上的程序都属于中小型,因此在单道程序环境下也必定会造成内存的浪费。类似地,对于系统中所配置的多种类型的I/O设备,在单道程序环境下也不能充分利用。如果允许在内存中装入多道程序,并允许它们并发执行,则会大大提高内存利用率和I/O设备的利用率。
③增加系统吞吐量。在保持处理机、I/O设备不断忙碌的同时,也必然会大幅度地提高系统的吞吐量,从而降低作业加工所需的费用。
(2)多道批处理系统的特征。在操作系统中引入多道程序设计技术后,系统具有以下特征:
①多道性。在内存中可同时驻留多道程序,并允许它们并发执行,从而有效地提高了资源利用率和增加系统吞吐量。
②无序性。多个作业完成的先后顺序与它们进入内存的顺序之间并无严格的对应关系,即先进入内存的可能较后甚至最后完成,而后进入内存的又可能先完成。
③调度性。作业从提交给系统开始直至完成,需要经过以下两次调度:
● 作业调度。指按一定的作业调度算法,从外存的后备程序队列中选择若干个作业调入内存。
● 进程调度。指按一定的进程调度算法,从已在内存的作业中选择一个作业,将处理机分配给它,使之执行。
(3)多道批处理系统的优缺点。虽然早在20世纪60年代便出现了多道批处理系统,但至今它仍是三大基本操作系统类型之一。在大多数的大、中、小型计算机中都配置了它,说明它具有一定的优点。
多道批处理系统的主要优点如下:
①资源利用率高。由于在内存中装入了多道程序,使它们共享资源,保持资源处于忙碌状态,从而使各种资源得以充分利用。
②系统吞吐量大。系统吞吐量是指系统在单位时间内所完成的总工作量。能提高系统吞吐量的原因可归结为:第一,处理机和其他资源保持“忙碌”状态;第二,仅当作业完成或运行不下去时才进行切换,系统开销小。
多道批处理系统的主要缺点如下:
①平均周转时间长。作业的周转时间是指从作业进入系统开始,直至其完成并退出系统为止所经历的时间。在批处理系统中,由于作业要排队依次进行处理,因而作业的周转时间较长,通常需几小时甚至几天。
②无交互能力。用户一旦把作业提交给系统后直至作业完成,用户都不能与自己的作业进行交互,这对修改和调试程序都是极不方便的。
(4)多道批处理系统需要解决的问题。多道批处理系统是一种有效但又十分复杂的系统。为使系统中的多道程序间能协调地运行,必须解决下述的一系列问题:
①处理机管理问题。在多道程序之间应如何分配被它们共享的处理机,使处理机既能满足各程序的需要,又能提高处理机的利用率,以及一旦将处理机分配给某程序后又应在何时收回等一系列问题。
②内存管理问题。包括应如何为每道程序分配必要的内存空间,使它们“各得其所”且不致因互相重叠而丢失信息,以及应如何防止因某道程序出现异常情况而破坏其他程序等问题。
③I/O设备管理问题。系统中可能具有多种类型的I/O设备供多道程序共享,应如何分配这些I/O设备,如何做到既方便用户对设备的使用、又能提高设备的利用率。
④文件管理问题。在现代的计算机系统中,通常都存放着大量的程序和数据。应如何组织它们才能便于用户使用,并能保证数据的安全性和一致性。
⑤作业管理问题。对于系统中的各种应用程序,例如:有的属于计算型,即以计算为主的程序;有的属于I/O型,即以I/O为主的程序;有些作业既重要又紧迫,有的又要求系统能及时响应,这时应如何对它们进行组织。
为此,应在计算机系统中增加一组软件,用以对上述问题进行妥善、有效的处理。这组软件应包括能控制和管理四大资源的软件,合理地对各类作业进行调度的软件,以及方便用户使用计算机的软件。正是这样一组软件构成了批处理操作系统。
4.分时系统
(1)分时系统的产生。如果说,推动多道批处理系统形成和发展的主要动力是提高资源利用率和增加系统吞吐量,那么,推动分时系统形成和发展的主要动力则是用户的需要。具体地说,用户需要表现在以下几个方面:
①人机交互。对于一个程序员来说,每当编写好一个新程序时,都需要上机进行调试。由于新编程序难免有些错误或不当之处需要修改,因而希望能像早期使用计算机一样,独占全机并对它进行直接控制,以便能方便地修改错误。换言之,希望能够进行人机交互。
②共享主机。在20世纪60年代计算机十分昂贵,不可能像现在这样每人独占一台计算机,而只能是多个用户共享一台计算机,但用户在用机时应能够像自己独占计算机一样,不仅可以随时与计算机交互,而且应感觉不到其他用户也在使用该计算机。
③便于用户上机。在多道批处理系统中,用户上机前必须把自己的作业邮寄或亲自送到机房,这对于用户尤其是异地用户来说十分不便。用户希望能通过自己的终端直接将作业传送到计算机上进行处理,并能对自己的作业进行控制。
分时系统恰是为了满足上述的用户需要所形成的一种新型操作系统。它与多道批处理系统有着截然不同的性能。分时系统是指一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户共享主机中的资源,每个用户都可通过自己的终端以交互方式使用计算机。
(2)分时系统实现中的关键问题。为了实现分时系统必须解决一系列问题,其中最关键的问题是如何使用户能与自己的作业交互,即当用户在自己的终端输入命令时系统应能及时接收和及时处理该命令,并将处理结果返回给用户。接着用户可输入下一条命令,此即人机交互。应当强调指出,即使有多个用户同时通过自己的键盘输入命令,系统也应能全部地及时接收并及时处理。
①及时接收。要及时接收用户输入的命令或数据并不困难,只需在系统中配置一个多路卡。例如,当要在主机上连接8个终端时,须配置一个8用户的多路卡。多路卡的作用是使主机能同时接收用户从各个终端上输入的数据。此外,还需为每个终端配置一个缓冲区,用来暂存用户输入的命令。
②及时处理。人机交互的关键是使用户输入命令后能及时地控制自己的程序运行或修改自己的程序。为此,各个用户的程序都必须在内存中,且应能频繁地获得处理机而运行;否则,用户输入的命令将无法作用到自己的程序上。批处理系统是无法实现人机交互的,因为通常大多数作业都是驻留在外存上,即使调入内存的作业也经常要经过较长时间的等待后方能运行,因而用户输入的命令很难及时地作用到自己的作业上。可见,为了实现人机交互应该做到:使所有的用户程序都直接进入内存;在不长的时间内,就能使每个程序都运行一次(较短的时间),这样方能使用户输入的命令获得及时处理。
(3)分时系统的实现方法。为了确保系统能及时处理,必须彻底改变原来批处理系统的运行方式。
一方面用户程序不能先进入磁盘,然后再调入内存。因为程序在磁盘上不能运行,当然用户也就无法与程序进行交互,因此,程序应直接进入内存;另一方面不允许一个程序长期占用处理机直至它运行结束或发生I/O请求后,才调度其他程序运行。应该规定每个程序只运行一个很短的时间(例如,0.1s,通常把这段时间称为时间片),然后便暂停该程序的运行并立即调度下一个程序运行。如果在不长的时间(例如3s)内,能使所有的用户程序都执行一次(一个时间片时间),便可使每个用户都能及时地与自己的程序交互,从而可使用户的请求及时得到响应。
具体的方法有以下几种:
①单道分时系统。在20世纪60年代初期,由美国麻省理工学院建立的第一个分时系统CTSS便属于单道分时系统。在该系统中内存只驻留一道程序,其余程序都在外存上。每当内存中的程序运行一个时间片后,便被调至外存(称为调出),再从外存上选一个程序装入内存(称为调入)并运行一个时间片,以此方法使所有的程序都能在一个规定的时间内轮流运行一个时间片,这样便能使所有的用户都能与自己的程序交互。由于单道分时系统只有一道程序驻留在内存,在多个程序的轮流运行过程中,每个程序往往可能频繁地被调入/调出多次,开销很大,因此系统性能较差。
②具有“前台”和“后台”的分时系统。在单道批处理系统中,作业调入/调出时,处理机空闲;内存中的作业在执行I/O请求时处理机也空闲。为了充分利用处理机而引入了“前台”和“后台”的概念。在具有前、后台的系统中,内存被固定地划分为“前台区”和“后台区”两部分,“前台区”存放按时间片“调入”和“调出”的交互式程序,“后台区”存放批处理作业。仅当前台调入/调出时,或前台已无程序可运行时,才运行“后台区”中的作业。
③多道分时系统。在分时系统中引入多道程序设计技术后,可在内存中同时存放多道程序,每道程序无固定位置,如果程序都较小,内存中便可多装入几道程序,由系统把已具备运行条件的所有程序排成一个队列,使它们以此轮流地获得一个时间片来运行。由于切换程序就在内存,不用花费调入、调出开销,故多道分时系统具有较好的系统性能。现代的分时系统都属于多道分时系统。
(4)分时系统的特征。分时系统与多道批处理系统相比,具有完全不同的特征。
①多路性。允许在一台主机上同时连接多台联机终端,系统按分时原则为每个用户服务。宏观上,是多个用户同时工作,共享系统资源;微观上,则是每个用户程序轮流运行一个时间片。多路性,亦即同时性,它提高了资源利用率,从而促进了计算机更广泛的应用。
②独立性。每个用户各占一个终端,彼此独立操作、互不干扰。因此,用户会感觉到就像一人独占主机。
③及时性。用户的请求能在很短时间内获得响应,此时间间隔是以人们所能接受的等待时间来确定的,通常为2~3s。
④交互性。用户可通过终端与系统进行广泛的人机对话。其广泛性表现在:用户可以请求系统提供各方面的服务,如文件编辑、数据处理和资源共享等。
5.实时系统
(1)实时系统的引入。虽然多道批处理系统和分时系统已获得了令人较为满意的资源利用率和响应时间,从而使计算机的应用范围日益扩大,但它们仍然不能满足以下两个领域的需要:
①实时控制。当把计算机用于生产过程的控制以形成以计算机为中心的控制系统时,系统要求能实时采集现场数据,并对所采集的数据进行及时处理,进而自动地控制相应的执行机构,使某些(个)参数(例如温度、压力、方位等)能按预定的规律变化,以保证产品的质量和提高产量。类似地,也可将计算机用于武器的控制,例如火炮的自动控制系统、飞机的自动驾驶系统,以及导弹的制导系统等。通常把要求进行实时控制的系统统称为实时控制系统。
②实时信息处理。通常把要求对信息进行实时处理的系统称为实时信息处理系统。该系统由一台或多台主机通过通信线路连接成百上千个远程终端,主机接收从远程终端发来的服务请求,根据用户提出的问题,对信息进行检索和处理,并在很短的时间内为用户做出正确的回答。典型的实时信息处理系统有飞机订票系统、情报检索系统等。
实时控制系统和实时信息处理系统统称为实时系统。所谓“实时”,是表示“及时”“即时”;而实时系统是指系统能及时(或即时)响应外部事件的请求,在规定的时间内完成该事件的处理,并控制所有实时任务协调一致地运行。
(2)实时任务的类型。在实时系统中必须存在着若干个实时任务,由它们反映或控制某个(些)外部事件,因而带有某种程度的紧迫性。可从不同的角度对实时任务加以分类。
①按任务执行时是否呈现周期性来划分,包括:周期性实时任务,要求按指定的周期循环执行,以便周期性地控制某个外部事件;非周期性实时任务,任务的执行无明显的周期性,但都必须联系着一个截止时间。它又可分为:开始截止时间,任务在某事件以前必须开始执行;完成截止时间,任务在某事件以前必须完成。
②根据对截止时间的要求来划分,包括:强实时任务,系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果;弱实时任务,它也联系着一个截止时间,但并不严格,若错过了任务的截止时间,计算结果的可用性会下降,但对系统产生的影响不会太大。
(3)实时系统与分时系统的比较。下面从多路性、独立性、及时性、交互性和可靠性5个方面对它们进行比较。
①多路性。实时信息处理系统与分时系统一样具有多路性,系统按分时原则为多个终端用户服务;而对实时控制系统,其多路性主要表现在经常对多路的现场信息进行采集以及对多个对象或多个执行机构进行控制。
②独立性。实时信息处理系统与分时系统一样具有独立性,每个终端用户在向实时系统提出服务请求时,彼此独立地操作,互不干扰;而在实时控制系统中信息的采集和对对象的控制,也都是彼此互不干扰。
③及时性。实时信息系统对实时性的要求与分时系统类似,都是以人们所能接受的等待时间来确定;而实时控制系统的及时性,则是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级、百毫秒级直至毫秒级。
④交互性。实时信息处理系统虽然也具有交互性,但这里人与系统的交互,仅限于访问系统中某些特定的专用服务程序。它不像分时系统那样能向终端用户提供数据处理、资源共享等服务。
⑤可靠性。分时系统虽然也要求系统可靠,但相比之下,实时系统则要求系统高度可靠。因为任何差错都可能带来巨大的经济损失,甚至无法预料的灾难性后果。因此,在实时系统中,往往都采取了多级容错措施,以此保证系统的安全及数据的安全。
批处理系统、分时系统和实时系统是3种基本的操作系统类型。而一个实际的操作系统,可能兼有三者或其中两者的功能。