来自 科技 2021-09-14 09:42 的文章

悬针纹怎么去除 Unix 50年:Android和iOS系统都源自于同一个失败项目

原文来自 Ars Technica,原标题《Unix at 50: How the OS that powered smartphones started from failure》,作者 RICHARD JENSEN,36 氪神译局编译。

你或许不知道,安卓和 iOS 两个充满竞争的操作系统,其实是源自于同一个系统 ——Unix,直到现在,还在为这两个操作系统提供着支撑力量。

Unix 诞生 50 周年了。当时,这个几乎驱动着所有智能手机的操作系统,其实是一个项目失败的产物,开发者这个系统的程序员,并没有的获得支持,只能够使用别人闲置下来不用的计算机。

从一个失败的项目,到无处不在,Unix 诞生的早期,到底发生了什么?

也许它的无处不在早已掩盖了它的起源。 但是 Unix ,这个几乎驱动所有智能手机的操作系统,其实是 50 年前一个充满野心的项目失败后的产物。

当时,这个项目的团队阵容也非常豪华,有贝尔实验室、通用电气和麻省理工学院。

具体来说,Unix 主要是贝尔实验室中一些程序员的想法,它不可思议的故事,开始于一次会议,举办地点是新泽西州默里山贝尔实验室中一个不起眼的附属建筑顶层。

1969 年 3 月的最后一天,是一个阳光明媚、天气寒冷的星期一,这个计算机科学部门接待了两位来宾:贝尔实验室副主任比尔・贝克(Bill Baker)和研究主任埃德・戴维(Ed David)。

贝克准备终止 Multics (一种复合信息和计算服务的缩写) —— 这是一个计算机科学部门已经研究了四年的软件项目。当时,Multics 已经延期两年了,远远超出预算,而且只能在最宽松的条件中发挥作用。

为了尽可能好地解释这个明显失败的项目,贝克在一次演讲中声称,贝尔实验室已经完成了它在 Multics 中试图完成的所有事情,他们不再需要继续这个项目。

正如出席会议的伯克・塔格(Berk Tague)后来在普林斯顿大学所说的那样,‘和越南一样,他宣布了胜利,并退出了 Multics。’

在部门内部,这一声明并不出人意料。程序员们敏锐地意识到,项目范围和他们被要求为之开发的计算机存在各种问题。

尽管如此,这仍然是一件值得努力的事情,而且只要贝尔实验室还在研究 Multics,他们就有一台价值 700 万美元的大型计算机可以在业余时间使用。

在 Multics 项目上工作的程序员之一丹尼斯・里奇后来说,他们都觉得这个项目想要成功,要承担一定的风险,而且成功的可能性非常渺茫。

取消 Multics 意味着,计算机科学部的程序员们必须从事的唯一项目的终结了,也意味着计算机科学部门失去了唯一一台计算机。

在 GE 645 的主机被拆卸下来运走之后,计算机科学部门的资源被削减到只剩下一些办公用品和几台终端机。

正如另一位参与这个项目的程序员肯・汤普森在 Unix Oral History 项目中挖苦地评论的那样,‘我们的个人生活方式变得更加简朴。’

幸运的是,对计算机爱好者来说,约束有时会产生巨大的创造力。

所以,有史以来最有影响力的操作系统不是由风险资本家投资的,而且写这个系统的人也不会因此成为亿万富翁。

Unix 的出现,是因为贝尔实验室雇佣了聪明的人,并给予他们自由的空间,相信他们的项目是有用的。

在 Unix 之前,贝尔实验室的研究人员已经发明了晶体管和激光,以及在计算机图形学、语音合成和语音识别领域有许多创新。

为 Multics 让路

一开始的时候,大家都对 Multics 充满希望,尽管乍看之下,它的目标有点含糊,甚至有点夸张。

作为一个由通用电气、麻省理工和贝尔实验室共同参与的项目,Multics 被宣传为一个将计算能力转化为像电力或电话服务一样容易获得的项目。

在未来,贝尔实验室的研究人员只需要在他们的办公室里安装一个插孔,将他们的终端与 Multics 主机连接起来,就能够实时访问主机的全部资源,还可以在主机上存储文件并随意检索。

尽管这些听起来都是微不足道的,但证明了即使对于简单的计算任务来说,这些功能也十分重要。

但是,当 Multics 在 20 世纪 60 年代初被首次构想出来时,文件存储是一个新鲜事物,而‘分时’(即多个用户共享一台计算机资源的能力)只是在实验中完成的,并不是在拥有大量用户的生产环境中实现的。

在 20 世纪 60 年代早期,计算机只是一个接一个地运行程序。贝尔实验室的研究人员要编写一个程序,并把它转换成计算机接受的任何形式的输入 (穿孔卡片、纸带或者花哨的机器磁性介质) ,然后把它传输到计算机中心。

计算机操作员会把程序排好队,运行它,然后把打印出来的结果和原始程序交给研究人员。

如果代码中有错误,打印出穿孔卡片,把它们带到计算机中心,等待的结果可能就会是一个上面写着类似‘SYNTAX ERROR’的打印输出。也许你还可以得到一个线索或其它可能有用的信息。

随着程序变得越来越复杂,这种调试代码的方法变得更加令人沮丧。

但没有哪家公司或大学,甚至贝尔实验室,能够为每位研究员购买一台主机 ——1965 年,贝尔实验室用于开发 Multics 的 GE 645 的成本几乎与一架波音 737 相当。

因此,人们对分时技术(译者注:对计算机资源的一种共享方式,利用多道程序与多任务处理使多个用戶可以同时使用一台计算机。)产生了广泛的兴趣,这种技术允许多个研究人员同时在大型主机上运行程序,并在他们的远程终端上立即得到结果。

通过分时,程序不会被打印在穿孔卡片上,而是被编写并存储在主机上。理论上,研究人员可以在不离开办公室的情况下动态地编写、编辑和运行他们的程序。 Multics 的构想就是为了这个目标,它开始于 1964 年,最初定下的交付期限是 1967 年。

当时,麻省理工学院已经开发出了一种名为 CTSS 的原始分时系统正在使用。

具体的项目实施中,麻省理工学院提供规范,通用电气提供硬件,通用电气和贝尔实验室将分担编程任务。

Unix 团队:聚集!

陆克文・凯纳迪(Rudd Canaday)是 Multics 项目的首批程序员之一。凯纳迪在 1964 年被贝尔实验室聘用,在 1966 年被调到 Multics 项目上之前,还为耐克导弹防御计划编写了一个简单的分时系统。

第二年,实验室雇佣了里奇和肯・汤普森,前者是哈佛大学毕业生,父亲是贝尔实验室的校友,后者自称是军人,据他自己承认,至少在一个月的时间内,他都在 Cal-Berkeley 的校区躲避贝尔实验室的招聘人员。

凯纳迪、里奇和汤普森来自不同的地方,但最终却来到了同一个地方:贝尔实验室大楼的顶层,在狭窄的空间里工作。没有空调,但他们可以访问价值数百万美元的大型主机,而且监管相当宽松。

这三个研究人员都是 MTS,或者说是实验室的技术人员。

这个称号带来了一种隐含的信任,即他们有能力找到自己的项目,并且 —— 如果让他们自行决定的话 —— 从事对实验室的母公司 AT & T 有利的研究。

幸运的是,这份工作也给了他们很大的自由。

马尔科姆・道格拉斯・麦克罗伊(Malcolm Douglas McIlroy)是名义上的监督人员,毕业于麻省理工学院,自 1958 年以来一直在贝尔实验室工作。

汤普森、里奇、卡纳迪和麦克罗伊都很清楚麻省理工学院的规范中存在的缺陷 —— 到这个时候已经有几千页了 —— 他们知道,至少他们面临的一些挑战可以归咎于 GE 645 的架构。

随着时间的推移,他们四个,特别是汤普森,开始相信如果给他们一个新的开始,他们可以开发出一个比 Multics 更好的操作系统。

舒适的环境

})();