虚拟化起源:超级计算机和大型机

服务器 服务器产品
上世纪50年代的超级计算机的体积有好几个大型档案柜那么大。它们使用磁鼓存储器作为快速存储,其次使用像IBM RAMAC这种的硬盘,如果能买到的话。当时的工作存储器是磁芯存储器,它是由悬浮在金属导线所组成的晶格上的小金属环组成的。装在机柜中的电路板体积巨大,但所带有的部件相对较少。

场景设定 - 20世纪50-60年代的计算机

上世纪50年代的超级计算机的体积有好几个大型档案柜那么大。它们使用磁鼓存储器作为快速存储,其次使用像IBM RAMAC这种的硬盘,如果能买到的话。当时的工作存储器是磁芯存储器,它是由悬浮在金属导线所组成的晶格上的小金属环组成的。装在机柜中的电路板体积巨大,但所带有的部件相对较少。在1958年,Whilst Jack S Kirby发明了集成电路,这一突破在广泛的计算机制造上的应用仍需时日。

这一时期也是只能操作几个开关,没有直接的计算机输入的时期。计算机通过分批读取一个个打孔卡来运行程序。打孔卡可以被直接加载或把内容上传到大型磁带上。之后主机就会准备加载作业,从磁带(或打孔卡)读取数据,执行程序并把输出记录到另一个磁带上。该输出会被卸载,一般要么送去打印,要么送去生成打孔卡。

在运行的程序和用户之间没有交互能力,因此你在当时所见的情况就是启动一个程序,然后开始等,几小时或几天之后,看它能否产生预想的结果。

联合国教科文组织 - 多重处理

虚拟化的概念被认为是由牛津大学第一计算机学教授Christopher Strachey的论文《大型高速计算机中的时间分配》中所提到的观点自然演化而来的。该论文在1959年的联合国教科文组织信息处理大会上宣读过。

Strachey描述了他所提出的“多道程序”,程序可以不需要等待外设而运行,同时还允许用户调试代码。他的概念仍然以当前的核心批处理为中心,但又描述了如内存保护和共享中断这种架构要求。这种“多道程序”的概念把计算研究推动到一个新方向。

过后,Strachey写道...

‘当我在1959年写这篇论文时,和大家一样,我也不知道这会让编写软件来控制分时或多道程序产生什么样的困难。如果我知道的话,我真不该对它们这么热衷。’

从MUSE到Atlas

1955年,英国的数字计算机不超过16台,计算机的热潮也从1948年到1951年的黄金年代褪去。计算机使用真空管,吞吐量为每秒大约1000条指令。而且主存储器一般都是4k或更低。

而在1956年,随着英国物理学家们对更多计算能力的需求,曼彻斯特大学的Tom Kilburn和他的团队开始了他们自己的超级计算机计划。IBM当时在执行IBM Stretch (7030)项目,这也被视为同类竞争项目。曼彻斯特小组的目标是制造一个多用户机,可以每秒执行大约一百万条指令,主存储器最小要到500k。

这个项目叫做MUSE,Musec(微秒)引擎的简称,此项目一直都在进行,无论Tom Kilburns团队的资金多么有限。在1959年,一家名为Ferranti Ltd (pdf)的英国公司加入了该项目,与研究团队开展合作。Ferranti是一家英国公司,它为国防部生产如陀螺仪瞄准器和最早的IFF(敌我识别)雷达系统。它们之前曾与曼彻斯特大学合作,制造它们的Ferranti Mark I,这是世界首个商业化生产的计算机,在有了“高科技”设备这个副业后,该公司建立了一个计算机部门。Ferranti为从国家科学研究开发公司贷款30万英镑作担保,该合作进行后,项目便更名为Atlas。

在1962年,第一台Atlas 1交付曼彻斯特大学使用。它使用了58种不同类型的20cm × 15cm的电路板(不包括外设)5172个 。Atlas 1的最终成本在2百万至3百万英镑之间(相当于2012年的5千万英镑左右)。相比,IBM Stretch项目最终成本1350万美元,后来由于表现不佳跌至778万美元。

Atlas是第一台使用虚拟内存(称为一级存储)这一概念的机器,它还率先包含了一个称为“Supervisor”的基本资源管理组件。Supervisor会发送特殊指令或硬件代码指令,使它可以管理硬件资源,如专用于单个程序执行的处理器时间分配。

#p#

M44/44X

IBM也有来自IBM Thomas J. Watson研究中心(纽约)的一个称为M44/44X的研究项目。M44/44X以IBM 7044(名字中的M44的部分)为基础,能够模拟好几个7044系统(44X)。M44/44X实现了许多突破性的虚拟化概念,包括部分硬件共享,内存分页和时间分配。M44/44X项目被普遍认可为第一个使用了“虚拟机”这个术语。

CTSS

1961年,麻省理工学院的Fernando Corbato教授和他的研究小组开始了CTSS(兼容分时系统)项目的开发。该项目与IBM进行合作,IBM提供硬件和工程师,以支持该小组的研究。

在1961年十一月,一个早期版本在IBM 709上实现,1962年初,IBM用7090取代了MIT 709,然后又升级为7094。

CTSS Supervisor驻留在存储体A中,而把用户程序限制在存储体B中。控制台可以在调度处理安排的长度可变的时间内对机器资源进行访问,使用存储体B的程序会根据需要在磁鼓或磁盘存储器之间交换。

每个虚拟机都是7094,其中一个作为后台机,可以直接访问磁带驱动器。其他虚拟机可以运行7094机器语言或编译后的代码和一种为管理服务程序使用的特别的指令集。这些管理服务程序可以让前台的虚拟机在管理程序的资源共享控制下对终端I/O和文件系统I/O进行访问。函数库还能让其他语言也能用在7094上,来利用这些管理服务程序。CTSS开创了用户硬件隔离和独立的用户文件系统。

CTSS在1963年开始在麻省理工学院普遍使用。

麻省理工学院的研究小组后来失望地得知,最新发布的IBM System/360将不会支持内存虚拟化——这个时间分配成果的基石。IBM的这个决定,无视麻省理工学院研究小组和IBM工程师的创举,这么做是因为当时IBM认为计算的未来在于更快的批处理,而不是时间分配。

MAC项目

在1962年底,麻省理工学院决定开始一个新的项目。这个称为MAC(多路存取计算机)的项目,其目的就是在通过开发CTSS所获得的经验的基础上,建立一个更先进的分时系统。麻省理工学院购买了第二台运行CTSS的改良型IBM 7094,并着手开发起了Multics(多路信息与计算服务)。

运行Multics系统的新处理器的招标开始了,与此同时在IBM剑桥科学中心的人制作了一台符合要求的改良型System/360,最终被麻省理工学院拒绝了。官方的理由是,麻省理工学院希望利用主流的处理器让其他感兴趣的团体易于使用。然而,有人怀疑,麻省理工学院这么决定部分原因是由于IBM没有在System/360系列中包含虚拟内存,还有对多任务支持的明显不足。

在1964年,贝尔实验室加入了MAC项目,GE-645被选为Multics系统的处理器。通用随后也加入的该项目,负责提供工程和编程资源。在1965年,通用给麻省理工学院交付了一部GE-635,它运行GE-645模拟器进行开发,直到1967年,通用才交付了GE-645。1968年,Multics可以进行多进程执行,1969年七月交付使用。Multics一直到2000年还在各种地方使用。麻省理工学院在2007年公开了项目的源代码。

CP/CMS

同样在1964年,IBM委任Norman Rusmussen组建剑桥科学中心,负责支持遗留的麻省理工学院合同关系,并努力建立IBM在学术界的声誉。剑桥科学中心和MAC项目团队都在一个楼里,Rusmussen可以从原来的麻省理工学院/IBM联络办公室集中各种资源,来支持CTSS项目。

剑桥科学中心最初的任务就是平息System/360没有虚拟内存的气愤,这被麻省理工学院视为IBM对时间分配不感兴趣,时间分配可是麻省理工学院力挺的概念。为此,Rasmussen开始叫人一起努力寻找满足MAC项目处理器要求的解决方案。令他们高兴的是,他们发现地址转换硬件设计已经通过了初步设计阶段。Gerry Blaauw起初已经把它放进去了,但无法保证将其放到System/360的最终设计里。包含地址转换的最终设计交给了麻省理工学院,但是被拒绝了。同样的设计也送到了贝尔实验室,也被拒绝了。

在这一令人失望的结果后,IBM把在分时系统上最有经验的一群人叫到一起,开始研究如何才能赢回分时系统的合同。除了这些建议以外,新的System/360模型的基线设计也拟定了,它基本上就是System/360 Model 60,但最后会加入动态地址转换器。该设计被命名为System/360 Model 67。Rasmussen后来用Model 67成功地与麻省理工学院林肯实验室达成提案。

TSS(分时系统)项目也是在那次会议上诞生的,项目的开发交给了由Andy Kinslow管理的一支团队。TSS是一个全方位的解决方案,但实践证明它过早地推向市场,67的早期客户发现了严重的稳定性和性能问题。

与此同时,Rasmussen又开展了一个项目,就是为Model 67建立一个独立的分时系统。Bob Creasy离开了MAC项目,作为项目领头人加入了剑桥科学中心,CP-40(控制程序-40)项目由此产生。由于该项目没有战略方向,在必要时需要制定目标清单并加以强调,这虽然有效,但它不是该项目的真正原因。

设计和建造用于运行在System/360 Model 40上的CP-40,设想不仅提供一个新型的操作系统,还提供虚拟内存和全硬件虚拟化。为了妥善保护用户之间不受干扰,虚拟机被实现了。虚拟机的数量固定在14个,每个都有256k的虚拟内存。磁盘存储被分成了许多小磁盘,支持4k分页的虚拟内存系统也被设计出来。

随着开发的进行,需要另一个组件。名为剑桥监测系统(CMS),它是一个单用户操作系统,从而大大降低了复杂性,深受CTSS的影响。

CMS允许人们通过特权指令使用CP增加新的指令,接口,并提供了一个文件系统,用户只能看到文件名,其余细节都被隐藏了(比如哪些区块用来存储数据)。

CP/CMS系统的实现始于1965年,但考虑到该项目非常有限的可用资源,它还是很有问题的。Rasmussen在剑桥科学中心,麻省理工学院和各个IBM部门之间促成了各种机器时间分配交易,就为了得到CTSS上的时间。该时间用于运行S/360汇编程序和模拟器,在没有使用System/360-40情况下,需要它才能进行开发。1967年一月,CP-40和CMS投入生产。

#p#

CP/CMS –从40到67

1966年,剑桥科学中心的另一个小组负责改进CP/CMS系统,使其可以运行于System/360 Model 67上。在没有接触到Model 67情况下,该小组决定修改CP-40/CMS来模拟Model 67。

虽然CMS所需的改变很少,但对其开发和应用会受到快速变化的CMS代码库的影响。

控制程序是一个更大的挑战,因为Model 67上硬件地址转化层与修改的Model 40有显著的区别。还有就是要让控制程序更通用,虚拟机的固定控制块也改成了可变的,允许改变虚拟机的数量,还加入了自由存储的概念,控制块可以被动态添加。

1967年,在Model 40上开发完代码后,剑桥科学中心的这个小组在麻省理工学院林肯实验室的一台真正的Model 67上进行了测试。林肯实验室有一台早期的带有TSS的Model 67,但他们发现TSS很不稳定。TSS需要加载10分钟才能达到可以让用户访问的程度。当剑桥科学中心小组在不到1分钟的时间里就加载了CP-67,并可以进行访问,林肯数据中心经理,Jack Arnow跟IBM说,他要了。

林肯实验室在1967年四月将CP-67/CMS投入日常生产,到1968年初,美国联合碳化物公司,华盛顿州立大学和IBM自己的约克城研究设施也已经开始使用。每个组织都对CP/CMS进行了改进,重写,它还在通过大约6000个打孔卡在站点之间分布。

一些新的功能也加入其中,包括远程控制台和RSCS(Resource Spooling and Communications System)的前身,它可以让远程系统之间进行通讯。RSCS的建立始于1969年,1971年被IBM使用。在1975年部分公开发布后,它不断赢得好评并更名为VNET。在1976年,VNET连接在美国的50个系统,到1979年,已经暴增到10个国家的239个系统。而它的名气也在不断增加,到1983年,所连接的节点超过1000个。相比之下,ARPANET(互联网的前身)在1981年才连接了213台计算机。

在1967年到1968年年初,IBM系统开发部门(TSS/360和OS/360的幕后团队)曾试图让IBM终结CP-67项目。在麻省理工学院林肯实验室,以及其他一些知名组织的支持下,IBM得以让该项目继续。

IBM于1968年二月停止了对TSS的支持和开发,但由于客户的抗议,这一决定随后于1969年四月被废止了。IBM在1971年五月最终给TSS画上了句号。

CP-67以开源的形式由林肯实验室于1968年五月发布。它在同年六月被定为III类项目(III类项目是由客户出力支持,不受IBM官方测试,支持或维护)。正是当时的一些在剑桥科学中心,林肯实验室和美国联合碳化物公司的员工离开他们各自的组织,组建了国家通信子系统公司和互动数据公司(IDC)。国家通信子系统公司继续出售CP/CMS上的时间,并制作他们自己的版本,叫做VP/CSS。

在其最后阶段,Cp-67/CMS加入了许多新功能,包括防止“页面颠簸”的方法,对PL/I的支持,一个改进的调度程序和快速路径I/O。

VM/370

1970年六月,IBM宣布了其System/370系列的未来计划,它仍然没有提供内存虚拟化。然而在1971年,IBM宣布要在该系列加入(内存)重定位硬件。

由于早期的反垄断诉讼,IBM已经分拆了其硬件,软件和服务产品,这导致了开发CP/CMS的团队撤出了剑桥科学中心工作组。剑桥科学中心继续从事为S/370引导CP-67的工作,而CP开发团队的工作则是为System/370重新实现控制程序。

作为开发工作的一部分,出现了CP-67的其中一个版本,它可以在System/360 Model 67硬件上运行System/370虚拟机。这对于MVS(多重虚拟存储)的开发很有帮助,因为MVS团队当时没有接触到System/370的机会。一旦MVS团队依赖于CP/CMS,IBM要终止该项目就更难了。

1971年秋天,由于IBM没有公开宣布其为System/370加入重定位的打算,为剑桥科学中心交付System/370的行动是秘密进行的。如果人们看到一台新的System/370进入了剑桥科学中心,传言很有可能导致IBM的宣布所产生的影响比他们想的少得多。CP更名为VM/360,也是在这个时候,CMS更名为会话监控系统。

VM/370的第一个版本在1972年十一月送到客户手上。当时,IBM预测,在产品的整个生命周期内,只有一个System/370 Model 168(该系列顶级产品)会运行VM/370。正如后来所证明的,第一台交到客户手上的Model 168只能运行CP/CMS,十年之后,从IBM波基普西生产设施运出的大型处理器中的10%注定要运行VM/370。

虽然该技术在过去被用于开发工作,但VM/370却是IBM正式加入在一个虚拟机中运行另一个虚拟机的功能的第一个版本(虚拟机嵌套)。VM/370达到了IBM II类设计,因而获得IBM的支持。

直到1977年,IBM的管理层才完全接受虚拟机,之后的情况越来越好,到1978年,已经有1000个虚拟机设备了。

IBM在随后的虚拟机服务包上还有一些起伏,但它保持了一个良好的用户基础,并在上世纪80年代稳定增长。IBM的重大打击是在1983年,在OCO(只有目标代码)的政策下,他们宣布不再放出任何服务包。直到那时,通过VM/370的CP/CMS开发由一个专门的用户社区支持。因为有源代码,所以这个社区可以相互提供代码修复和功能更新,不用等IBM来安排,开发,测试和发布。在各种用户的炮轰之下,IBM仍然无动于衷。

在此之后,IBM虚拟化项目又通过各种实现日趋成熟,一直到现在的z/VM产品。

其他实现

上世纪60年代末期,劳伦斯利弗莫尔国家实验室开始研究其利弗莫尔分时系统。该操作系统被用于控制数据公司CDC 7600超级计算机上,这台超级计算机随后摘取了世界最快计算机的桂冠。CDC 7600是由Seymore Cray设计的。

在1972年,克雷建立了自己的公司——克雷研究公司,该公司制造了Cray 1和X-MP超级计算机,运行克雷分时系统。克雷分时系统由洛斯阿拉莫斯科学实验室与劳伦斯利弗莫尔国家实验室合作,利用后者在开发利弗莫尔分时系统上的经验共同开发。不幸的是,克雷分时系统运用了一种严格限制的模型,它不支持TCP/IP和其他新兴技术,所以无法跟上克雷硬件一代代的更新。劳伦斯利弗莫尔国家实验室之后继续尝试使用“新利弗莫尔分时系统”来纠正这些限制,但仅在上世纪80年代末,90年代初的克雷机器上见过该系统的使用。

数字设备公司(DEC)在1975年启动了一个项目,目的是为他们极受欢迎的PDP-11计算机开发一种虚拟地址扩展。项目代号为“Star”。除了Star项目,还有Starlet项目,其目的也是为他们之前的RSX-11M系统编写新的操作系统。该项目由Gordon Bell运作,还包括后来领导开发微软Windows NT的Dave Cutler。该项目的成果是VAX 11/780计算机和VAX-11/VMS操作系统(后来改名为VAX/VMS)。VMS在1991年被更名为OpenVMS,并被移植到Alpha和英特尔安腾系列处理器上。DEC于1998年被康柏公司收购,而后者在2002年与惠普公司合并。

责任编辑:路途 来源: 服务器在线
相关推荐

2009-01-07 18:11:33

服务器虚拟化数据中心

2011-03-14 16:45:24

大型机实施虚拟化

2012-09-10 09:37:41

2011-12-28 13:30:36

云计算Amazon超级计算机

2011-04-11 10:37:38

2011-04-11 09:36:40

2012-09-20 10:08:57

IBM大型机云计算zEnterprise

2012-09-21 09:43:25

IBM大型机云计算

2012-11-16 10:00:23

云计算大型机CA

2010-02-24 13:32:36

大型机

2021-03-14 18:26:43

云端云计算大型机应用程序

2014-04-14 15:11:09

SUSE大型机Linux

2016-10-24 17:25:44

2020-05-19 10:49:10

网络安全恶意软件技术

2018-04-11 18:34:28

主机,IBM,z14,

2016-07-25 13:26:40

大型机大机IBM

2015-08-24 11:33:43

Ubuntu LinuIBM大型机

2012-04-19 09:46:48

敏捷开发大型机

2012-04-26 10:45:24

敏捷开发

2010-08-20 10:10:26

大型计算机虚拟化
点赞
收藏

51CTO技术栈公众号