分享

Unix 的谱系

 昵称56827590 2019-02-15



小型实验原型系统的后继产品往往务受令人讨厌的 “第二版效应” 折磨. 由于迫切希望把所有首次开发蝗遗漏的功能都添加进去, 往往导设计十分庞大, 过于复杂. 其实, 还有一个因不常遇到而鲜为人知的 “第三版效应”: 有时候, 在第二系统不堪自身重负而崩溃之后, 有可能返璞归真, 走上正道.

—— 《Unix 编程艺术 · 第 2 章 历史 — 双流记》

起源

在计算机的上古时代, 计算机都是以 “批处理” 方式进行工作.

所谓批处理的工作方式指的是, 先把编好的程序输入给计算机, 而后计算机运行程序; 计算机运行完一批程序后, 再把第二批编好的程序输入给计算机, 计算机再运行程序.

因为计算机比人快, 所以采用这种工作方式的结果就是, 程序输入的速度跟不上计算机运行的速度. 最后, 大部分时间, 计算机都在闲置着等干活.

于是当时人们就想, 能不能让计算机同时处理多个用户的程序, 由于计算机足够快, 让每个用户都觉得自己独占计算机一样.

那么如何让计算机同时处理多个用户的程序呢?

翻电的小李老师在夏令营里说过他读书的习惯: 同时读六本书. 如何同时读六本书呢? 先读第一本的第一章, 再读第二本的第一章, 直到读完第六本书的第一章, 而后重新拿起第二本书来读第二章.

当时让计算机同时处理多个用户的程序也采用这样的思路.

让计算机先处理第一个程序一段时间, 再处理第二个程序一段时间, 直到处理完最后一个程序一段时间, 而后重新处理第一个程序一段时间.

因为计算机足够快, 而每次处理程序的这一段时间足够短, 所以感觉上, 计算机在同时处理多个程序.

1961 第一个分时系统 TCSS 被研发出来. 所谓分时系统指的是, 把 cpu 的处理能力按时间分成 “时间片”, 再把这个时间分配给不同程序使用.

TCSS 的成功研制被美国国防部高度重视. 1962 年由 DARPA ( 国防部高级研究计划局 ) 出资 300 万美元启动 MAC 项目, 完善 TCSS.

1964 年贝尔实验室, 麻省理工学院和通用公司承担了研制任务, 开始了 Multics 项目, 该项目试图建立运行在大型机上的一个具备众多功能的, 能够很漂亮地支持大群用户的分时操作系统.

Multics 就是 “第二版效应” 中的那个 “第二版”. 最后它因不堪自身重负而崩溃.

诞生

贝尔实验室有一个工程师叫 肯 · 汤普逊 参于了 Multics. 他在 Mutics 上编写一个游戏名叫 “星际旅行” 的游戏.

1969 年贝尔实验室终于因为的研发进度太慢退出了 Multics 项目.

回到贝尔实验室的汤普逊因为再没有可以运行他的 “星际旅行” 而整日失魂落魄的游荡在办公室里. 直到他找到了一台废弃的 PDP — 7 小型机.

他为了能运行他的 “星际旅行”, 在这台 PDP - 7 上延着 Multics 的思路, 开发出一个更轻的操作系统, 并把它戏称为 Unix. Multics 中 multi 是 “复杂, 多”, 而 unit 则是 “统一的意思.”

当时与汤普逊一起参于过 Multics 的同事们, 已经习惯了 Multics 环境下的交互计算方式, 看到 Unix 后大喜过望.

发明 C 语言的 丹尼斯 · 里奇 后来评价道:

我们希望保留的不仅仅是一个良好的编程环境, 还包括一种能够形成伙伴关系的系统. 经验告诉我们, 远程访问 ( remote-access ) 和分时系统支持的公用计算, 其本质不是用终端机代替打孔机来输入程序, 而是鼓励频繁的交流.

—— 《Unix 编程艺术 · 第 2 章 历史 — 双流记》

计算机不仅应被视为一种逻辑设备而更应视为社群的立足点, 这种观念深入人心.

Unix 被开发出来后, 除了运行汤普逊的星际旅行外, 主要承担的工作是为贝尔室验室的专利部门进行 “文字处理” 的支持工作. 而这让汤普逊和他的伙伴们成名正言顺购买了一台功能强大多的 PDP - 11 小型机.

直到此时, 贝尔实验室的高层们还没有意识到他们编写的字处理系统就快孵化出一个哲作系统来了. 直到 1972 年, Unix 的装机量只达到 10 台.

发明 “管道” 工具的道格拉斯 · 麦克罗伊描述那个时代:

上界的压力和纯粹出于对技艺的荣誉感, 促使人们在有了更好更多的初步思路后, 去重写或抛开己有的大量代码. 从来没听说过竞争和势力范围何护: 好东西太多了, 没有人需要把这些创新占为己有.

开放与内战

就这样, 罗马在燃烧, 而我们还在拉小提琴.

—— 《Unix 编程艺术 · 第 2 章 历史 — 双流记》

1958 年为了解决反托拉斯案例达成的和解, AT&T ( 贝尔室验室的母公司 ) 被禁止进入计算机机关的商业领域. 根据协议规定, 贝尔室验室必须将非电话业务的技术许可给任何提出要求的人.

1971 年为了更好的将 Unix 移植到其它机型上, 丹尼斯 · 里奇发明了 C 语言, 1973 年里奇和汤普逊重写了 Unix 系统.

1974 年在《美国计算机通信》上发表的一篇论文中第一次公开展示 Unix. 全求各个研究实验室和大学都要求体验 Unix. 于是汤普逊将装有 Unix 的磁带和磁带盘一包包地寄给他们.

Unix 因其小巧而可以运行在小型机上. 在那个没有个人机的时代, 大型机和小型机代表了两种文化. 大型机代表着拥有中心化权力的政府机构, 公司和高校. 而相对管制较松的小型机则代表了自由和反传统, Unix 黑客们可以纵情挥洒的去推翻伴随 “大计算” 的所有技术假定和商业实践.

1976 年至 1976 年, 汤普逊利用年休在加州在学伯克利分校教学. 这使伯克利成为了 Unix 研究的的学术重镇. 1977 年伯克利发布了第一版 BSD ( Berkeley Software Distribution ).

1980 年, DARPA ( 国防部高级研究计划局 ) 委托伯克利主机科学研究组实现全新的 TCP/IP 协议栈. 从此互联网文化开始与 Unix 文化自边缘开始融合.

1982 年, SUN 微系统公司出世, 他们综合了斯坦福大学设计的硬件和伯克利分校开发的 Unix, 取得了辉煌的成功, 开创了工作站产业.

1983 年, IBM PC 可使用不下六种的 Unix 通用操作系统.

同年, 美国司法部在针对 AT&T 的第二起反托拉斯诉讼中获胜, 并拆分了贝尔系统. 这次判决将 AT&T 从 1958 年的禁止将 Unix 产品化的和解协议中解脱出来. 而这将 Unix 系统拖入商业公司的内战中.

首先 Unix 的产业化破坏了 Unix 的源码自由交流, 进而大公司的为了追求差异化带来的利益而抛弃了 Unix 的跨平台兼容性.

与是 Unix 社区分为了两派, 以程程序员和工程师为代表的长发派站在伯克利分校一边, 而商业为目标的人则倾向于 AT&T.

长发派, 重唱着十年前的 Unix 早期主题, 喜欢标榜为企业商国的叛逆者. 比如一家小公司贴的海报那样, 上面画着一个标着 “BSD” 的 X 翼星际战机快速飞离巨大的 AT&T 死星, 后者在熊熊的烈火中粉身碎骨. 就这样, 罗马在燃烧, 而我们还在拉小提琴.

—— 《Unix 编程艺术 · 第 2 章 历史 — 双流记》

而此时微软正在个人电脑的领域悄然崛起. 1990 年, 微软的第一个成功的图形操作系统 Windows 3.0 巩固了微软的统治地位, 并为微软在九十年代最终垄断桌面应用市场创造了条件.

1989 年到 1993 年是 Unix 的中世纪. 当时, 似乎 Unix 社群所有的梦想都破灭了.

—— 《Unix 编程艺术 · 第 2 章 历史 — 双流记》

重生

塔能鲍姆教授是荷兰阿姆斯特丹自由大学的教授. 他给学生教 Unix 相关的知识.

但 AT&T 将 Unix 产业化后, 将 Unix 的源码私有化, 大学无法再使用 Unix 源码了.

塔能鲍姆教授为了能够继续教 Unix, 手动编写了一个类 Unix 的核心程序, 他称这个程序为 Minix.Minix 意为 “小型 Unix”.

在编写过程中, 为了避免版权纠纷, 谭邦宁 ( 即塔能鲍姆教授 ) 完全不看 Unix 核心源码, 并且强调他的 Minix 必须能够与 Unix 兼容.

—— 《鸟哥的 Linux 私房菜》

1991 年, 芬兰赫尔幸基大学计算机科学系的学生李纳斯开宣布了 Linux 计划.

李纳斯因学习的专业和兴趣, 需要经常使用 Unix 系统, 而整个赫尔幸基大学只有一个 Unix 系统, 同时仅提供 16 个终端.为了不用排队等待使用 Unix 的时间, 李纳斯购买了 Minix 系统, 装在自己的电脑中.

但是 Minix 是一个仅供教学用的操作系统, 很多功能并不十分完善. 而塔能鲍姆教授也对完善 Minix 系统兴趣不大. 于是李纳斯索性决定自己写一个自己用的 Minix.

于是最初版本的 Linux 系统就此诞生了.

为了进一步完善 Linux 系统, 李纳斯将 Linux 系统的源码放在网络上免费让大家下载使用, 同时 Linux 开放源代码, 黑客很容易参考其源码为 Linux 写出驱动程序和软件.

当志愿者完成了驱动程序或软件的开发, 李纳斯会对其测试, 如果没有大的问题, 这个驱动或软件就会被加入到 Linux 系统核心当中.

后来, 随着 Linux 核心的功能越来越多, 更多的志愿者加入了测试程序的队伍中来.

这群素未谋面的虚拟团队, 在 1994 年终于完成了 Linux 核心正式版 1.0.

与此前各种版本的 Unix 不同, Linux 和 BSD 的开发相当不同, 它们根值于互联网.

—— 《Unix 编程艺术 · 第 2 章 历史 — 双流记》

黑客社区的的许多高级领导人也都是 Unix 的老前辈, 八十年代分拆后的伤痛尤在, 他们将 Linux 作为实现 Unix 早期判逆梦想最后和最大的希望, 而汇聚在 Linux 旗下.

—— 《Unix 编程艺术 · 第 2 章 历史 — 双流记》

1998 年, 各个黑客社区的领导们召开了一次峰会, 这次会让为社区开发的方式确立了一个新的标记: 开源.


Unix 起源于 Multics, 它是权力机构对于机器高效利用的诉求的体现.

这种诉求催生了人们以技术和系统作为社区进行合作的冲动.

而 Multics 的失败和 Unix 的诞生, 使得 Unix 走向其初衷的反面: 自由和反叛.

Unix 的历史中, 最大的规律就是: 距开源越近就越繁荣. 任何将 Unix 专有化的企图, 只能陷入停滞和衰败.

—— 《Unix 编程艺术 · 第 2 章 历史 — 双流记》

在 Unix 历史中最诡异但非常合逻辑的事情是, 1958 年 AT&T 的与反托拉斯案例达成的和解协议, 使 Unix 暴露在知识产权的保护之外, 这反而为 Unix 带来了开放和繁荣; 而 1983 年 AT&T 解除了和解协议的禁令, 将 Unix 重新置入知识产权的保护中, 反而使 Unix 拖入黑暗的中世纪.


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多