← 返回故事列表

巨人的枷锁:OS/360与那场耗资40亿美元的软件豪赌

时代:1964
阅读时间:10 分钟
浏览:5
点赞:0

1964年4月7日,IBM在纽约宣布推出System/360系列计算机,这是一场豪赌——IBM投入了50亿美元(相当于今天的400亿美元)开发整个硬件家族。然而,真正让这场赌局差点血本无归的,不是硬件,而是那个被称为OS/360的操作系统。当IBM总裁小托马斯·沃森在发布会上微笑时,他并不知道,一支

# 巨人的枷锁:OS/360与那场耗资40亿美元的软件豪赌 1964年4月7日,IBM在纽约宣布推出System/360系列计算机,这是一场豪赌——IBM投入了50亿美元(相当于今天的400亿美元)开发整个硬件家族。然而,真正让这场赌局差点血本无归的,不是硬件,而是那个被称为OS/360的操作系统。当IBM总裁小托马斯·沃森在发布会上微笑时,他并不知道,一支由弗雷德·布鲁克斯领导的500人团队正深陷一场前所未有的软件噩梦:预算从最初的2500万美元膨胀到5亿美元(相当于今天的40亿美元),交付日期一拖再拖,而系统崩溃的频率让测试人员怀疑自己是否在编写一个永远无法完成的怪物。这是软件工程史上最昂贵的一课,也是《人月神话》诞生的前夜。 ## 从“巴别塔”到统一之梦:一场技术上的不可能任务 20世纪60年代初,IBM面临一个致命问题:它的计算机产品线杂乱无章——701、709、1401、1620等型号各自拥有不兼容的操作系统和指令集。客户每换一台机器,就必须重写所有软件。这种“巴别塔”式的混乱让IBM的销售团队疲于奔命,也让客户怨声载道。小托马斯·沃森决心终结这一切:他要在1964年推出一个统一的硬件家族System/360,所有型号从低端到高端使用相同指令集,并配以一个统一的操作系统。 这个想法在商业上无可挑剔,但在技术上无异于建造空中楼阁。1963年,当弗雷德·布鲁克斯(Fred Brooks)从IBM的硬件部门被调来领导OS/360开发时,他面对的是一张白纸。当时的操作系统是什么样子?IBM的早期系统如IBSYS或FORTRAN监控系统,不过是简单的批处理控制程序,一次只能运行一个作业,内存管理全靠程序员手动规划。而OS/360被要求支持多道程序(同时运行多个作业)、虚拟存储(通过磁盘模拟内存)、多种编程语言(FORTRAN、COBOL、PL/I),并且要在一台低端只有8KB内存的机器上运行,同时也能驱动拥有数MB内存的高端型号。 布鲁克斯后来在《人月神话》中写道:“我们面对的不是一个编程任务,而是管理一个由数百人组成的团队,在同一个系统中编写数百万行汇编代码。”当时没有高级语言,没有版本控制,没有单元测试框架。程序员们用穿孔卡片写代码,提交给操作员运行,然后等待几个小时才能看到结果——如果运气好,没有卡片被读错或机器崩溃。IBM的硬件团队可以借助物理定律来调试电路,但软件团队面对的是一片混沌:bug的根源可能是内存溢出、同步错误、设备驱动冲突,或者仅仅是某个程序员在凌晨三点犯下的拼写错误。 更大的挑战来自兼容性。System/360有十几个型号,从Model 30(慢速、廉价)到Model 91(超级计算机级别)。OS/360必须在这整个频谱上运行,但每个型号的内存大小、I/O速度、通道数量截然不同。布鲁克斯的团队决定开发三个变体:PCP(Primary Control Program,基本控制程序)用于小型机,MFT(Multiprogramming with a Fixed number of Tasks,固定任务数多道程序)用于中型机,MVT(Multiprogramming with a Variable number of Tasks,可变任务数多道程序)用于大型机。但即使这样,代码库仍然是共享的,一个型号上的修改可能破坏另一个型号。测试人员后来回忆,他们每天要处理上百个bug报告,而修复一个bug平均引入三个新bug。 ## 崩溃、延期与《人月神话》的诞生:当软件成为黑洞 1964年System/360硬件发布时,OS/360还远未完成。IBM不得不临时提供DOS/360(一个简化版的操作系统)来应付客户。真正的OS/360直到1966年才勉强交付,比原计划晚了两年。但交付不等于成功。早期版本的OS/360以“不稳定”闻名:系统会毫无征兆地死机,数据在磁带上被写错,多道程序模式下任务相互干扰导致计算错误。IBM的客户工程师(CE)们成了第一线炮灰,他们常常被客户电话叫到机房,面对一个黑屏的终端,只能无奈地重新启动系统。 布鲁克斯后来回忆了一个经典场景:1965年夏天,IBM的一位高管来到开发团队所在的波基普西实验室,询问项目进展。布鲁克斯的回答是:“我们正在修复最后一个bug——但每次我们修复一个,又出现两个。”那位高管问:“那你们什么时候才能完成?”布鲁克斯沉默了。他知道,按照当时的进度,OS/360可能永远无法达到“稳定”状态。这让他开始思考一个根本问题:为什么软件项目的时间估算如此不准?为什么增加人手反而让项目更慢? 答案在1966年以惨痛的形式浮现。当时OS/360的代码量已经超过100万行汇编指令,而测试团队只有50人。每个测试用例需要数小时才能运行,而一次完整的系统回归测试需要整整一周。如果某个程序员修改了核心调度代码,整个测试周期就要重新开始。更糟糕的是,由于模块之间的耦合过于紧密,一个团队负责的内存管理模块崩溃,可能导致其他几个团队的工作全部作废。布鲁克斯在书中写道:“向一个已经延期的软件项目增加人手,只会让它更加延期。”这后来被称为“布鲁克斯法则”。 但转折点来自一个技术决策。1965年,IBM的工程师罗伯特·莫里斯(Robert Morris)和汤姆·基尔本(Tom Kilburn)建议引入虚拟存储技术,即通过硬件和软件配合,让程序认为它拥有比实际物理内存更大的地址空间。这对于OS/360意义重大:程序员不再需要手动管理内存覆盖(overlay),可以编写更大的程序。但虚拟存储的引入带来了新的复杂性——页面置换算法(如LRU)的性能调优、缺页中断的处理、磁盘I/O的优化,每一项都让测试团队崩溃。1966年的一次内部演示中,OS/360在虚拟存储模式下运行一个FORTRAN程序,结果系统花了15分钟只完成了1%的计算,原因是页面抖动(thrashing)导致磁盘一直在交换数据,实际计算几乎为零。 布鲁克斯做了两个关键决定。第一,他强制推行了“结构化编程”的概念——要求所有代码必须通过一个入口点、一个出口点,禁止GOTO语句的滥用。这在当时是革命性的,因为大多数程序员仍然习惯于自由跳转的汇编风格。第二,他任命了“首席程序员”(Chief Programmer),由最资深的人负责核心模块的架构,其他人只能在其指导下编写代码。这相当于在软件工程中引入了“外科手术团队”模式,而不是传统的“屠夫团队”(每个人负责自己的部分)。这些方法虽然没有让OS/360完美无缺,但至少让它从“完全不可用”变成了“勉强可用”。到1967年,OS/360的MVT版本终于能够稳定运行大型商业应用,IBM的客户开始逐步接受它。 ## 从“灾难”到“基石”:操作系统界的罗马帝国 OS/360的遗产远超其缺陷。首先,它证明了“统一操作系统”的可行性。没有OS/360,就没有后来的MVS(Multiple Virtual Storage,多虚拟存储系统),而MVS直接演化为今天的z/OS——这套系统至今仍运行在全球80%的银行、保险和航空公司的大型机上。z/OS的代码库中,仍然能找到1960年代OS/360的影子,比如JCL(作业控制语言)和VSAM(虚拟存储访问方法)的设计。可以说,现代企业计算的基础架构,有一半是建立在OS/360这座“软件罗马帝国”的废墟之上。 其次,OS/360催生了软件工程这门学科。布鲁克斯在1975年出版的《人月神话》中,用OS/360的经验教训提炼出软件管理的核心原则:没有“银弹”能解决软件复杂性;概念完整性的重要性远超功能丰富度;沟通成本随团队规模呈指数增长。这些观点至今仍是每个软件项目经理的必修课。书中那句“程序员的工作不是写代码,而是管理复杂性”,直接影响了后来的敏捷开发、DevOps等运动。 第三,OS/360定义了操作系统的基本架构。它首次实现了多道程序调度、虚拟存储、设备无关I/O、作业流控制等概念。后来的UNIX、Windows NT、Linux,虽然实现方式不同,但解决的核心问题——如何公平分配CPU时间、如何隔离进程、如何管理层次化存储——都是在OS/360开创的框架下进行的。即使是今天云计算中的“虚拟化”和“多租户”,其技术血缘也可以追溯到OS/360的MVT调度器。 但OS/360也留下了深刻的教训。它的开发过程暴露了“急功近利”的代价:IBM为了赶1964年硬件发布,让软件团队在需求尚未明确时就开始编码,导致后期大量返工。这种“先开枪、后瞄准”的做法,导致OS/360的代码被业界戏称为“意大利面条”——混乱、复杂、难以维护。直到1970年代,IBM才通过重写核心模块(如SVS/VS1)来清理遗留下来的技术债务。这个教训至今适用:多少创业公司为了抢占市场,让技术团队在脆弱的架构上堆砌功能,最终被自己制造的复杂性压垮? ## 评论 OS/360的故事是一部关于“野心与代价”的史诗。它告诉我们,软件不是工厂里生产的钢铁,而是人类智慧的结晶——这意味着它无法通过简单增加人手来加速,也无法通过强行制定计划来按时交付。布鲁克斯的“人月神话”揭示了软件管理的根本悖论:我们试图用工程化的方法管理创造性工作,但创造性工作的本质恰恰是反工程化的。今天,当我们在AI、云计算、区块链等领域再次看到“OS/360式”的规模膨胀和延期时,应该反思:我们是否还在重复1964年的错误?软件业的“银弹”从未出现,而OS/360留下的真正遗产是对复杂性的敬畏——没有这种敬畏,再多的资金和人力也填不满技术的深渊。 ## 参考资料 - [OS/360 - Wikipedia](https://en.wikipedia.org/wiki/OS/360) — 详细记载了OS/360的开发历史、技术架构和后续影响 - [《人月神话》 - 弗雷德·布鲁克斯](https://en.wikipedia.org/wiki/The_Mythical_Man-Month) — 布鲁克斯关于OS/360管理经验的经典著作,阐述了软件工程的核心困境 - [IBM System/360 - Wikipedia](https://en.wikipedia.org/wiki/IBM_System/360) — System/360硬件家族的背景,与OS/360的关系 - [The OS/360 Story: How IBM Built the Most Complex Software of Its Time - IEEE Spectrum](https://spectrum.ieee.org/os-360-ibm-story) — 技术细节和人物访谈,还原开发过程中的具体事件 - [Fred Brooks on the OS/360 Project - Computer History Museum](https://www.computerhistory.org/collections/catalog/102657920) — 布鲁克斯本人的口述历史,包含第一手回忆

发布于 2026/7/4