|
虚拟化起源:超级计算机和大型机上世纪50年代的超级计算机的体积有好几个大型档案柜那么大。它们使用磁鼓存储器作为快速存储,其次使用像IBM RAMAC这种的硬盘,如果能买到的话。 上世纪50年代的超级计算机的体积有好几个大型档案柜那么大。它们使用磁鼓存储器作为快速存储,其次使用像IBM RAMAC这种的硬盘,如果能买到的话。当时的工作存储器是磁芯存储器,它是由悬浮在金属导线所组成的晶格上的小金属环组成的。装在机柜中的电路板体积巨大,但所带有的部件相对较少。在1958年,Whilst Jack S Kirby发明了集成电路,这一突破在广泛的计算机制造上的应用仍需时日。 场景设定 - 20世纪50-60年代的计算机 这一时期也是只能操作几个开关,没有直接的计算机输入的时期。计算机通过分批读取一个个打孔卡来运行程序。打孔卡可以被直接加载或把内容上传到大型磁带上。之后主机就会准备加载作业,从磁带(或打孔卡)读取数据,执行程序并把输出记录到另一个磁带上。该输出会被卸载,一般要么送去打印,要么送去生成打孔卡。 在运行的程序和用户之间没有交互能力,因此你在当时所见的情况就是启动一个程序,然后开始等,几小时或几天之后,看它能否产生预想的结果。 联合国教科文组织 - 多重处理 虚拟化的概念被认为是由牛津大学第一计算机学教授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会发送特殊指令或硬件代码指令,使它可以管理硬件资源,如专用于单个程序执行的处理器时间分配。 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增加新的指令,接口,并提供了一个文件系统,用户只能看到文件名,其余细节都被隐藏了(比如哪些区块用来存储数据)。 责编:杨雪姣 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
最新专题 推荐圈子 |
|