计算机操作系统(第3版)(微课版)
上QQ阅读APP看书,第一时间看更新

1.2 操作系统的形成和发展

操作系统是由客观的需要而产生,随着计算机技术的发展、计算机体系结构的变化和计算机应用的日益广泛而不断地发展和完善的。它的功能由弱到强,在计算机系统中的地位也不断提高,以至成为系统的核心。操作系统的发展与当时的硬件基础和软件技术水平有着密切的关系。本章讨论操作系统的发展历程,读者应该关注操作系统的发展经历了哪几个阶段,每个阶段具备的硬件支持、所采用的软件技术、获得的成就、解决的问题,以及进一步发展出现的新问题,这样我们就能了解操作系统产生的必然性和促使它发展的根本原因。

从20世纪40年代至今,组成计算机的元器件经历了电子管时代、集成电路时代、超大规模集成电路时代。硬件技术在20世纪60年代初期有了两个重大突破——通道的引入和中断技术的出现。硬件技术的成果使操作系统支持多个程序同时运行成为可能。外部设备从只有纸带输入机、磁带机,发展到出现磁盘、磁鼓、磁盘阵列、光盘塔等存储设备,调制解调器、网络接口等通信设备,这些设备使操作系统与外界的联系与通信更加方便和快捷。计算机体系结构也在不断地变化,由单CPU的计算机系统发展到具有并行处理能力的计算机系统,在不同体系结构的计算机系统上配置了不同类型的操作系统。

操作系统的发展过程经历了操作系统发展的初级阶段、操作系统的形成以及进一步发展这3个阶段。操作系统发展的初级阶段又可分为早期批处理、脱机批处理和执行系统3个过程;操作系统形成的标志性特征是采用了多道程序设计技术和分时技术,这一阶段出现了批量操作系统、分时操作系统和实时操作系统;从20世纪80年代以来,操作系统得到了进一步发展,出现了功能更强、使用更方便的各种不同类型的操作系统。

1.2.1 操作系统发展的初级阶段

1946年至20世纪50年代后期,计算机的发展处于电子管时代,构成计算机的主要元件是电子管,其运算速度很慢(只有几千次/秒)。早期计算机由主机、输入设备(如纸带输入机、卡片阅读机)、输出设备(如打印机)和控制台组成。人们在早期计算机上解题采用的是手工操作方式,即用户以手工方式安装或拆卸,控制数据的输入或输出,通过设置物理地址启动程序运行,这些手工操作称为“人工干预”。在早期计算机中,由于计算机的速度慢,这种人工干预的影响还不算太大。

在20世纪50年代后期,计算机进入晶体管时代,计算机的速度、容量、外设的品种和数量等方面和电子管时代相比都有了很大的提高,这时手工操作的慢速度和计算机运算的高速度之间形成了人机矛盾。表1.1所示为人工操作时间与机器有效运行时间的关系,由表1.1可见人机矛盾的严重性。

表1.1 人工操作时间与机器有效运行时间的关系

说明:程序处理包括完成用户算题任务所需进行的各项工作。在计算机发展的初期,人们对一个程序的处理称为一道作业。

为了解决人机矛盾,必须去掉人工干预,实现作业的自动过渡。科学家编制了一个小的核心代码,称为监督程序。它常驻主存,实现了作业的自动过渡,这个监督程序就是操作系统的萌芽。

1.早期批处理

每个用户将需要计算机解决的任务组织成一道作业。每个作业包括程序、数据和一个作业说明书。作业说明书提供用户标识、用户程序所需的编译程序、系统资源等信息。每道作业的最后是一个终止信息,它给监督程序一个信号,表示此作业已经结束,应为下一个用户作业的服务做好准备。

在控制作业运行前需要做预处理。各用户提交的作业由操作员装到输入设备上,然后由监督程序控制将这一批作业转存到辅存(早期是磁带)上。监督程序对磁带上的一批作业将依次调度,使它们进入主存运行。监督程序首先审查该作业对系统资源的要求,若能满足,则将该作业调入主存,并从磁带上输入所需的编译程序;编译程序将用户源程序翻译成目标代码,然后由连接装配程序把编译后的目标代码及其所需的子程序装配成一个可执行的程序,接着启动执行;计算完成后输出该作业的计算结果。一个作业处理完毕后,监督程序又自动地调下一个作业进行处理。重复上述过程,直到该批作业全部处理完毕。

监督程序实现了作业的成批处理,I/O工作由CPU直接控制,这样的系统称为(早期)联机批处理系统。注意,这里说的联机指的是中央处理机对I/O的控制方式,若CPU直接控制I/O操作,则系统采用的是联机操作方式。

2.脱机批处理

早期的联机批处理系统实现了作业的自动过渡,同手工操作相比,计算机的使用效率提高了。但存在的问题是作业从输入机到磁带、由磁带调入主存、结果的输出打印都是由中央处理机直接控制。在这种早期的联机操作方式下,随着处理机速度的不断提高,CPU的高速度和I/O设备的慢速度之间形成的矛盾不断地加剧。因为在输入或输出时,CPU是空闲的,使得高速的CPU要等待慢速的I/O设备的工作,从而不能发挥应有的效率。为了克服这一缺点,在批处理系统中引入了脱机I/O技术而形成了脱机批处理系统。

脱机批处理系统由主机和卫星机组成,如图1.4所示。主机负责计算,卫星机负责I/O工作。作业通过卫星机输入到磁带上,然后移到主机上;主机从输入带上调入作业,并予以执行;作业完成后,主机负责把结果记录到输出带上,再由卫星机负责把输出带上的信息打印输出。这样,主机摆脱了慢速的I/O工作,可以较充分地发挥它的高速计算能力。同时,由于主机和卫星机可以并行操作,因此和早期联机批处理系统相比,脱机批处理系统较大程度地提高了系统的处理能力。

图1.4 脱机批处理系统

联机批处理系统解决了人机矛盾,而脱机批处理系统进一步解决了CPU的高速度和I/O设备的低速度这一对矛盾。

3.执行系统

脱机批处理系统实现了作业的自动过渡,提高了系统的处理能力,但存在着一些缺点。首先是磁带需要人工拆卸,极其不便;其次是系统保护问题越来越突出。一种情况是,由于系统没有任何保护自己的措施,若目标程序执行一条非法的停机指令,机器就会错误地停止运行。另一种情况是,如果一个程序进入死循环,系统就会踏步不前,只有操作员提出终止该作业的请求,删除它并重新启动后,系统才能恢复正常运行。更严重的是无法防止用户程序破坏监督程序和系统程序。

20世纪60年代初期,硬件技术的发展出现了通道和中断,这两项重大成果导致操作系统进入执行系统阶段。通道是一种专用的处理部件,它能控制一台或多台外设的工作,负责外部设备与主存之间的信息传输。它受CPU的控制,一旦被启动就能独立于CPU运行,这样CPU和通道可以并行操作,而且CPU和各种外部设备也能并行操作。中断是指当主机接到某种信号(如I/O设备完成信号)时,马上停止原来的工作,转去处理这一事件,当事件处理完毕,主机又回到原来的工作点继续工作。

在通道与中断技术的基础上,I/O工作可以在主机控制之下完成,这与早期联机批处理系统相比较有着本质的区别。因为在通道与中断技术的支持下,不仅实现了联机控制I/O工作,而且还实现了CPU和I/O的并行操作。执行系统可以这样描述:借助通道与中断技术,由主机控制I/O传输,监督程序不仅负责作业的自动调度,还要负责提供I/O控制功能。这个优化后的监督程序常驻主存,称为执行系统。

执行系统(也称批处理系统)节省了卫星机,降低了成本,实现了主机和通道、主机和外设的并行操作,提高了系统的安全性。系统负责用户的I/O传输工作,检查用户I/O命令的合法性,避免了由于不合法的I/O命令造成的对系统的威胁。

执行系统的普及实现了标准文件管理系统和外部设备的自动调节控制功能。在这期间,程序库变得更加复杂和庞大;随机访问设备(如磁盘、磁鼓)已开始代替磁带作为辅助存储器;高级语言也比较成熟和多样化。20世纪50年代末到20世纪60年代初期,出现了许多成功的批处理操作系统,其中IBM7090/7094计算机配置的IBM OS是最有影响的。

1.2.2 操作系统的形成

批处理系统利用中断和通道技术实现了中央处理机和I/O设备的并行操作,解决了高速处理机和低速外部设备的矛盾,提高了计算机的工作效率。但在批处理系统使用过程中发现,这种并行还是有限度的,并不能完全消除中央处理机对外部传输的等待。虽然中断和通道技术为中央处理机和外部设备的并行操作提供了硬件支持,但是,是否能实现CPU的计算与外部传输的并行操作还依赖于程序的运行特征。如果一个程序只需要CPU进行大量的计算时,外部设备就无事可做;而当一个程序需要的是大量的I/O传输时,CPU就不得不处于等待状态。如何解决这一问题?操作系统采用了多道程序设计技术。

1.多道程序设计技术

首先分析一个进行数据传输的应用程序。该程序在运行过程中依次输入n批数据(每批数据是1000个字符)。输入机每输入1000个字符需要用1000ms,CPU处理这1000个字符的数据需用300ms。可见,尽管处理机具有和外部设备并行工作的能力,但是在这种情况下处理机仍有空闲等待现象。图1.5所示为单个应用程序(又称为单道程序)的工作示例。

图1.5 单道程序工作示例

在图1.5中,首先是用户程序在CPU中进行计算,当它需要进行I/O时,向监督程序提出请求。监督程序接到用户程序的I/O请求,进行必要的处理,然后启动I/O操作。这段时间是监督程序在CPU上运行所花费的时间,是系统用于管理的开销。I/O设备被启动后,CPU空闲等待,直到I/O操作完毕,发生结束中断。当监督程序接收到设备发出的中断信号,进行设备中断处理,然后将CPU的控制权交还给用户程序,用户程序又接着在CPU上继续计算。注意,用户程序的计算和监督程序的管理工作都是在CPU上运行。从上述分析可看出,在输入操作结束之前,处理机处于空闲状态,其原因是I/O处理与本道程序相关。

应用程序要解决的问题是多种多样的,一般地,数据处理、情报检索等任务需要的计算量比较少,而I/O量比较大。这样的任务运行时,中央处理机的等待时间会比较长。而对于计算量大的科学和工程计算任务而言,使用外部设备则比较少,因而当CPU运行时,外部设备经常处于空闲状态。这些情况说明了当系统内只有一道程序工作时,计算机系统的各部件不一定能并行操作,它们的效能没有得到充分发挥。为了解决这一问题,提出了在系统内同时存放几道程序,让它们同时运行的思路和方法,这就是多道程序设计技术。

多道程序设计技术是在计算机主存中同时存放几道相互独立的程序,它们在操作系统控制之下,相互穿插地运行。当某道程序因某种原因不能继续运行下去时(如等待外部设备传输),操作系统便将另一道程序投入运行,这样可以使CPU和各外部设备尽可能地并行操作,从而提高计算机的使用效率。图1.6所示为多道程序工作示例。

图1.6 多道程序工作示例

在图1.6中,用户程序A首先在处理机上运行,当它需要输入数据时,操作系统为它启动输入机进行输入工作,并调度用户程序B开始运行。当程序B请求输出时,操作系统又启动相应的外部设备进行工作。当程序A的I/O处理结束时,程序B仍在CPU上运行,则程序A等待,直到程序B计算结束请求输出时,才转入程序A的执行。从图1.6中可以看出,在两道程序执行的情况下,CPU的效率已大大提高。请读者分析一下,此例中CPU有无空闲等待?若有,又是什么原因?

多道程序运行的特征有如下3点。

①多道:计算机主存中同时存放几道相互独立的程序。

②宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们都开始运行,但都未运行完毕。

③微观上串行:从微观上看,主存中的多道程序轮流或分时地占有处理机,交替执行。

如何理解宏观上并行这一特征?在单处理机系统中,CPU严格地按照指令计数器的内容顺序地执行每一个操作,即一个时刻只能有一个程序在处理机上运行。那么,多道程序如何并行执行呢?由于计算机系统有多个物理部件(如CPU、输入机、打印机等),进入主存的多道程序可以在不同的部件上进行操作。例如某时刻程序A正在处理机上运行,程序B在打印输出,程序C正在输入数据,从宏观上看,这几道程序的工作都在向前推进,它们都处于执行状态。微观上串行这一特征表现在同时被接收进入计算机的若干道程序在CPU上是相互穿插地运行,当正在处理机上运行的程序因为要输入或输出等原因而不能继续运行下去时,就把处理机让给另一道程序。所以从微观上看,一个时刻只有一个程序在处理机上运行。

随着系统中多道运行的数量的增大,CPU的空闲等待时间随之减少,几乎始终处于忙碌状态。请读者考虑,多道运行的数量可以无限制地增加吗?它将受什么条件的制约?

2.分时技术

在批处理系统中引入了多道程序设计技术,实现了多道成批处理。在这样的系统中,大量的用户程序以作业为单位成批进入系统,而用户使用计算机的方式是脱机操作方式(请读者注意,这里指的是用户使用计算机的操作方式)。在脱机方式下,程序运行过程中用户不能直接实施控制。用户必须在程序提交给系统前考虑好程序运行中可能出现的问题以及处理的方法。用户使用系统提供的作业控制语言写好操作说明书,连同程序和数据一起提交给系统。以脱机方式使用计算机,用户是非常不方便的。

人们希望能直接控制程序的运行,这种操作方式称为联机操作方式。在此方式下,一方面,操作员可以通过终端向计算机发出各种控制命令;另一方面,系统在运行过程中可输出一些必要的信息,如给出提示符,报告运行情况和操作结果等,以便让用户根据这些信息决定下一步的工作。这样,用户和计算机之间可以“交互会话”,用户十分喜欢这种工作方式。

当计算机技术和软件技术发展到20世纪60年代中期,主机速度的不断提高,使一台计算机同时为多个终端用户服务成为可能。操作系统采用了分时技术,使每个终端用户在自己的终端设备上以联机方式使用计算机,好像自己独占机器一样。

分时技术,就是把处理机时间划分成很短的时间片(如几百毫秒)轮流地分配给各个用户程序使用,如果某个用户程序在分配的时间片用完之前还未完成计算,该程序就暂停执行,等待下一轮继续计算,此时处理机让给另一个用户程序使用。这样,每个用户的各次要求都能得到快速响应,给每个用户的印象是独占一台计算机。采用分时技术的系统称为分时系统,分时系统的响应时间一般为秒级。

在多道程序设计技术和分时技术的支持下,出现了批处理系统和分时系统,在这两类系统中配置的操作系统分别称为批量操作系统和分时操作系统,这两类操作系统的出现标志着操作系统的形成。

与此同时,计算机开始用于生产过程的控制,形成了实时系统。随着计算机性能的不断提高,计算机的应用领域越来越宽广。例如,炼钢、化工生产的过程控制,航天和军事防空系统中的实时控制。更为重要的是计算机广泛用于信息管理,如仓库管理、医疗诊断、气象监控、地质勘探等。

实时处理的关键词是“实时”二字。“实时”是指计算机对于外来信息能够在被控对象允许的截止期限(Deadline)内做出反应。实时系统的响应时间是由被控对象的要求决定的,一般要求秒级、毫秒级、微秒级甚至更快的响应时间。

实时系统中配置的操作系统称为实时操作系统。在20世纪60年代后期,批处理系统、分时系统和实时系统得到广泛应用,在这一阶段形成操作系统的主要类型有:批量操作系统、分时操作系统和实时操作系统。在这些操作系统中采用的很多技术至今仍在使用。

1.2.3 操作系统的进一步发展

从20世纪80年代以来,操作系统得到了进一步发展。促使其进一步发展的原因,一是微电子技术、计算机技术、计算机体系结构的迅速发展;二是用户的需求不断提高。它们使操作系统沿着个人计算机操作系统、网络操作系统、多处理机操作系统、集群操作系统、分布式操作系统等方向发展。

现代操作系统是指当前正广泛使用和流行的操作系统,包括具有图形用户界面、功能强大的个人计算机操作系统;吞吐量大、处理能力强的现代批处理操作系统;交互能力强、响应快的分时操作系统;具有实时响应、可预测分析能力的实时操作系统;具有网络资源共享、远程通信能力的网络操作系统;具有单一系统映像、分布处理能力的分布式操作系统以及分布实时操作系统等。这些操作系统继承了批处理系统和分时系统中已采用的多道程序设计技术、分时技术、保护和安全等技术。随着应用需求的不断提高,人机交互技术、其他面向可视化的技术不断地发展,并得到更为广泛的应用。

在计算机硬件技术不断发展、价格不断下降,网络带宽不断提升这一趋势的推动下,软件技术也得到迅速的发展,出现了客户服务器计算模式。这一计算模式的发展促使操作系统从分时共享和多道操作系统设计技术向支持网络化的方向发展。从实现单台计算机分时共享的分时操作系统(或批处理操作系统)发展为能适应局域网环境的网络操作系统,实现了网络环境下各节点(计算机)之间的资源共享,包括硬件资源和软件资源的共享,还提供网络通信能力、客户和服务器资源管理、进程通信等功能。

计算机网络不是一个一体化的系统,还存在一定的局限性。网络操作系统不支持全局的、动态的资源分配,不支持合作计算,所以它不能满足分布式数据处理和许多分布式应用的需要。而分布式操作系统却能解决网络操作系统不能解决的问题。在硬件体系结构上分布式系统是由多个地理位置分布(或分离)的节点,通过通信网络连接的系统;但在分布式操作系统的支持下,它呈现的是具有单一系统映像,能进行透明的资源访问、支持合作计算的一个逻辑整体,能满足各种分布式应用、并行分布式计算的需要。