← 返回故事列表

虚拟内存的先知:Atlas Supervisor如何为计算机装上“无限大脑”

时代:1962
阅读时间:7 分钟
浏览:9
点赞:0

1962年的曼彻斯特大学,一栋不起眼的教学楼里,工程师们正面对一个令人沮丧的现实:价值数百万英镑的Atlas计算机,其物理内存仅为16K字(约合今天32KB),而他们想要运行的程序,动辄需要数倍于此的空间。项目总负责人Tom Kilburn站在黑板前,画出一条陡峭的曲线——“程序需求永远会超出物理内

# 虚拟内存的先知:Atlas Supervisor如何为计算机装上“无限大脑” 1962年的曼彻斯特大学,一栋不起眼的教学楼里,工程师们正面对一个令人沮丧的现实:价值数百万英镑的Atlas计算机,其物理内存仅为16K字(约合今天32KB),而他们想要运行的程序,动辄需要数倍于此的空间。项目总负责人Tom Kilburn站在黑板前,画出一条陡峭的曲线——“程序需求永远会超出物理内存,我们必须在软件层面创造一种‘幻觉’,让每个程序都以为自己拥有整个内存。”这个看似天方夜谭的想法,最终催生了世界上第一个虚拟内存操作系统Atlas Supervisor。它像一位看不见的魔法师,让程序在磁盘和内存之间自动“分身”,彻底解放了程序员的双手,也奠定了现代操作系统的基础架构。 ## 内存的囚笼:1960年代程序员的噩梦 在Atlas Supervisor诞生之前,计算机编程是一场与物理内存的惨烈搏斗。以1950年代的IBM 704为例,其内存只有4K到32K字,程序员必须像精打细算的管家,手动将程序和数据分割成小块,通过“覆盖”(overlay)技术在有限空间里运行。这种操作不仅繁琐,而且极易出错——一个错误的地址计算就可能导致程序崩溃,甚至物理损坏。 曼彻斯特大学团队面临的挑战更为严峻。他们正在建造的Atlas计算机,原本是为了满足英国原子能研究机构的需求,执行大规模的数值计算。但现实是,Atlas的“一阶存储器”(核心磁芯内存)仅能容纳16K字,而用于二级存储的“鼓存储器”(磁鼓)虽然容量更大(96K字),但访问速度慢了一千倍。如何让程序员不必关心内存大小,又能高效利用慢速的鼓?这成了一个世界级难题。 团队核心成员David Howarth回忆道:“我们每天争论不休。有人说应该让程序员手动管理内存分区,但Kilburn坚决反对。他说:‘计算机存在的意义就是替人类做那些机械、重复的工作。如果程序员还要像记账一样管理内存,那计算机就白发明了。’”正是这种对“用户友好”的执着,促使团队走上了一条前所未有的道路:让操作系统自动完成内存与鼓之间的数据交换,对程序透明。 ## 分页的创世:一页纸改变计算史 1961年冬天的一个深夜,Tom Kilburn和Howarth在实验室的黑板上画出了一种全新的内存管理方案。他们提出将虚拟地址空间划分为固定大小的“页”(page,每页512字),物理内存和鼓存储器也以相同大小的“页框”来管理。当程序访问一个不在物理内存中的虚拟地址时,硬件会自动触发“缺页中断”,操作系统随即从鼓中读取该页到空闲的物理页框。如果物理内存已满,就选择一个“牺牲页”写回鼓中。 这个看似简单的概念,在当时是石破天惊的。因为这意味着操作系统必须同时处理多个程序的中断、调度页面的换入换出,并且确保每个程序互相隔离——这恰恰是现代多道程序设计(multiprogramming)的核心。Atlas Supervisor为此设计了一套精密的调度算法:它维护一个“页面使用频率表”,优先保留经常访问的页面,而将长时间未用的页面换出。更关键的是,它引入了“特权模式”的概念:只有操作系统才能执行输入输出指令和修改内存映射表,普通程序则被限制在用户态。这一设计比IBM OS/360早了整整两年。 1962年,Atlas计算机首次运行Atlas Supervisor。当演示程序——一个需要64K虚拟内存的流体力学模拟——在仅有16K物理内存的机器上顺利跑完时,现场爆发出一阵欢呼。Ferranti公司的工程师Alan Turing(注:非那位图灵,同名不同人)惊呼:“你们把磁盘变成了内存!这简直是魔法!” Kilburn冷静地纠正:“不是魔法,是分页(paging)。我们只是给了每个程序一个‘完美记忆’的幻觉。” ## 无声的遗产:从曼彻斯特到整个世界 尽管Atlas Supervisor取得了技术上的巨大成功,但它的商业命运却颇为坎坷。由于Atlas计算机造价昂贵(约合今天500万英镑),Ferranti公司只卖出了4台,主要用于原子能研究机构和大学。然而,这颗技术种子却在全球计算机界生根发芽。 1964年,IBM在开发OS/360时,其首席架构师Fred Brooks专门派人到曼彻斯特大学取经。OS/360的虚拟内存方案直接借鉴了Atlas的分页机制,尽管初期因性能问题备受诟病,但最终成为大型机的事实标准。更深远的影响出现在1965年的Multics项目中——MIT、贝尔实验室和GE的工程师们将Atlas的虚拟内存概念扩展为“分段+分页”的混合系统,并加入了动态链接、文件系统映射等创新。Multics的遗产又通过Unix和Linux,渗透到每一台现代计算机中。 今天,无论是Windows的“页面文件”、Linux的“swap分区”,还是Java虚拟机的“垃圾回收”,其思想源头都可以追溯到1962年曼彻斯特的那间实验室。正如计算机史学家Martin Campbell-Kelly所言:“Atlas Supervisor是操作系统的‘罗塞塔石碑’——它第一次完整地定义了现代OS的四大要素:虚拟内存、多道程序、中断处理和特权模式。此后所有的操作系统,都是在为这块石碑补写注释。” ## 评论 Atlas Supervisor的传奇,本质上是一次“故意制造幻觉”的成功。在1962年,物理内存是昂贵的、稀缺的,但Kilburn团队选择用软件来“欺骗”程序员,让他们相信内存是无限的。这种“抽象化”思维——即通过分层封装隐藏底层复杂性——成为整个软件工程的基石。它揭示了一个深刻道理:技术突破往往不在于“增加资源”,而在于“重新定义资源的使用方式”。Atlas让程序员不再关心内存布局,就像现代云服务让开发者不再关心服务器位置。从商业角度看,这也是一则警示:最先进的技术未必能赢得市场(Atlas仅卖出4台),但它的思想会通过影响后继者而改变世界。当下我们追捧的“元宇宙”“大模型”,或许正需要这种敢于创造“完美幻觉”的勇气。 ## 参考资料 - [Atlas Computer - Wikipedia](https://en.wikipedia.org/wiki/Atlas_(computer)) — 详细介绍Atlas计算机硬件架构与操作系统设计 - [The Atlas Supervisor - University of Manchester](https://curation.cs.manchester.ac.uk/computer50/www.computer50.org/mark1/atlas/supervisor.html) — 曼彻斯特大学官方技术文档,含Kilburn和Howarth的原始笔记 - [Virtual Memory: A History - ACM Queue](https://queue.acm.org/detail.cfm?id=3212479) — 追溯虚拟内存从Atlas到现代系统的演进 - [Tom Kilburn Biography - IEEE Computer Society](https://history.computer.org/pioneers/kilburn.html) — Tom Kilburn生平及其对计算机架构的贡献 - [Ferranti Atlas: The Machine That Invented the Future - Computer History Museum](https://www.computerhistory.org/revolution/memory/10/20) — 分析Atlas计算机的工程细节与历史遗产

发布于 2026/7/4