推文
@mubeitech · 2026-10-08 17:25
登月电脑内存只有4K,临死机前它自己掐掉杂活保住降落。 1969年7月20日,阿波罗11号登月舱离月面只有最后三分钟。 高度几百米,机舱里的蜂鸣器突然狂响。 显示屏爆出 1201 和 1202 警报。 宇航员蒙了,地面指挥中心手心里全是汗。 这两个错误代码在地面模拟时几乎没见过。 当时没人知道,是雷达开关旋钮打错了一个位置。 雷达系统开始发疯一样往电脑里塞无关的雷达扫描信号。 整台计算机的算力瞬间被吃满了。 在那个年代,计算机处理任务全靠老老实实排队。 先来先算,算完一个再下一个。 一旦算力跑满,死机就是唯一的结果。 离月球表面就几百米,要是电脑卡死,姿态推进器瞬间失控。 飞船会直接砸在月球上。 但那台登月电脑硬是没死机。 不仅没死机,它还稳稳当当地把阿姆斯特朗送到了月面上。 怎么做到的? 写这套登月机载代码的负责人,是麻省理工只有三十出头的玛格丽特·汉密尔顿。 在硬件决定一切的年代,她提前给软件做了一套在当时极为前卫的机制:异步执行与优先级调度。 她给电脑里的每一个任务都标了权重。 维持飞船姿态、控制推进器点火、计算落月轨道,这是保命任务,权重最高。 雷达突然塞进来的测距扫描,是辅助任务,权重靠后。 当雷达信号把CPU负荷推过极限的时候,系统根本没有死等。 它直接强行掐掉所有低优先级的雷达计算,把宝贵的内存和周期全部腾出来,死保推进器控制。 那两声刺耳的 1201 警报,其实根本不用慌。 那是电脑在向宇航员汇报:我把多余的杂活全扔了,正在全速保降落。 很多人不知道,在阿波罗计划立项之初,软件根本不受待见。 写代码被当成给硬件打下手的打字活,算不上严肃的工程。 汉密尔顿提出要给软件做独立的容错设计和工程验证时,甚至有人觉得她是小题大做。 后来她自己生造了一个词,叫 Software Engineering,软件工程。 她硬是把写代码这门手艺,从硬件的影子底下拽出来,变成了独立的现代学科。 那张著名的历史照片很多人都看过。 年轻的汉密尔顿站在麻省理工实验室里,身旁码着的阿波罗代码纸,厚度比她整个人还要高。 整整上万页打孔纸带,最后要人工一行一行用细铜线穿过磁环,织成只读内存。 整台电脑的运行内存只有 4KB,只读内存只有 72KB。 现在连一张表情包都装不下的算力,带人类跨过了 38 万公里的深空。 刚刚,麻省理工发布消息,90 岁的汉密尔顿安静走完了她的一生。 今天全世界的操作系统、服务器和航天器里,只要还在跑着进程调度与优先级容错, 骨子里就依然跳动着当年那个年轻姑娘写下的逻辑。 传奇谢幕,但代码还在深空里飞。
曝光 3515 · 评论 1 · 点赞 56 · 书签 21 · 曝光/时 1303.399875581361