1.2 操作系统的发展历史
在计算机刚刚诞生的20世纪40年代,计算机系统仅由硬件和应用软件组成。在这一时期,整个计算机系统是由用户直接控制使用的,所以又称为“手工操作”阶段。当时的计算机不仅速度慢、存储容量小,而且外部设备简单,辅存主要借助磁带,如图1.2所示,整个计算机系统由单个用户独占使用。当时用户使用计算机的大致方法是:将程序和数据以穿孔方式记录在卡片或纸带上,把卡片或纸带装在输入设备上;然后在控制台上形成输入命令,启动设备将卡片、纸带信息或磁带上的信息输入到指定的主存单元;接着在控制台上指定主存启动地址,并启动程序运行;最后在打印机等输出设备上取得程序运行的结果。
图1.2 早期计算机系统
显然,在这种使用方式下,用户在上机时独占全部资源,使用机器语言编写程序,且对计算机各部分的工作直接实施人工干预,或者由用户自己所写的程序控制。在硬件各部分速度较低且程序量较小的情况下,这种方式还能被人们所接受。但是,随着计算机速度的提高和FORTRAN,COBOL等高级程序设计语言的问世,这种方式势必使人无法忍受。
例如,用户如要想运行一个用FORTRAN语言编写的程序,必须首先把存有FORTRAN编译程序的磁带安装在磁带机上,将FORTRAN编译程序和用户编写的FORTRAN源程序调入主存,并对FORTRAN源程序进行编译;然后再安装磁带上的“连接程序”,对编译好的程序进行连接,形成目标程序;最后启动目标程序运行。
由此可见,由于一批包括语言编译器在内的系统软件的问世,使用户上机过程变得更繁杂,并增加了程序运行前的准备时间。由于计算机速度的提高,上述人工操作势必造成更大的资源浪费。为了缩短运行前的准备时间,提高计算机资源的利用率,人们提出了简单的改进措施,引入了“系统操作员”的概念。各用户将自己的程序及程序的运行步骤(控制意图)交给系统操作员,系统操作员将这种形式的一批用户作业按类进行划分,每次处理一类作业。
例如,将需要进行FORTRAN编译程序的作业组织成一类依次进行编译,并由系统操作员控制计算机运行用户程序。当然,这种使用计算机的方法仍旧停留在手工操作阶段,人的操作速度与机器运行速度相比仍存在极大的差距。由于人的操作缓慢,使得计算机资源大部分时间闲置,因此急需用程序来代替人的手工操作。
1.2.1 监督程序
20世纪50年代,为了减少系统操作员工作所花的时间,提高资源利用率,人们开始利用计算机系统中的软件来代替系统操作员的部分工作,从而产生了最早的操作系统——早期批处理系统。
1.批处理系统
批处理系统的基本思想是:设计一个常驻主存的程序(监督程序Monitor),操作员有选择地把若干用户作业合成一批,安装在输入设备上,并启动监督程序。然后,由监督程序自动控制这批作业运行。监督程序首先把第一道作业调入主存,并启动该作业。一道作业运行结束后,再把下一道作业调入主存启动运行。待一批作业全部处理结束后,系统操作员则把作业运行的结果一起交给用户。按照这种方式处理作业,各作业间的转换以及各作业的运行完全由监督程序自动控制,从而减少了部分人工干预,有效地缩短了作业运行前的准备时间。
所谓作业(Job),是用户在一次上机活动中要求计算机系统所做的一系列工作的集合。从执行的角度看,作业由一组有序的作业步组成,如“编译”、“运行”分别称为不同的作业步。
当监督程序取代系统操作员的部分工作后,用户应以某种方式告知监督程序其作业的处理步骤。因此,在早期批处理系统中引出了“作业控制语言”和“作业控制说明书”的概念。作业控制说明书是利用作业控制语言编写的,用以控制作业运行的一段描述程序。在组织一道作业时,通常将“作业控制说明书”放在被处理的作业前面(或插入适当位置),监督程序则通过解释执行“作业控制说明书”中的语句来控制作业运行。典型的卡片作业结构如图1.3所示。
图1.3 典型的卡片作业结构
这叠卡片中某些卡片表示了作业控制语句,监督程序通过逐条解释、执行该说明书中的作业控制语句自动控制作业运行。$JOB语句说明该作业的名字,预计最大执行时间等信息。监督程序解释$FORTRAN语句的结果是把FORTRAN编译程序调入主存,并启动编译程序编译后面的源程序。编译结束后,控制返回到监督程序。监督程序解释$LOAD语句的结果是通过连接程序把经过编译的程序连接起来,形成可执行程序。最后解释$RUN语句,从而启动可执行程序运行。
监督程序内专设一个作业控制程序(Job-Controller)以控制作业的运行。批处理作业的控制意图描述在“作业说明书”中。作业控制程序在控制某一道作业运行时,其实质性工作是解释执行“作业说明书”中的语句,实现对作业的控制。从逻辑上看,一个作业由三部分组成:源程序(或程序)、数据及“加工”步骤。监督程序一旦接收到一道作业后,根据“加工”步骤所规定的动作逐步完成对作业的加工活动。
如果用户可以使用全部的机器指令,可以直接控制和使用系统资源(如主存、外部设备等),用户编程中的错误往往可能导致各种预想不到的后果。为了避免这类错误发生,人们将机器指令分为“普通指令”和“特权指令”,并且引入了“模式/态(Mode)”的概念。把有关I/O的指令、对特殊寄存器的访问等列为特权指令,并且规定只有监督程序才有权执行特权指令,用户程序则只能执行普通指令。将I/O指令列为特权指令后,用户便不能直接控制设备进行传输了。如果用户希望进行I/O操作,则必须向监督程序提出请求;监督程序通过调用系统内部的程序段来完成用户的I/O请求。由此又引出了“系统调用(System)”或称“广义指令”的概念。
监督程序为用户提供一系列分别完成各种不同功能的系统调用程序段。用户程序中可以用一条特殊的硬件转移指令请求一次特定的系统调用。当处理机执行到用户程序的系统调用指令时,硬件通过产生“自陷(trap)”并借助转换机制将当前的用户模式转变为监督模式,控制也随之转入监督程序。监督程序根据用户提供的调用参数进行相应的处理,完成设备I/O等功能。处理结束后,监督程序则根据“自陷”前所保存的现场将模式改变为用户模式,退回用户程序继续执行。
“系统调用”概念的引入提高了监督程序在整个系统中的地位,丰富了监督程序的功能。监督程序不仅对作业的处理流程进行自动控制,而且还负责为用户程序的运行提供各种功能的服务。“系统调用”的引入也为用户提供了使用计算机系统的新界面,使用户从直接使用物理处理机的繁杂束缚中解脱出来,呈现在用户面前的是一台功能强、使用方便的虚拟处理机。引入“系统调用”后,用户对系统内部各种资源的使用均由监督程序代为完成,因而也使系统更加安全,避免了用户在自编程使用资源时可能出现的某些错误,也有利于提高资源利用率。
在手工操作阶段,存储器全部由用户支配使用。引入监督程序后,存储器不再由用户独占,常驻主存的监督程序必须占据部分主存空间。通常,监督程序占用主存的0~k单元,k+1~n单元供用户程序占用。监督程序所在的存储空间称为“系统空间”,用户程序所在的存储空间称为“用户空间”。为了避免用户程序执行时有意或无意地对系统空间进行存取访问,硬件提供一个界地址寄存器,用以存放系统空间与用户空间的分界地址。当系统处于用户模式时,每访问一次主存,硬件自动进行地址越界检查,从而保证了监督程序不被破坏。这种保护称为“存储保护”。
在早期批处理系统中,当系统动态运行时,一段时期处于监督模式,一段时期又处于用户模式。从用户模式进入监督模式主要是由用户程序中的系统调用而引起的。例如,用户请求设备I/O或请求结束运行。但是,若用户程序执行过程中永不出现系统调用,或者永不出现请求结束运行的系统调用(如用户程序进入了“死循环”),系统监督程序便失去了作用。为了防止这种情况发生,人们设置了“定时器中断”。
定时器(Timer)是一个硬件计数器,计时长度可以根据需要而调整。计数器根据硬件的计时周期自动计时,计数器满后便发生定时器中断。用户程序执行时若碰到定时器中断,则无条件进入监督程序。监督程序根据当前作业说明(或规定)的“最大运行时间”值来判断该程序是否进入了“死循环”,从而可以有效地防止某个用户程序长期垄断系统处理机的现象。
引出上述概念后,早期批处理系统中的监督程序工作流程如下:
(1)判断输入设备上是否有待输入的作业,如果没有,则等待作业输入。
(2)从设备上输入一道作业。
(3)控制作业运行。
① 取“作业说明书”中的一条语句,解释执行。如果是一条“作业终止”语句,则删除该作业,转第(1)步。
② 如果当前是一条“执行性语句”(如请求编译、请求运行用户程序等),则在主存中建立相应程序的运行环境,并分配CPU,开始在用户模式执行该程序。
③ 在用户模式的程序执行过程中,如果发生“中断”事件(如I/O中断、系统调用、程序执行错误等),硬件将控制转入监督程序。当“中断”事件处理结束后,返回用户态,用户程序继续执行。
④ 用户程序执行结束后,进入监督程序,控制转步骤①,取下一条“作业说明书”语句执行。
监督程序如同一个系统操作员,它负责批作业的I/O,并自动根据“作业控制说明书”以单道串行的方式控制作业运行,同时在程序运行过程中通过提供各种系统调用,控制使用计算机资源。虽然监督程序并不能被称为操作系统(它与操作系统的本质差别在于监督程序不具有并发控制机制),但它与操作系统有许多相似的特征。监督程序在系统中的地位和作用、实现的基本目标及管理资源的基本方法与操作系统类似。真正的操作系统就是在此基础上进一步发展和完善起来的。
与手工操作阶段相比,监督程序的引入有效地减少了人工干预时间和作业运行前的准备时间,相对提高了CPU的利用率。但是,在计算机速度大幅度提高的形势下,用这种方法管理计算机远不能适应需要。首先,在一个CPU上运行的程序启动I/O操作时CPU被迫处于空闲状态或忙等待(Busy_Wait)状态,也就是说,CPU启动I/O操作后在循环判断I/O是否完成,而没有做实质性工作,这将导致高速的CPU受到慢速设备的牵制,从而使CPU无法充分利用。
2.利用脱机I/O改善系统性能
由于作业的I/O与作业的运行是串行的,所以受卡片机、光电机、打印机等慢速I/O设备的影响,CPU的利用率难以提高。为了进一步提高系统的工作效率,必须解决低速I/O的问题。磁带机的传输速度比卡片机、光电机和打印机的速度快,若用磁带机代替这类低速设备便可进一步缩小CPU与外设间速度上的差异。历史上人们曾采用脱机I/O技术实现作业I/O,其系统模型如图1.4所示。
图1.4 脱机I/O系统模型
在采用脱机I/O技术的系统中,主机的所有I/O操作都是通过磁带机进行的。用户的作业由另一台能力较弱、价格较低的卫星机负责从卡片机传输到磁带上(称为输入带),然后操作员将输入带安装到与主机相连的磁带机上。主机在处理输入带上的作业时,将产生的输出结果直接送到输出带上。操作员再将输出带安装到卫星机上,由卫星机负责将输出带上的信息从打印机上输出。由于磁带机比慢速I/O设备(如卡片机、打印机)的速度快,因而按照这种脱机方式控制作业的I/O,可以减少作业I/O所花的时间,有效地提高CPU的利用率。如果将一台主机与多台卫星机有机地组合,使速度得到最好的匹配,则可以大幅度提高系统的处理能力。从20世纪50年代末到60年代初,这种脱机处理方式被广泛地应用于批处理系统中。
无论如何,由于CPU与I/O设备是以串行方式工作的,也就是说,当CPU工作时,I/O设备闲着;当I/O设备工作时,CPU在忙等待,这就限制了设备的利用率。另外,从方便用户的角度来说,采用这种批量处理的控制方法,用户不能以交互方式使用计算机,从而限制了对计算机的灵活使用。随着对这些问题不断深入的研究和解决,逐步形成了第2代操作系统。
1.2.2 专用操作系统
20世纪60年代初,计算机硬件有了很大的发展。例如,主要元件由电子管变成了晶体管,出现了磁盘、通道、终端等部件。而这些硬件的发展为监督程序提出了新的研究课题,也为操作系统的形成提供了重要的物质基础。这一时期是操作系统形成的重要时期。随着计算机应用的巨大牵引,不仅批处理系统得到充分的发展,而且还出现了实时(Real Time)、分时(Sharing Time)等不同类型的系统。
1.多道批处理系统
在早期批处理系统(也称单道批处理系统)中,CPU与I/O设备以串行方式工作,故两者的利用率较低。为了提高资源利用率,人们开始使用I/O缓冲、SPOOLing等技术,尤其是引入了“多道程序设计”(Multiprogramming)的思想,使单道批处理系统发展为多道批处理系统。
(1)利用I/O缓冲异步编程
在单道批处理系统中,作业的处理过程是单道串行的,所以在监督程序的控制下CPU与外设也按串行方式工作。为改变这种串行工作方式,人们首先采用了缓冲(Buffering)技术使两者在一定程度上并行操作。
例如,在主存中建立两个长度相同的缓冲区:B0,B1。对于一批待输入的信息,首先将其中的一个记录从设备上读入B0,读完后接着将下一个记录从设备上读入B1,与此同时,CPU开始处理B0中的记录。待CPU处理工作与输入工作均结束后,则将下一个记录读入B0,CPU同时处理B1中的记录。如此重复直至将信息全部输入,这种利用双缓冲区实现的I/O操作在一定程度上实现了CPU与外设并行工作。这类并行的实现要求I/O设备有较强的功能,能不依赖于CPU实现外设与主存独立交换数据,在引入通道技术后这个缓冲技术得到了广泛应用。
(2)SPOOLing技术
通道技术的引入,使CPU与外设并行操作成为可能。
通道是指专门用来控制I/O的硬件装置,可以实现外设与主存直接交换数据,在相当长的时间里不用打扰CPU,因此这时CPU可以去干别的事情。为了能够消除脱机I/O带来的人工干预的麻烦,又要保持脱机I/O系统中作业高速入出主存的特点,人们借助通道和磁盘成功地实现了著名的SPOOLing系统。通道也可看成是专门的I/O处理机,磁盘则是一种比磁带更快且能够随机存取的辅助存储设备。
SPOOLing(Simultaneous Peripheral Operation On Line)的含义是并发的外部设备联机操作。用SPOOLing技术控制批处理系统中作业I/O(如图1.5所示)的基本思想是:用磁盘(或一组磁盘)设备作为主机的直接I/O设备,即系统直接从磁盘上选取作业运行,作业的运行结果也直接存入磁盘,相应的通道(在设备驱动程序驱动下)则负责并行地将卡片机上的用户作业输入到磁盘,或者将磁盘中作业的运行结果从打印机上输出。
图1.5 SPOOLing技术控制批处理系统中作业I/O
通道直接受主机控制,主机与通道之间借助中断机制相互通信。例如,只要卡片机上有用户作业,操作系统便启动设备通道,通道被启动后便将作业依次地通过主机主存传输至磁盘,在作业输入期间主机可以并行地从事其他工作。类似地,只要磁盘中存在等待输出的信息且打印机空闲,则操作系统通过启动通道将信息从打印机上输出。所以,SPOOLing技术又被称为“伪脱机I/O”技术,被广泛地用于后来的批处理系统中。采用SPOOLing技术实现I/O的系统通常又简称为SPOOLing系统。SPOOLing技术为实现多道批处理系统中的多道程序设计思想提供了重要的基础。
(3)多道程序设计技术
如前所示,人们采用SPOOLing技术,利用主机和通道间的并行性,可以使作业的I/O与主机运算并行,提高了系统效率。当在主机上运行的某一道作业需要传输大量数据时,人们可以采用缓冲技术来获得一定程度上的并行。尽管如此,由于系统中作业之间仍以串行方式被处理,即主存任何时刻至多保持一道作业,处理完一道作业后再从外部选取另一道作业,所以无法进一步提高资源(如CPU、主存等)的利用率。为了从根本上解决这一问题,人们提出了“多道程序设计”技术。
多道程序设计技术的基本思想是,在主存同时保持多道程序(作业),主机(对于单CPU系统,书中如没有特殊说明则都是单CPU系统)以交替方式同时处理多道程序。
所谓多道程序,从宏观上看,是指主机内同时保持和处理若干道已开始运行但尚未结束的程序。而采用这种多道程序设计技术的系统被称为多道程序设计系统。
由于任何一道作业的运行总是交替地串行使用CPU、外设等资源,即使用一段时间的CPU,然后使用一段时间的I/O设备,如图1.6所示,所以如果采用多道程序设计技术,加之对多道程序实施合理的运行调度,可以大大提高CPU与外设的利用率,使两者高度并行工作。
如图1.7所示,是三道作业同时运行时CPU与外设的利用情况。当作业A因请求I/O而放弃CPU时,操作系统为作业A启动相应通道(由通道独立地控制I/O)后,便把CPU重新分配给作业B,此时CPU与外设并行工作。类似地,当作业B也请求I/O时,CPU则重新分配给作业C。依此类推,只要系统能保持足够道数的作业,再加上合理的调度,便可能使CPU与I/O设备获得高度的并行。采用多道程序设计技术无疑大大提高了主存及其他资源的利用率。
图1.6 单作业执行过程
图1.7 多道作业执行过程
引入多道程序设计技术无论对于实现多道批处理系统还是实现交互式、分时乃至实时系统均提供了重要的技术手段。多道程序设计系统的出现标志着操作系统的形成。
操作系统的最基本特征如下:
① 并发(Concurrent)机制,用以支持多道程序设计技术。
② 共享(Sharing)机制,控制各种并发活动正确共享系统软、硬资源。
正是由于这两个特征使得操作系统变得极其复杂。
利用上述论及的各种技术,特别是多道程序设计技术,便将早期的单道批处理系统发展成了多道批处理系统。多道批处理系统的基本特征是:系统按照成批(或称批量)的形式输入用户作业,并采用SPOOLing技术和多道程序设计技术控制多道作业运行。
2.分时系统
多道批处理系统的出现有效地提高了系统资源的利用率,但却失去了手工操作阶段的“交互性”优点。也就是说,使用多道批处理系统的用户必须将其作业的控制意图完全地描述在“作业控制说明书”中,用户一旦把作业交给了系统,便不能再以“会话”方式控制作业运行了,所以使用户在一定程度上感觉不便。
首先,用户的算题周期延长了,用户向机房提交的作业往往需要几经反复才能获得所需结果(对一个新程序尤其如此);其次,程序运行过程中失去了人的主观能动作用。
按照手工操作方式算题,程序员可以观察程序的运行情况,一旦发现错误便可以随时设法改正。特别是对一个给定的数学模型,当需要观察不同参数对其产生的影响时,尤其需要交互式环境。“方便用户”是操作系统追求的重要目标之一,所以在这一阶段很快出现了以多道程序设计技术为基础的交互式系统,即“分时系统”。
由于控制台和打印机这类外设作为交互作用的人-机接口设备极不方便,因此当时作为理想的人-机接口设备的终端设备便应运而生。
终端是集I/O能力为一体的设备,在此设备基础上,系统为用户提供一组终端命令,操作系统中增设了一个命令解释程序。用户可以在终端上通过命令与系统交互,从而产生了交互式系统。将交互式系统与多道程序设计系统相结合便形成了分时系统。
在分时系统中,一台计算机与多台终端相连接,用户通过各自的终端和终端命令以交互方式使用计算机系统。系统使每个用户都能感觉到好像自己在独占计算机系统,而在系统内部,操作系统负责协调多个用户分时共享CPU,这便是所谓“分时”的含义。
在协调用户分享CPU时,操作系统通常采用“时间片轮转”原则分配CPU给用户程序。系统规定一个被称为“时间片”的时间单位,所有终端用户轮流享用一个时间片的CPU时间。例如,若有n个用户,时间片大小为Q,则每个用户在nQ的时间内至少能使用Q个时间单位的CPU。由于CPU的速度比人在终端上输入命令的速度快很多,因此用户似乎感到CPU被自己所独占。
分时系统的基本特点如下:
① 并发性。系统能协调多个终端用户同时使用计算机系统(即系统内部具有并发机制),能控制多道程序同时运行。
② 共享性。对资源而言,系统在宏观上使各终端用户共享计算机系统的各种资源,而在微观上它们则分时使用这些资源。
③ 交互性。对系统和用户双方而言,人与计算机系统以对话方式进行工作。
④ 独立性。对用户而言,系统能使用户有一种只有他自己在使用计算机的感觉。
显然,前两个特点(即并发和共享)是各类操作系统所共有的基本特征,而后两个特点是分时系统所独有的特点。
交互式作业是指在分时操作系统中用户通过终端和系统提供的终端命令指导上机的过程,用户的一次交互使用机器的过程被看成是交互式作业。交互式作业的提交形式与批处理作业不同。用户登录代表了用户交互作业的生成,用户动态地向系统提交作业步,每完成一个作业步的动作,系统便给出相应的回答信息,用户继续提交下一个作业步,直至作业全部完成,用户和系统以交互方式工作。分时系统上的交互式作业比批处理系统上的批处理作业在管理和控制方面要简单些。
分时系统的一个重要设计是分时地为所有终端用户服务,如在某终端用户输入命令的时候,处理机可能在处理其他终端用户已经输入的命令。为了保证交互的及时性,当分时系统的用户动态提交作业步时,系统必须立即响应并处理每一个作业步的动作。对终端用户通过终端提交的作业步,系统必须加以识别并立即解释执行。为此,系统设有命令解释程序,由它解释终端所输入的命令。如图1.8所示是分时系统运行环境。
图1.8 分时系统运行环境
3.实时系统
随着计算机的不断普及和发展,计算机的应用领域日益扩大。20世纪60年代后期,计算机已广泛应用于工业控制、军事控制及商业事务处理等领域。这类新出现的应用领域对计算机系统提出了新的要求,希望系统对来自外部的信息能在规定的时限内做出处理,我们称之为实时处理。“实时”应用可分为两类。
(1)实时控制
如将计算机用于飞行器的飞行自动控制。在这种应用中,计算机要对测量系统所测得的数据及时处理并及时输出,以便对被控目标进行及时控制或向控制人员显示结果。类似地,把计算机用于工业控制,如用计算机控制炼钢,这时计算机要对传感器定时送来的“炉温”数据进行及时处理,然后控制相应的机构使得炉温按照一定的规律变化或恒定不变。这类应用被称为“实时控制”。这类系统必须确保及时,又称强实时系统。现在诸多在各类控制系统的计算机上运行的“嵌入式操作系统”都属于实时控制类实时系统。
(2)实时事务处理
这类应用是把计算机用于飞机订票系统、银行管理系统等。在这种应用中,计算机系统能对用户的服务请求及时做出回答,并能及时修改、处理系统中的数据。这类应用被称为“实时事务处理”。
所谓“实时”(Real Time),可以理解为立即、及时的意思,是指计算机的运算和处理时间与被控过程或事务处理所需的真实时间相适应。我们把面向这类实时应用的计算机系统称为实时系统。虽然实时系统大都具有专用性,而且其种类、规模及对实时性的要求程度各不相同,但对于大、中型实时系统来说,绝大部分都以多道程序设计技术为基础,所以在资源管理、并发控制等方面与其他类型的系统具有相同的基本特性。实时系统与其他类型系统的本质差别在于“及时性”,即实时系统应能及时地响应外部事件的请求并在严格规定的时间内完成对该事件的处理,控制实时设备和实时任务协调一致地运行。“高可靠性”也是实时系统的主要设计目标之一。为了提高实时系统的及时性和可靠性,软、硬件都必须采用相应的措施加以保证。
实时系统的主要特征和功能如下:
① 时钟分辨度高。有更高的时钟中断频度,可实现更精确计时,可以更加频繁地进入操作系统“处理机调度程序”运行,保证实时任务及时占用处理机,以此保证实时任务的快速响应。
② 支持可剥夺任务调度。保证实时任务无条件剥夺非实时任务运行,不会让非实时任务耽误实时任务。
③ 多级中断机制。保证实时任务对应的事件中断为高级,例如,在计算机控制的炼钢系统中,能对传感器“炉温”数据采集设备对应的中断进行及时处理,允许它的中断打断其他诸如键盘中断等低级中断的处理程序。
20世纪60年代是操作系统不断成熟、蓬勃发展的重要时期,不仅先后出现了多道批处理系统、分时系统和实时系统,而且操作系统的基本理论、原理、基本技术和设计方法也已日趋成熟。从本节的介绍中读者不难看出,各种不同类型的系统均基于多道程序设计系统。故本书并未专辟章节具体介绍各类系统,而是以多道程序设计系统为核心介绍操作系统的基本理论、原理和设计方法。同时在具体讨论各种资源管理的策略和方法时,对其所适用的环境也加以研究和分析。
1.2.3 多种方式操作系统
20世纪60年代中期,随着计算机集成电路和操作系统的飞速发展,用户对计算机和操作系统的要求不断提高,一旦一个新的具有更高性能的机器问世,用户便纷纷聚集在新机器的周围。新机种的不断出现,一方面满足了用户的需要,另一方面也给用户带来了某些不便,这是因为用户使用新机器势必舍弃在老机器上已通过的程序。而随着应用广度与深度的不断扩展,原有软件已成为一笔巨大的财富。对此,IBM公司首先推出了系列机概念。
所谓系列机就是同一系列的机器中新型号的机器能与老型号的机器兼容,这样用户既可以立即使用更高级的机器,又能在新机器上继续使用原有的程序,两全其美。为了满足用户的需要,计算机也被设计成容量大,功能全,几乎提供用户需要的所有功能的通用计算机。与这种形势相适应,第三代操作系统被设计成多种方式操作系统,即一个操作系统既能处理批量作业,也能处理分时、实时等作业。这类系统的典型代表是UNIX、VMS(DEC VAX机器上的操作系统)操作系统。
多种方式操作系统不仅给用户提供了很大方便,而且对计算机资源的利用也更为合理。在单方式系统中,可供运行的作业类型受到限制,而多种方式系统能处理任何类型的作业,可将各种类型的作业合理搭配,系统更容易达到饱和状态,从而更加有利于提高资源的利用率。
1.2.4 PC操作系统、并行与分布式操作系统及发展
20世纪80年代初,计算机已十分普及,特别是个人计算机已开始进入千家万户,人们对计算机的使用要求更高了。这时,人们不仅仅满足于在计算中心使用计算机,并且要求在办公室、家中也能方便地使用计算机并能够交换信息。这促进了计算机网络的发展,人们把许多计算机连成网络,在网络中的计算机可以相互通信,共享软、硬件资源,从而可以让用户通过多种多样的终端或工作站访问遍布各地的计算机网络。网络的出现给计算机的发展和应用带来了动力,同时也给操作系统提出了新的问题。
为了能控制计算机网络,人们提出了“分布式操作系统”(Distributed Operating System)的理想境界。在为分布式操作系统理想而奋斗的实践中,网络操作系统派生出来。1983年诞生的4.2BSD UNIX包含了对TCP/IP通信协议的支持,它是网络操作系统的代表。分布式操作系统与传统的操作系统有很多共同之处,但是它面临着传统操作系统所没有遇到过的网络中机间通信的问题。分布式操作系统在传统操作系统的基础上增加了许多机器定位、机间通信等方面的内容。
20世纪90年代以来,随着共享主存的对称多处理机系统的广泛应用,“多机操作系统”也已经成熟。多机操作系统不同于单机操作系统,它支持多个处理机真正地并行运行多个程序。多机操作系统以支持并行多任务为其主要特征,充分发挥计算机中多处理机并行处理的优势,在科学计算及高端事务处理服务器领域占有重要地位。
1985年,微软公司受苹果公司的Macintosh窗口式人机界面的影响,发布了基于DOS的Windows系统。以微软公司的“Windows系列操作系统”为代表,以其特有的图形化人机界面,为计算机被普通用户所接受起到了决定性作用。这种操作系统以图形显示设备、鼠标、键盘等I/O外设为基础,配备有相应图形显示驱动程序及窗口管理模块,操作系统各种实用程序不再用文本行的I/O接口界面,取而代之的是图形化的窗口界面,这使计算机更加接近大众,更加快速地得到普及。
操作系统自形成以来,经过几十年的发展,其基本原理和设计方法已趋于成熟。出现了许多得到广泛公认的流行系统,如UNIX,Windows系统等。20世纪80年代后,随着通用微处理器芯片的高速发展,个人计算机和工作站系统得到了迅猛的发展,强烈冲击着传统小型机和中大型机市场。相应地,微机及工作站上的操作系统获得了快速的发展和应用(如Windows,Solaris,IRIX等)。从操作系统的发展历史看,推动其发展的动力主要来自计算机系统的不断创新和计算机应用的不断深入。
当前操作系统还在不断发展过程中,以下4个方面是发展的研究重点:
① 嵌入式操作系统的研究。主要伴随着个人数字助理(PAD)、掌上电脑、电视机顶盒、智能家电、智能卡等设备的发展,对操作系统在功能和所占储存空间大小权衡上、对实时响应和手持设备的交互界面都提出了新的要求。
② 强实时操作系统的研究。对操作系统的实时响应要求从来没有停止过,要求计算机的最大响应时间越来越短,对任务调度时机、算法的要求越来越高。特别是针对通用操作系统的实时性研究还在不断发展当中。
③ 并行操作系统的研究。随着高性能通用微处理器的发展,人们已经成功地提出了用它们构造“多处理机并行”的体系结构,如基于共享主存的对称多处理机系统(SMP)、多核系统。用成千上万个微处理器实现基于分布式存储的大规模并行处理机系统(MPP),这类被称为巨型机的并行系统有着良好的发展前景。建立在这类并行机上的操作系统与传统操作有明显的区别,其突出特征是提供各类并行机制,如并行文件系统、并行I/O控制、多处理机分配和调度、处理机间的通信和同步、用户任务的并行控制等。
④ 网络操作系统和分布式操作系统的研究。计算机网络系统和分布式系统已经深入人心。就目前情形而言,网络系统也还在不断完善当中,基于Client/Server模型的分布式系统也已不断走向应用,完全分布式的系统还未成形,仍将是研究的热点问题。另外,集群计算结构及网格结构的发展、新型网络存储的发展,给操作系统及其文件系统研究带来了新的挑战。