概述
第一阶段:状态机操作系统(1940年以前)
这是计算机处在萌芽期时出现的操作系统。这种操作系统运行在英国人巴贝斯 ( Babbes )想像中的自动机中。 所谓状态机操作系统实际上算不上是我们现在通常所定义的操作系统,而是一种简单的状态转换程序:根据特定输入和现在的特定状态进行状态转换而已。这个时候的计算机也不是现代意义上的计算机,而是所谓的自动机,其功能非常简单,可以用“原始”来形容。能做的计算也只限于加减法。这个时代的操作系统没有什么功能,不支持交互命令输入,也不支持自动程序设计。甚至这个时候还没有存储程序的概念。
驱动这一阶段操作系统的动力是个人英雄主义。因为此时尚无任何计算机工业、计算机研究及计算机用户。计算机及其操作系统的发展完全是某些人的个人努力。这个阶段因为计算机刚刚出现,没有多少人能够接触到计算机,自然不存在什么安全问题。
这个阶段没有操作系统。如果非要说有的话,人就是这个时代的操作系统:因为自动机的一切动作均是人在操控的。
第二阶段:单一操作员、单一控制端操作系统((20世纪40年代)
这种单一操作员单一控制终端( SOSC,single operator ,single console)的操作系统是在刚出现计算机时人们能想到的最直观的控制计算机的方式。这个时候的代表机型为美国宾夕法尼亚大学与其他机构合作制作的ENIAC计算机。这是第一台电子计算机,但不是第一台计算机。在这之前有个英国人造了一部机械计算机,通过手柄摇动能够进行计算。在ENIAC刚造出来的时候,谁都不知道计算机是怎么回事,所以没有操作系统的整体概念,唯一能想到的就是提供一些标准命令供用户使用,这些标准命令集合就构成我们的原始操作系统SOSC。
SOSC操作系统的设计目的就是满足基本的功能,并提供人机交互。在这种操作系统下,任何时候只能做一件事,即不支持并发和多道程序运行。操作系统本身只是一组标准库函数而已。操作系统并不自我运行,而是等待操作员输人命令再运行。 用户想使用什么服务,就直接在命令行键入代表该服务的对应操作系统的库函数名(文件名〉即可。这种操作系统的资源利用率很低:你输入一个命令就执行一个库函数,拨一下动一下。当操作员在思考时或进行输人输出时,计算机则静静的等待。当然了,从人的角度来看,效率并不低,你键入什么,计算机就立即执行什么。但从机器的角度考虑,因为时刻都等着人相对较慢的动作,效率就太低了。
由于这个时代的计算机很稀少,整个世界也只有几台,而人却不是,提高计算机的利用率就变得十分重要。
第三阶段:批处理操作系统(20世纪50年代)
为了提高单一操作员单一控制终端的操作系统SOSC的效率、人们提出了批处理操作系统。在仔细考察了SOSC后,人们发现,SOSC效率之所以低下,是因为计算机总是在等待人的下一步动作,而人的动作总是很慢。 因此,人们觉得,如果将人的因素拿走,让所有的人先想好自己要运行的命令,列成一个清单,打印在纸带上,然后交给一个工作人员来一批一批地处理,效率不就提高了吗?这样就形成了我们所说的批处理操作系统。
批处理操作系统针对的是第二代通用计算机,如IBM的1401和7094等,通过去除人机交互达到CPU和输入输出利用率的改善。批处理的过程是:用户将自己的程序编在卡片或纸带上,交给计算机管理员。管理员在收到一定数量的用户程序后,将卡片及纸带上的程序和数据通过IBM1401机器读入,并写到磁带上。这样每盘磁带通常会含有多个用户的程序。然后,计算机操作员将这盘磁带加载到IBM7094 上,一个一个地运行用户的程序,运行的结果写在另一个磁盘上。所有用户程序运行结束后,将存有结果的磁盘取下来,连到 IBM1401机器上进行结果打印,然后就可以将打印结果交给各个用户了。
很显然,在批处理下,操作系统的功能和复杂性均得到提升。在 SOSC环境下,每个用户自己控制程序的开始和结束。而在批处理下,很多用户的程序一个接一个地存放在磁带上,用户本人并不在场,无法自己控制程序的开始和结束。而这个任务就交给了批处理操作系统。负责这个任务的操作系统功能就称为批处理监视器( batch monitor)。整个批处理操作系统就是由批处理监视器和原来的操作系统库函数组成。
批处理监视器的功能就是按部就班地执行用户的程序。这个时代的操作系统仍然只能在同一时间执行一个程序、但此时文件的概念已经出现。之前在SOSC诞生
时期没有文件的概念。为什么到批处理时期出现了文件的概念呢?因为磁带上的多个用户程序必须以某种方式进行隔离,这需要一个抽象的东西来区分一下。这个抽象的东西不是别的,就是文件。除了文件管理外,此时的操作系统还能够管理读卡机,磁带,打印机等。此种操作系统的任务就是加载一个程序、运行、打印结果,然后执行下一个程序。 批处理操作系统的两个部分的关系也很清楚:一部分是控制程序执行,一部分是支持程序执行。
第四代:多道批处理操作系统(20世纪60年代)
虽然批处理操作系统通过无需人机交互过程而在一定程度上提高了计算机的效率,但还是不那么令人满意。因为,CPU和输入输出设备的运行是串行的,即在程序进行输入输出时,CPU 只能等待。 CPU需要不断地探询I/О是否完成,因而不能执行别的程序。磁带上的程序需要先读进来,程序才能执行,执行完了又需要写到另一个磁带上。读写磁带的时候CPU是不工作的,这就是很大的浪费。
这个时候,由于I/O设备的运行速度相对于CPU来说实在太慢,这种让高速设备等待低速设备的状况令人颇感痛心。人们又想,能否将CPU和I/О进行并发呢? 即在一个程序输入输出时,让另一个程序继续执行。换句话说,能否将CPU运行和输入输出设备的运行重叠起来而改善整个系统的效率呢?答案是肯定的,不过需要付出代价。因为CPU和I/О重叠需要我们将多个程序同时加载到计算机内存里,从而出现了所谓的多道批处理操作系统。
在多道批处理操作系统时代,同一时间可以运行多个程序 (宏观上),但控制计算机的人还是只有一个,即用户将自己的程序交给计算机管理员,由管理员负责将用户的程序加载到计算机里并执行。由于多个程序同时执行,操作系统需要能够在多个程序(工作)之间进行切换,并且能够管理多个输入输出设备,同时还需要能够保护一个进程不受另一个进程干扰。
显而易见,操作系统的功能和复杂性都比简单批处理时要复杂得多:既要管理工作,又要管理内存,还要管理CPU调度。
第五代之一:分时操作系统(20世纪70年代)
多道批处理操作系统的出现使计算机的效率(主要是吞吐率)大大提高。不过这时人们又提出了另外一个问题:将程序制作在卡片上交给计算机管理员统一运行,将使得用户无法即时获知程序运行的结果。而这是一个大问题。想想如果你编了一个程序,却需要让别人去运行,并等上若干天才能知道结果,这个滋味显然不好受。万一计算机管理员疏忽了,忘记运行你的程序,或者操作错误,导致程序丢失,情况就更加糟糕。
基于上述考虑,人们就想,能否让人回到计算机前面来,每个人自己管自己的程序,但是,大家的程序可以同时运转。人的因素又引了回来。这看上去与原始的SOSC似乎一样,但有个关键的不同:多个人同时连在计算机上,每个人看作是另外的一个I/О终端而已。每个用户拥有一个终端显示器,这些终端显示器经过RS232串行线缆与计算机连接。终端显示器只能接收和有限的发送文本命令和信息。计算机在所有连接的终端用户之间进行分时,即分给每个人有限的时间,只要时间到了,就换一个进程。这种时分切换下的操作系统就是分时操作系统。
在分时操作系统下,任意时间可以运行多个程序,且用户直接与计算机交互,当场调试程序。这就和单―操作员单一终端不一样了。就从人本转成物本。单一操作员单一终端的情况下,一切等着人。以前执行一条命令就等人,分时系统是人等机器。这个模型带来一个直接的结果,就是机器再不用等你,等你想问题时机器就切换到别的程序,等你想完了机器再切换回来,接受你的输人。就这样,计算机就在很多人之间来回转,你敲个命令就响应,然后切换走。如果时间掌握的好,用户输入完一个命令计算机正好回来,用户就没有等待的时间开销。当然,如果一个用户打字足够快,可能会觉得计算机慢;如果打字足够慢,就有可能觉得计算机很快。不同的人感觉有可能完全不同。
显然,和前面几代的操作系统相比,分时操作系统要复杂得多。相比于多道批处理系统,最主要的变化是资源的公平管理。在多道批处理下,公平不公平没有人知道。大家交了工作后只管回家等结果。至于自己的程序排在谁前面谁后面,或者占用了多少CPU时问是无关紧要的。现在,大家都坐在计算机显示终端前面,任何的不公平将立即感觉到。因此,公平的管理用户的CPU时间就变得非常重要。除此之外,池化 ( pooling)、互斥、进程通信等机制相继出现,使得分时操作系统的复杂性大为增加。
第五代之二:实时操作系统
随着人类技术的进步,计算机得到了广泛的应用。其中的一种成用称为进程控制系统,即使用计算机对某些工业进程进行监视,并在需要的时候采取行动。所有这些系统都具备一个特点:计算机对这些应用必须在规定时间内作出响应。不然就有可能发生事故或灾难、例如。在工业装配线上,当一个部件从流水线上一个工作站流到下一个工作站时,这个工作站上的操作必须在规定时间内完成,否则就有可能造成流水线瘫痪,影响企业的生产和利润、又例如,在导弹防卫系统中,对来袭导弹的轨迹计算,必须在规定时间内完成,否则就可能被来袭导弹击中而无法作出反应。其他对计算机响应时间有要求的系统包括核反应堆状态监视系统.化学反应堆监视系统、航空飞行控制系统等。
这种对计算机响应时间有要求的系统通常称为临界系统或应用。为了满足这些应用对响应时间的要求,人们就开发出了实时操作系统。实时操作系统是指所有任务都在规定时间内完成的操作系统,即必须满足时序可预测性(timing predictability)。这里需要提请读者注意的是,实时系统并不是反应很快的系统,而是反应具有时序可预测性的系统 (及时反应)。当然了,在实际中,实时系统通常是反应很快的系统,但这是实时系统的一个结果,而不是其定义。
显然,实时操作系统的最重要部分就是进程或工作调度。只有精确、合理和及时的进程调度才能保证响应时间。当然,对资源的管理也非常重要。没有精密复杂的资源管理,确保进程按时完成就成为一句空话。另外,基于其使用环境,实时操作系统对可靠性和可用性要求也非常高。如果在这些方面出了问题,时序可预测性将无法达到。
实时系统通常又分为软实时系统和硬实时系统。软实时系统在规定时间得不到响应所产生的后果是可以承受的,如流水装配线。即使装配线瘫痪,不就是损失点钱吗?而硬实时系统在得不到实时响应可能产生不能承受的灾难,如导弹防卫系统。如果反应迟钝,结果就可能是人命损失。
第六代:现代操作系统(1980年以后)
在80年代后期。计算机工业获得了井喷式的发展。各种新计算机和新操作系统不断出现和发展,计算机和操作系统领域均进入到了一个百花齐放、百家争鸣的时代。尤其重要的是.工作站和个人机的出现,使计算机大为普及。独享计算机也可以负担得起。这个时候的操作系统代表有:DOS、Windows、UNIX、Linux和各种主机操作系统、如VM,MVS,VMS等。DOS,Windows、UNIX、Linux通常称为开放式系统操作系统,分别运行在PC,VAX和工作站上。操作系统也重新回到了函数库的状态。
随着硬件越来越便宜,个人机出现在人们的视野中。人们可以拥有自己的电脑,无需与别的人分享。在刚刚出现个人机的时候,拥有个人机的人感觉很好。而那些需要与别人其享小型机的人则感觉不好。由于个人机由用户一个人独享,分时操作系统的许多功能就无需存在。因此,个人机操作系统又变回到了标准函数库系统。这个时候最有名的当然是DOS,Windows3、苹果机操作系统(MacOS)等。
但在独享了一阵个人机后,人们发现,没有分时功能的操作系统使一些事情做不了。因为,虽然只有一个人在用机器,但这个人可能想同时做好几件事,例如,同时运行好几个程序,没有分时功能这是不可能的。于是,人们觉得需要对个人机操作系统进行改善,将各种分时的功能又加了进去。
这时候就需要对程序进行保护,因为现在运行的多个程序,虽然都是你的东西,但是也不能混淆。于是,Windows NT出现了、Xenix 出现了,Ultrix出现了。
这个时候的另外一个特征是网络的出现。网络触发了网络操作系统和分布式操作系统的出现。对于网络操作系统来说,其任务是将多个计算机虚拟成一个计算机。传统的网络操作系统是在现有操作系统的基础上增加网络功能,而分布式操作系统则是从一开始就把对多计算机的支持考虑进来。
后来分布式操作系统出现了,因为网络出现了。我们现在虽然有很多电脑,但是很多处于闲置,这就是一个极大的浪费,我们希望空闲的都能利用起来。分布式计算出现的原因是希望把任务分开,得到的结果是计算资源的集合,这让很多计算机看上去像一个。有两种分布式系统,一个是网络操作系统,就是在传统操作系统上加一个补丁,一个是分布式操作系统。网络操作系统就是打补丁,分布式操作系统是重新设计的一套,所以比网络操作系统效率高。
最后
以上就是阳光哈密瓜为你收集整理的操作系统历史第一阶段:状态机操作系统(1940年以前)第二阶段:单一操作员、单一控制端操作系统((20世纪40年代)第三阶段:批处理操作系统(20世纪50年代)第四代:多道批处理操作系统(20世纪60年代)第五代之一:分时操作系统(20世纪70年代)第五代之二:实时操作系统第六代:现代操作系统(1980年以后)的全部内容,希望文章能够帮你解决操作系统历史第一阶段:状态机操作系统(1940年以前)第二阶段:单一操作员、单一控制端操作系统((20世纪40年代)第三阶段:批处理操作系统(20世纪50年代)第四代:多道批处理操作系统(20世纪60年代)第五代之一:分时操作系统(20世纪70年代)第五代之二:实时操作系统第六代:现代操作系统(1980年以后)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复