Berkeley二十年Unix历史
译者:孔祥波
邮件:xbkong@freebsdchina.org
日期:2002年08月05日
从AT&T拥有版权到自由在发布
作者:Marshall Kirk McKusick 翻译:孔祥波

关于作者:Kirk McKusick写书,文章,咨询以及教授Unix-BSD的相关课程。在加洲大学Berkeley分校期间,他实现了4.2BSD的快速文件系统FFS , 并且在计算机科学研究计算机科学,监督4.3BSD和4.4BSD的发布和开发工作. 他擅长虚拟内存系统和文件系统.他希望一天两个系统可以完美结合。 他在Cornell大学获得电子工程的学士学位 , 并且在加洲大学Berkeley分校学习研究生课程,在那他获得了计算机科学和工商管理的硕士学位,和计算机科学的博士学位 . 他是 Usenix联合会的主席,也是美国计算机学会和电气和电子工程师协会的成员。

业余时间,他喜欢游泳,带着潜水器潜水,和收集葡萄酒。葡萄酒存储在地下室特殊结构的酒窖中(在http://www.mckusick.com/~mckusick/index.html可以看到),在那,他和国内合作长达19年的好友Eric Allman分享品尝美酒带来的快乐。

早期历史
Thompson 和 Ritchie 在不得1973年Purdue大学召开的操作系统原理研讨会上,发表了第一篇关于UNIX的论文。 那时 伯克利分校的Bob Fabry教授也在场,他立刻对UNIX产生兴趣,并得到一份拷贝,准备在伯克利做实验。

当时, 伯克利分校 仅有几台大型主机做批处理工作,因此第一笔定单是得到能运行UNIX第四版的DP-11/45 伯克利计算机科学系,数学系&统计系联合购买了一台PDP-11/45.1974年一月,UNIX第四版磁带交付学校使用,并被研究生 Keith Standiford安装到这台机器上。

那时,有太多系统需要Thompson维护,但在Purdue大学的Thompson还是没有直接参与伯克利UNIX系统的安装,由于在伯克利安装的系统出现几次奇怪的系统崩溃,这样一来就需要他这样的专家来解决问题。 因为伯克利仅有一台300波特的声频偶合式调制解调器,且没有应答功能, Thompson 先通过电话通知在机房Standiford,让他将电话线插入调制解调器中,通过这种方法,Thompson 可以在New Jersey远程对崩溃的系统进行调试,除错。

系统多次崩溃是由于硬盘控制器不能进行重叠性搜索引起的,相对于普通的文档搜索不同, 伯克利的PDP- 11/45是Thompson遇到的第一批在同一个控制器上有两个硬盘的计算机。 Thompson的远程除错也是伯克和贝尔实验室合作的一个例子。 贝尔实验室积极肯干的研究人员也乐于助人,同时也和伯克利分享工作成果,这在很大程度上促进伯克利软件的改进工作。

尽管Unix很快能够运行,并且比较稳定。但计算机系,数学系和统计系开始出现矛盾;数学系和统计系想要运行DEC's RSTS系统. 争论之后,他们达成协议;每个系可以每班运行8小时的计算机系统; Unix可以在运行RSTS系统16小时后,再运行8小时。为公平起见,运行的时间段为每天轮换 .因此, 第一天Unix运行从上午 8 点到下午 4 点. 然后是第二天下午4点到第二天的午夜.而后是第三天的凌晨到上午8点.尽管这样离奇的时间安排,参加学习操作系统课程的学生仍然喜欢在 Unix做项目,而不是批处理机上。

早期的发行
同时,他们还对Pascal编译器的错误恢复工作感兴趣,同时也提出系统拷贝的要求. 1977年初, Joy完成了 "Berkeley Software Distribution." 这个发行版本包括 Pascal系统,并且在Pascal源码的晦涩的字目录下 编译了 ex.编辑器。 又过了一年, 作为发行组的秘书的Joy , 发放了大约三十份免费的系统拷贝。

随着ADM-3a终端的出现,并且提供指向屏幕地址的指针的功能 , Joy 最终完成了 屏幕编辑器vi,给Berkeley 带来了基于屏幕的编辑器. 他很快发现自己处在进退两难的地步. 在学校,经费不足是常有的事,旧的设备根本就没有替换掉 . 他就没有进行代码优化和修改几个终端的支持工作 , 并且决定通过使用一个小的解释器去重画屏幕,来改善屏幕管理. 这个解释器通过描述终端的特性来驱动, 这个工作最终产生了 termcap.

到1978年中期,软件的发行版明显需要修改. 对于 Pascal 系统,日益增长的用户社区反馈了很多意见,根据反馈的意见修改后的系统 更加稳定, 同时也形成了两个分支,使其可以在PDP-11/34上运行. 修改的结果成为“Berkeley软件发布第二版,”很快被缩写为 2BSD. 连同增强的Pascal系统 , vi编辑器和几个终端的termcap 也在内. Bill Joy 在一次独自把发行软件集成在一起, 回答用户的电话, 并且把客户的反馈也集中在系统中 . 有过了一年又发行了75份系统. 然而,接下来的一年 Joy还是转向另一个项目, 2BSD 发布还在进行. 其最终版本为2.11BSD, 是一个至今仍运行在世界各个角落的几百台 PDP-11上的完整的系统 。

VAX Unix
1978年早期, Richard Fateman教授开始寻找一种带有较大地址空间的机器,这样可以继续他在Macsyma ( 最初开始在PDP-10)的工作. 新生产的 VAX-11/780 实现这一需求,并且在预算之内. Fateman和十三个同事成员一起提出一项国家科学基金会提议,他们联合其他部门的资金一同购买一台 VAX. 。

起初VAX 运行 DEC'的 VMS操作系统, 但是学部已经习惯使用 Unix 环境,同时想要继续使用它 .所以, VAX到达不久, Fateman 获得一份由贝尔实验室的John Reiser和Tom London 向 VAX 移植的32/V版本的 Unix 拷贝.

虽然在 VAX机器上32/V 提供了 Unix第七版的环境,仍然没有充分利用 VAX在虚拟内存上的优势. 向在PDP-11运行的其他系统,它完全是基于交换的系统.对于在Berkeley工作的Macsym项目组, 虚拟内存的不足意味着程序地址空间被物理内存(最初在新型VAX的1M)在的大小所限制。

为了解决这个问题, Fateman 通过 Domenico Ferrari教授(Berkeley的系统系的一名成员),研究在他的组内为Unix编写虚拟内存系统的可能性. Ozalp Babaoglu( Ferrari的学生), 着手寻找在VAX上实现内存分页的方法由于;由于VAX缺乏参考资料而使他的工作相当复杂 .

当 Babaoglu接近首次实现的完成 ,他向Bill Joy寻求理解复杂的Unix内核的帮助. Intrigued by 由于对Babaoglu方法的好奇, Joy参与帮助把代码整和到32/V中 还有后续的调试工作.

不幸的是, Berkeley 仅有用于系统开发和一般的研究使用的一台. 然而, 圣诞节之后的几周, 有耐性的用户社区发现他们交替地登陆到32/V和 "虚拟的 VAX/Unix."在登陆到32/V的几分钟后,他们在后者上的工作经常出现突发性的当机。 到1979年一月, 大部分的调试工作已经结束, 32/V 已经成为历史.

Joy 发现 32位的 VAX 使16为的PDP-11成为废品, 并且开始把2BSD向VAX移植. 然而由 Peter Kessler 和我移植Pascal系统, Joy 移植 ex 和 vi编辑器, C shell, 以及来源于2BSD无数的小程序。

1979年后期, 完全的发行版本已经整和完毕.这个发行版支持虚拟内存的内核, 标准的 32/V 应用, 以及来源于2BSD附加部分. 1979年十二月, Joy 首次发行了大约一百份的3BSD, 由Berkeley发行的VAX 版.

最终的发行版是由贝尔实验室发行的32/V; 其后所有的由AT&T 发行的Unix , 从最初的系统 III和后来的系统 V,是由不同部门发行的侧重稳定的商业发行版本。随着Unix的商业化, 贝尔实验室的研究员们 不在担当发展的Unix 研究工作. 当研究社区继续修改 Unix 系统,他们发现需要一个组织能够发行研究版本 . 因为Unix早期环境 和基于Unix的工具发行的历史a, Berkeley很快进入贝尔实验室先前提供的角色 .

DARPA 的支持
同时, DARPA部门的计划人的讨论对Berkeley的工作产生主要的影响. DARPA早期成功的计划是把他们的主要研究中心连在一起,形成一个全国的计算机网络.与此同时,他们也在这些研究中心寻找 已到寿命的计算机,并且换掉它们. 然而,比巨大的替换开销还大的是,把研究的软件移植到新的计算机上. 另外, 由于硬件和操作系统的多样性,使得很多站点不能共享软件.

选择一个单一硬件的卖主是不契合实际的 ,因为研究小组对多种类型的计算机需要和 不能单一的依靠一个制造商. 然而, DARPA的决策者决定最好的方案是在操作系统级的统一.经过多次讨论之后, 因为Unix已被证实的可移植性,而被作为操作系统的标准 .

1979年秋季, Bob Fabry 答应DARPA的关于移向Unix建议,向Berkeley 提议,开发一个为DARPA社区使用的3BSD增强版本. Fabry 带着他的建议去参加DARPA图象处理的会议和约见VLSI的承包人,一同去的还有ARPAnet开发者 Bolt, Beranek, 和Newman. 还为Berkeley 能否开发一个工作系统留有余地; 然而,1979年十二月3BSD 的发布解除了他们的顾虑 .

由于3BSD版本实现了他的承诺,3BSD声誉也随着大大提高, 因此Bob Fabry和 DARPA 签定了一份在1980四月生效的长约18个月的合同.在这份合同的赞助下 , Bob Fabry组建了名为“计算机系统研究小组 ”的组织, 或者简写为 CSRG . 他很快雇佣了 Laura Tong处理项目的管理. Fabry 把他的注意力转向寻找一位能够管理软件开发的项目经理. Fabry 以为 已经通过Ph.D.资格考试的Joy,宁愿完成他的学位也不肯当软件开发的职位 .但是 Joy 又有了其他的计划.三月上旬的一个晚上,Joy达电话往Fabry家里 打电话,表示对掌管Unix进一步发展感兴趣.尽管这个提议使 Fabry很吃惊, Fabry 梢加考虑就答应了.

项目进展的的很顺利. Tong 建立一套发行系统,能够使从Joy早先发行版处理大量的定单. Fabry 开始同AT&T的Bob Guffy以及加洲大学的律师合作,制定使用者需要同意使用 Unix 的条款

(待续。。。)