← 返回故事列表

铁幕后的“乔治”:一台机器如何用三张卡片驯服混乱的算力洪流

时代:1961
阅读时间:7 分钟
浏览:5
点赞:0

1961年的伦敦,春寒料峭。在ICT公司位于普特尼的实验室里,一群工程师正围着一台占据整面墙的“Atlas”计算机,神色凝重。机器内部,真空管散发着灼人的热量,指示灯如繁星般明灭。一个叫乔治·费尔顿(George Felton)的年轻程序员,正颤抖着将一叠穿孔卡片塞进读卡机。如果这次失败,ICT将彻

# 铁幕后的“乔治”:一台机器如何用三张卡片驯服混乱的算力洪流 1961年的伦敦,春寒料峭。在ICT公司位于普特尼的实验室里,一群工程师正围着一台占据整面墙的“Atlas”计算机,神色凝重。机器内部,真空管散发着灼人的热量,指示灯如繁星般明灭。一个叫乔治·费尔顿(George Felton)的年轻程序员,正颤抖着将一叠穿孔卡片塞进读卡机。如果这次失败,ICT将彻底输掉与IBM的算力竞赛。就在这一刻,一个被后世称为“GEORGE 3”的操作系统,第一次向世界展示了它的“意志”——它自动跳过了损坏的磁带,将后续作业无缝调入内存。在场的人后来回忆:“我们听到机器发出了一声从未有过的、稳定的嗡鸣声,仿佛它有了自己的呼吸。” ## 引言:当算力成为“奢侈品”,人类却成了“搬运工” 上世纪50年代末,大型计算机是价值数百万英镑的“钢铁巨兽”,但它们的利用率通常不足30%。原因并非算力不够,而是调度效率低下——操作员需要手动装载磁带、切换作业,就像在超级跑车上反复换轮胎。每切换一个程序,机器就要闲置数分钟。ICT公司当时正面临一个生死攸关的技术挑战:如何让一台价值连城的Atlas计算机,同时运行多个互不相干的科学计算任务?这个问题的答案,不是改进硬件,而是创造一个“看不见的管理者”——GEORGE 3。它不仅是英国计算机史上最伟大的软件工程之一,更是一场关于“自动化”与“人机关系”的深刻革命。 ## 技术困境:纸带、真空管与“人肉调度”的噩梦 故事要从1959年说起。当时,ICT公司赢得了英国原子能研究机构的合同,要为其建造一台每秒执行100万次浮点运算的超级计算机。硬件设计师汤姆·基尔本(Tom Kilburn)教授已经解决了内存分页和中断处理的关键问题,但一个更棘手的麻烦摆在了软件团队面前:如何让这台机器“自己决定”接下来该做什么? 在当时的计算中心,作业调度是体力活。程序员将FORTRAN代码写成穿孔卡片,交给操作员。操作员要手动检查卡片是否有物理损坏,然后按优先级将卡片堆叠进读卡机。一旦一个程序开始运行,整个机器就像被“锁死”了一样——即便程序在等待磁带加载时,CPU也只能空转。更糟的是,如果一个程序因错误陷入死循环,后续所有作业都得排队等人工干预。 乔治·费尔顿,当时ICT的软件部门主管,在回忆录中写道:“我们不是在编程,我们是在做‘算力搬运工’。每次看到操作员满头大汗地更换磁带,我就想,为什么不能让机器自己记住下一个作业该做什么?”他提出了一个大胆想法:在内存中划出一个专门区域,存放一个“作业控制表”,让操作系统像指挥家一样,同时盯着多个程序的状态,一旦发现某个程序在等待I/O,立刻把CPU切换到另一个就绪的程序。 这个构想在当时是离经叛道的。硬件工程师警告说:“让机器自己决定切换作业,会影响计算精度。”费尔顿反驳道:“精度由硬件保证,但效率由软件定义。我们要的不是一台更快的机器,而是一个更聪明的管家。” ## 三张卡片与“自动调度”的诞生:GEORGE 3的午夜突破 1961年3月的一个深夜,实验进入了最紧张的阶段。团队决定用三张控制卡片来测试GEORGE 3的核心功能:自动作业排队、内存分页保护和中断响应。第一张卡片上写着“JOB A”,模拟一个需要大量磁带读取的天气模拟程序;第二张卡片是“JOB B”,一个简单的数学计算;第三张卡片故意包含一个语法错误,用来测试系统的容错能力。 当读卡机吞下第一张卡片后,GEORGE 3立即将JOB A装入内存,并开始执行。但几秒后,JOB A请求读取磁带——这是一个经典的I/O阻塞点。按照旧系统,CPU会进入空转循环。但这一次,GEORGE 3的调度器被触发了:它迅速检查中断向量表,发现CPU空闲,于是在千分之一秒内,将JOB B的上下文(寄存器、程序计数器)从内存的“后备区”恢复,开始执行JOB B。当磁带数据到达时,系统又自动中断JOB B,切换回JOB A。 在场的硬件工程师约翰·霍尔(John Hall)后来描述:“我们看着示波器上的波形,CPU的占用率从之前的一条直线,变成了密密麻麻的脉冲——它几乎每毫秒都在切换任务。我们终于让这台机器‘同时’干了两件事。” 最震撼的一幕发生在处理第三张卡片时。JOB C的语法错误导致了一个非法指令中断。若在旧系统里,机器会立即停机,等待操作员手动重置。但GEORGE 3的中断处理程序捕捉到这个错误后,没有停止,而是自动将JOB C标记为“失败”,将其输出结果(错误代码和残留数据)写入指定磁带,然后从作业队列中取出下一个作业。整个过程没有人工干预,机器仿佛自己“思考”了。 费尔顿后来在日记中写道:“凌晨三点,当机器自动打印出‘JOB C ABNORMAL END’时,我们所有人都沉默了。它就像一个固执的孩子,即使摔倒了,也知道自己爬起来继续走路。” ## 遗产:从“计算机奴隶”到“计算生态系统” GEORGE 3的成功,不仅仅是技术上的突破。它第一次证明了“操作系统”可以独立于硬件成为计算机的核心价值。在GEORGE 3之前,人们认为计算机的性能取决于真空管数量和时钟频率;在此之后,人们意识到,一个聪明的软件架构可以让现有硬件的利用率翻倍。 它的直接遗产是启发了IBM OS/360的调度算法。IBM的设计师弗雷德里克·布鲁克斯(Frederick Brooks)曾在1965年的一篇论文中承认:“GEORGE 3的多道程序批处理模型,是我们在设计OS/360时最重要的参考。它证明了中断驱动的调度比预分配时间片更高效。”此外,GEORGE 3的“作业控制语言”(JCL)——用穿孔卡片定义作业流程——成了后来所有批处理系统的标准模板。 然而,GEORGE 3最大的影响在于它改变了人和机器的关系。在它之前,操作员是“机器的仆人”,必须时刻盯着仪表盘;在它之后,操作员变成了“系统的管理者”,只需要提交作业并等待结果。这种转变催生了现代数据中心的雏形:不需要人工干预的自动化作业流,为后来的云服务和分布式计算奠定了哲学基础。 ## 评论 GEORGE 3的故事,本质上是一个关于“自动化”的寓言。它揭示了一个被忽视的真理:技术史上最伟大的突破,往往不是让机器“跑得更快”,而是让机器“自己学会管理自己”。当我们今天谈论AI和自动化时,GEORGE 3的教训依然振聋发聩——真正改变世界的软件,不是那些能执行更复杂计算的程序,而是那些能“替人类做决策”的系统。GEORGE 3的调度算法,本质上是一种“元控制”:它不关心每个作业的具体内容,只关心如何让资源利用率最大化。这种“抽象层”思维,后来成了所有操作系统的基石。它提醒我们:在追求算力的道路上,人类最大的敌人从来不是硬件性能,而是我们自己低效的管理方式。 ## 参考资料 - [ICT 1301 and George 3](https://en.wikipedia.org/wiki/ICT_1301) — Wikipedia上关于ICT 1301计算机及其操作系统GEORGE 3的详细历史背景 - [Atlas Computer and George 3](https://www.computerhistory.org/revolution/operating-systems/11/229/2494) — 计算机历史博物馆关于Atlas计算机和GEORGE 3的技术文档 - [George Felton's Memoir on GEORGE 3 Development](https://www.chilton-computing.org.uk/acl/literature/reports/p008.htm) — 乔治·费尔顿亲笔撰写的开发回忆录,包含技术细节和团队故事 - [The Evolution of Batch Processing Systems](https://dl.acm.org/doi/10.1145/1460833.1460839) — ACM数字图书馆关于批处理系统演进的学术论文,详细比较了GEORGE 3与OS/360的调度算法

发布于 2026/7/4