【创世纪厅】
1962年,Atlas Supervisor正式问世。由曼彻斯特大学 / Ferranti主导开发,面向MAINFRAME平台用户。
首个实现虚拟内存和多道程序的操作系统先驱
技术特色:操作系统、虚拟内存、先驱。
影响力评估:技术维度 9/10,商业维度 5/10,文化维度 4/10,用户维度 3/10。
作为创世纪厅的经典代表,Atlas Supervisor在软件发展史上留下了深刻的印记。
首个实现虚拟内存和多道程序的操作系统先驱
【创世纪厅】
1962年,Atlas Supervisor正式问世。由曼彻斯特大学 / Ferranti主导开发,面向MAINFRAME平台用户。
首个实现虚拟内存和多道程序的操作系统先驱
技术特色:操作系统、虚拟内存、先驱。
影响力评估:技术维度 9/10,商业维度 5/10,文化维度 4/10,用户维度 3/10。
作为创世纪厅的经典代表,Atlas Supervisor在软件发展史上留下了深刻的印记。
1962年,当大多数计算机还处于纸带打孔和灯泡闪烁的年代,一台名为Atlas的巨型机器在英国曼彻斯顿大学的实验室里悄然启动。它的操作系统——Atlas Supervisor,以一种近乎叛逆的方式,改写了人与机器对话的基本规则。在它之前,程序员必须精确计算每一条指令的物理内存地址,像在拥挤的仓库里小心翼翼堆放货物,稍有不慎就会撞墙。在它之后,计算机开始学会自己管理资源,主动调度任务,甚至让程序员产生一种错觉:内存是无限的。
要理解Atlas Supervisor为何如此重要,必须先回到那个时代的技术荒漠。二十世纪五十年代末至六十年代初,计算机的主要形态是大型主机,它们通常占据整个房间,耗电惊人,运算能力却远不如今天的一部智能手机。当时的主流操作系统,如IBM的Fortran Monitor System和General Motors的GM-NAA I/O,本质上是一个批处理监控程序,一次只能运行一个作业,程序员提交一叠穿孔卡片,等待数小时甚至数天后取回打印结果。如果程序出错,只能从头再来。内存是稀缺资源,程序员必须手工管理内存分区,手动处理磁带和磁鼓的数据交换,任何疏忽都可能导致整个系统崩溃。
正是在这种背景下,曼彻斯特大学的汤姆·基尔本教授(Tom Kilburn)和他的团队开始设计一种全新的计算机。基尔本不是那种坐在办公室画图纸的理论家,他是一位动手能力极强的工程师,此前已经参与设计了曼彻斯特马克一号(Manchester Mark 1)和晶体管计算机Muse。他的目标非常明确:制造一台比当时任何机器都更快、更灵活的科学计算设备。1956年,曼彻斯特大学与英国电气公司Ferranti达成合作,共同开发这台新机器。Ferranti是一家老牌军工企业,拥有丰富的精密制造经验,但计算机业务尚属新兴领域。双方的合作充满英国式的务实与谨慎:大学负责架构设计,Ferranti负责工程实现与商业推广。
这台机器被命名为Atlas,据说是取自希腊神话中擎天的泰坦神,暗示它将支撑起庞大的计算任务。但真正让它载入史册的,不是硬件的蛮力,而是软件——准确说,是基尔本团队为它编写的操作系统,他们称之为“Supervisor”(监督程序)。这个名字朴素得近乎谦卑,却道出了它的核心角色:不是用户直接操作的界面,而是隐藏在幕后,监督、调度、保护整个计算机资源的管家。
Atlas Supervisor最革命性的创新是虚拟内存。今天,拟内存是每台电脑、每部手机的基本功能,但在1962年,这个概念完全是天方夜谭。传统计算机程序必须完全加载到物理内存中才能运行,而物理内存极其昂贵且容量有限。Atlas的物理内存只有48K字(每字48位,约合288KB),在今天连一张照片都存不下。但基尔本团队设计了一个精巧的方案:将物理内存和磁鼓存储器(一种旋转的磁性存储设备,速度比磁带快但远慢于内存)结合起来,由Supervisor自动管理数据在两者之间的移动。程序使用的地址不是物理地址,而是一套“虚拟地址空间”,Supervisor和专门的硬件单元(称为“页表寄存器”)负责将虚拟地址实时转换为物理地址。当程序访问的页面不在物理内存中时,Supervisor会触发一个中断,暂停程序,从磁鼓中读取所需页面,置换出暂时不用的页面,然后恢复程序执行。整个过程对程序员完全透明,他们可以编写理论上无限大的程序,仿佛拥有无限的记忆空间。
这个机制的实现依赖两项关键技术:分页技术和硬件支持的中断。分页将虚拟地址空间和物理内存都划分为固定大小的“页”(Atlas的页大小为512字),页表记录每个虚拟页对应的物理页框号或磁鼓位置。而中断机制则是硬件向操作系统传递事件的通道,当缺页发生时,处理器自动切换到Supervisor模式,执行预定义的缺页处理程序。这种硬件与软件的紧密配合,在当时是极其前卫的设计。基尔本团队不仅设计了Supervisor的软件逻辑,还参与了硬件页表寄存器的设计,确保软硬件之间的无缝协作。
除了虚拟内存,Atlas Supervisor还引入了多道程序(multiprogramming)的概念。在此之前,大多数计算机一次只能运行一个程序,CPU在等待I/O操作时只能空转。Supervisor则维护一个作业队列,当当前作业因等待磁鼓或磁带而暂停时,Supervisor会立即切换到另一个就绪的作业,让CPU始终保持忙碌。这种调度策略极大提高了系统吞吐量,是后来分时系统和现代操作系统多任务调度的雏形。Supervisor还实现了自动作业调度——用户提交作业时,只需在穿孔卡片上标注所需资源(如内存大小、预计运行时间),Supervisor会自行判断何时运行、如何分配资源。这听起来像今天操作系统的常识,但在1962年,它需要一套复杂的优先级算法和资源分配表,全部用机器代码手工编写。
Atlas Supervisor的代码规模有多大?根据曼彻斯特大学计算机科学系保存的历史资料,Supervisor的核心代码大约有数千条指令,全部用Atlas的机器语言编写。由于没有高级语言可用,基尔本团队必须直接操作寄存器、管理内存地址,每一个字节都是手工精雕细琢的结果。开发过程异常艰苦:没有调试器,错误通常通过打印出的内存转储(dump)来人工分析;没有版本控制,每次修改都靠手写笔记和口口相传。团队规模极小,核心成员不过十余人,包括基尔本、大卫·爱德华兹(David Edwards)、托尼·布鲁克(Tony Brooker)等人。布鲁克后来回忆说:“我们经常在深夜调试,机器轰鸣声中,只有示波器的绿光闪烁。如果Supervisor崩溃了,整个实验室就陷入黑暗,因为Atlas是唯一的光源——它需要大量电力,其他灯都会变暗。”
Atlas计算机本身也是一台庞然大物。它重达数吨,占地约200平方米,需要专门的空调机房和冷却系统。中央处理器采用分立晶体管和二极管构建,运算速度约1 MIPS(每秒百万条指令),这在当时已经算顶级性能。内存是磁芯存储器,由无数个微小的铁氧体磁环编织而成,每根导线穿过磁环,通过电流方向改变磁化状态来存储比特。磁鼓存储器则像巨大的金属滚筒,表面涂有磁性材料,高速旋转时读写头在表面浮动。整个系统的功耗高达几十千瓦,运行时发出的嗡嗡声和风扇噪音如同小型工厂。
Atlas Supervisor的版本演进并不频繁。主要分为两个阶段:1962年随Atlas 1计算机发布的初始版本,以及1964年针对改进型Atlas 2的更新版。后者主要优化了虚拟内存的页置换算法,增加了更多I/O调度策略,并修复了早期版本中的一些中断处理漏洞。没有正式的版本号,通常以年度或硬件升级标识。这种朴素的命名方式反映了当时的工程文化:软件被视为硬件的附属品,而不是独立的产品。
Atlas计算机的商业表现却远不如其技术影响那般辉煌。Ferranti总共只生产了大约4到5台Atlas系统,分别安装在曼彻斯特大学、伦敦大学、剑桥大学以及英国原子能研究机构等少数几个顶尖科研单位。价格极其昂贵,每台售价约300万英镑(按1960年代币值折算,相当于今天的数千万人民币),只有财大气粗的国家级实验室和政府机构才能负担。更严峻的是,Ferranti在计算机市场的竞争中逐渐落后于IBM和CDC等美国公司,Atlas项目最终在1960年代中期停止生产。Ferranti的计算机部门后来被收购,Atlas的硬件设计鲜有直接继承者。
然而,Atlas Supervisor的思想遗产却远远超越了它的商业命运。1964年,IBM发布System/360系列计算机,其操作系统OS/360的设计者弗雷德里克·布鲁克斯(Frederick Brooks)和团队成员在规划阶段就深入研究了Atlas Supervisor的虚拟内存和多道程序实现。布鲁克斯在《人月神话》中多次提及Atlas的影响,承认OS/360的“动态地址转换”(DAT)机制直接借鉴了Atlas的分页设计。另一位操作系统先驱、Multics项目的核心人物费尔南多·科巴托(Fernando Corbato)也曾公开表示,Multics的段页式虚拟内存和进程调度算法,其思想源头可以追溯到曼彻斯特大学的Atlas Supervisor。
更深远的影响体现在学术领域。Atlas Supervisor是世界上第一个用实践证明了“虚拟内存可行”的系统。在此之前,计算机科学家对“自动管理内存层次”是否可行存在激烈争论,反对者认为硬件开销太大、软件复杂度太高、性能难以保证。Atlas的运行数据表明,缺页率可以控制在可接受范围内,程序性能的损失远小于手工管理内存带来的痛苦。这一实证结果直接推动了后续的虚拟内存研究,包括IBM的M44/44X项目、MIT的MULTICS,以及后来成为行业标准的Intel 80386的分页内存管理单元。
此外,Atlas Supervisor还开创了操作系统设计的几个关键范式:中断驱动的上下文切换、基于优先级的作业调度、资源分配的死锁避免策略。这些概念在今天看来是操作系统教科书的基础章节,但在1962年,它们都是首次在真实系统中得到验证的原创思想。基尔本团队为此撰写的一系列技术报告,如《Atlas Computer的存储管理》和《Atlas Supervisor的设计与实现》,成为全球计算机系研究生必读的经典文献。
轶事方面,有一个广为流传的故事:Atlas计算机在曼彻斯特大学运行期间,Supervisor偶尔会出现一种奇怪的故障——系统在深夜无人值守时会突然挂起,但第二天早上又自动恢复。工程师们百思不得其解,直到有一天,一位夜班清洁工承认,他经常在午夜用吸尘器清扫机房,吸尘器的电机产生的电磁干扰导致磁鼓读写头出现临时错误,而Supervisor的错误恢复机制恰好能在一段时间后自动重试并修复。这个“吸尘器Bug”成为早期操作系统鲁棒性测试的经典案例。
另一个趣闻是,Atlas Supervisior的虚拟内存页面置换算法最初采用了一种非常激进的策略:试图预测程序未来的访问模式,提前加载页面。这种“预取”机制在理论上很优雅,但在实际运行中经常失效,反而导致性能下降。基尔本团队后来改用了更保守的“最近最少使用”(LRU)近似算法,虽然不如预取那样聪明,但稳定可靠。这个教训后来被总结为“操作系统设计中的简单性原则”:不要试图预测用户行为,让系统自适应比强行预测更有效。
今天,当我们使用智能手机、笔记本电脑或云服务器时,虚拟内存和任务调度已经变得如此自然,以至于很少有人会想起它们最初的诞生地——那间充满晶体管、磁芯和磁鼓的曼彻斯特实验室。Atlas Supervisor从未像Windows或Linux那样拥有数亿用户,它只运行在寥寥几台昂贵的机器上,服务过几百名科学家和工程师。但正是这“几百人”,在1960年代早期,通过Atlas Supervisor第一次体验到了“计算机应该有的样子”:不用操心内存,不用等待I/O,只需提交问题,机器就会自动、高效地给出答案。这种体验,在随后的半个多世纪里,逐渐从实验室扩散到全世界。
在软件博物馆的展柜里,Atlas Supervisor的穿孔纸带和设计手稿或许显得朴素甚至简陋,但它们代表着一个分水岭。在它之前,计算机是程序员手中必须小心翼翼驾驭的野马;在它之后,计算机开始学会自我管理,成为人类真正的合作伙伴。这种从“控制”到“服务”的转变,正是操作系统乃至整个软件行业最深刻的遗产。而Atlas Supervisor,就是那个在混沌中率先点亮火把的先驱。
对技术发展和工程实践的推动程度
对商业模式和市场格局的影响深度
在科技文化和社会层面的持久影响力
用户群体的广度和普及程度