本文发表在 rolia.net 枫下论坛早期历史
1973年11月,在Purdue大学召开的"操作系统原理研讨会"上,Ken Thompson 和Dennis Ritchie发表了第一篇关于Unix的论文。 当时California大学Berkeley分校的Bob Fabry教授也正好在会场上,他立刻对此发生了兴趣,并得到了一份操作系统的拷贝,准备在Berkeley分校进行实验。
当时,Berkeley仅有大型的计算机主机系统在做一些批处理工作。因此这项事业的第一个定单是得到一台PDP-11/45计算机,以运行当时的Unix Version 4。 Berkeley的计算机系、数学系和统计系共同出资购买了这台PDP-11/45。 在1974年元月份,第四版本(Version 4)的Unix 磁带交付学校使用,学校当时指定当时上研究生的Keith Standiford将这个操作系统安装到了这台机器上。
尽管身在Purdue的Ken Thompson没有参与在Berkeley安装这一操作系统,因为他要负责在其他地方的安装系统,但是在Berkeley安装的系统上出现了几次奇怪的系统崩溃,因此很快就需要像他这样富有经验的专家来帮助解决。 当时Berkeley仅有一台300-波特率的声频耦合式的调制解调器,且没有自动应答功能,所以Thompson需要事先通过电话通知机房的Standiford,让他将电话线插入调制解调器中。 通过这种方法,Thompson可以从新泽西州远程地对崩溃了的系统进行调试。
许多次系统崩溃的原因在于磁盘控制器不能可靠地执行叠加搜索,与通常的文档搜索不同,Berkeley 的PDP-11/45计算机是Thomspson所遇到的首批在同一个控制器上有两个磁盘的系统之一! Thompson的远程调试也是后来延续的Berkeley和Bell实验室之间合作的第一个例子,Bell实验室的研究人员乐意助人,他们同意将他们的工作成果与Berkeley进行分享,这极大地加快了Berkeley软件的改进工作。
尽管Unix很快就开始运行起来,而且很可靠,但Berkeley计算机系、数学系和统计系之间的冲突很快就导致了新的问题:数学系和统计系想运行DEC的RSTS系统。经过多次讨论后,他们达成了妥协,每个系可以有每班8个小时的时间运行计算机系统,即Unix运行8个小时后,再运行16个小时的RSTS。 为促进公平性,运行时间段的切换每天进行,因此第一天Unix从上午8点运行到下午4点,然后是从第二天的下午4点到第二天的午夜,接着是第三天的凌晨到上午8点。 尽管这个时间表异乎寻常,但是学习操作系统课程的学生们更喜欢在Unix系统上做项目,而不是在批处理机上。
Eugene Wong教授和Michael Stonebraker教授都感到在批处理环境限制下的工作很别扭,因此他们的INGRES数据库项目成为第一组从批处理机移至Unix交互环境下开发的项目,但他们很快就发现了缺乏机器运行时间,而且在PDP-11/45上的需要在奇数小时才能进行工作的确让人忍受不了,因此在1974年的春天,他们购买了一台PDP-11/40以运行新的Unix Version 5。 随着1974年秋天第一个INGRES分发版的发行,INGRES项目小组成为计算机系中第一个发行软件的小组,在随后的六年中,他们一共交付了几百份INGRES磁带,大大地帮助了Berkeley在设计和建立真正系统领域树立起了良好的信誉。
尽管INGRES项目组后来不再使用PDP-11/45,但对使用机器的学生来讲,仍然存在运行机器时间的不足,为了弥补这种缺陷,Michael Stonebraker教授和Bob Fabry教授,从1974年6月开始着手为计算机系购买两台供教学使用的PDP-11/45。 1975年初,钱已到位,但几乎在同时,DEC发布了PDP-11/70,一种显得比PDP-11/45更高档的机器,因此原本计划在1975年秋天购买两台PDP-11/45的钱转而购买了一台PDP-11/70。 PDP-11/70交付学校使用时,碰巧Ken Thompson决定作一年的休假。California Berkely分校是Ken Thompson的母校,Ken Thompson决定去Berkely分校当访问教授。 后来Thompson 同Jeff Schriebman与Bob Kridle三人一道在新安装的PDP-11/70上合作开发了后来的Unix Version 6。
1975年的秋天,来了两位当时还不出名的研究生,他们是Bill Joy和Chuck Haley,两人立刻都对这一新的系统产生了兴趣,最初他们开始在一个Pascal系统上工作,该系统由Thompson在PDP-11/70机房调试时与机器集成在一起,他们扩展了并有效地改进了Pascal解释器,并使它成为学生们一个可选的一个编程系统,因为它具有极好的错误恢复机制和快速编译时间及运行时间(compile and execute time)。
随着Model 33 teletypes被ADM-3屏幕终端所取代,Joy和Haley开始感到ed编辑器存在的局限性,他们从伦敦的Queen Mary学院George Coulouris教授那里得到了一个名为em的编辑器,并开始着手开发一种每次一行的编辑器,名为ex。
1976年夏末,Thompson离开了Berkeley,而此时Joy和Haley开始对Unix的内核发生了浓厚的兴趣,在细心的Schriebman教授关照下,他们将来自 Bell实验室的经过了"五十次变化"磁带的修正和改进部分第一次成功地安装到了系统上。 他认真地研究了源代码,并建议完成几处小的改进,以在某种程度上解决内核瓶颈的问题?
早期发行版本
在人们对Pascal编译器上错误恢复工作感兴趣的同时,人们也开始提出了系统拷贝的需求。在1971年初,Joy完成恕?erkeley Software Distribution"的合并。 这个第一发行版包括Pascal系统,而且在Pascal源代码的一个难懂的子目录下,附上了编辑器ex。 过了一年,Joy作为发行组的秘书,寄出了大约三十份免费的系统拷贝。
这时出现了一些ADM-3a终端,它们提供屏幕定址光标的功能,Joy最终开始编写vi,为Berkeley带来一种基于屏幕的编辑器,但很快他就发现自己遇到了麻烦。在学校里,经费捉襟见肘是常有的事,老的设备从不会立刻被替换掉,Joy没有进行优化和更新几个不同终端的支持工作,而是决定采用一个小的解释器以重画屏幕,从而加强屏幕管理,此解释器由终端特性描述所驱动,此项工作的后来的结果是产生了termcap。
到1978年中期,软件发行版显然需要升级了,用户社团一直在不断扩大,在用户反馈意见的基础上,修改后的Pascal系统已明显变得更加健壮,并且它被分成了两个分支,以使其能运行在PDP-11/34s上,更新的结果就产生了"第二版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和其他十三个系里的同事共同提出了一份NSF提案,并将其他系的资金合并在一起,最终购买了一台VAX计算机。
最初的VAX运行的是DEC的VMS操作系统,但系里已习惯使用Unix环境,并想继续使用Unix, 所以在VAX到来不久, Fateman得到了由Bell实验室的John Reiser和Tom London开发的将Unix移植到VAX的32/V的拷贝。
尽管32/V在VAX机上提供了UnixVersion 7环境,但它不能很好地利用VAX硬件的虚拟内存能力,正象PDP-11系列中的早期机器一样,它是一种完全基于转换(swap-based)的系统。对于Berkeley的Mascsyma小组来说,缺少虚拟内存就意味着进程地址空间受限于物理内存的大小,在新的VAX机器上,最初物理内存为1 MB。
为了减轻这个问题所带来的矛盾, Fateman与Domenico Ferrari教授进行了讨论,Domenico Ferrari教授是Berkeley系统委员会的成员,他开始调查让Fateman的小组为Unix写一个虚拟内存系统的可能性。Ferrari教授有一位学生,名叫Ozalp Babaoglu,他开始寻找一些关于在VAX机器上实现设置分页系统的方法。 由于VAX机缺少参照位(reference bits),因此他的工作变得非常复杂。
当Babaoglu接近于完成他的第一个方法时,他与Bill Joy取得了联系,请Bill Joy帮助他理解Unix内核的复杂内容。 与Babaoglu的交流使Joy对其工作发生了兴趣,并帮助Babaoglu将代码集成到32/V中,后来又接着帮助进行调试工作。
不幸的是,Berkeley仅有一台VAX机, 这台机器既要用于系统开发,又要用于一般的工作。因此,在圣诞节的假期后几个星期里,具有忍耐心的用户群体发现他们自己开始交替地登录到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年12月,Joy 首先发布了将近100份拷贝的3BSD,即Berkeley的第一个VAX发行版。
Bell实验室的最后版本为32/V,以后来自AT&T的所有Unix版本,从最初的System III到后来的System V,都由注重稳定性的商业版本的不同组织管理。伴随着Unix的商业化,Bell实验室的研究员开始感到作为兴起的Unix研究的源头有些力不从心了。当研究社团继续修改Unix系统时,他们发现需要有一个组织能开发研究版。 由于Berkeley对Unix开发的介入很早,且具有发布基于Unix实用程序的历史,Berkeley很快步入并取代了先前Bell实验室的角色。
DARPA 支持
此时,在国防部高级研究项目署(Defense Advanced Research Projects Agency,DAPRA) 的规划者们的办公室里展开了一场对Berkeley工作起着重大影响的讨论,DARPA的早期成果之一是成功地建立了一个覆盖全国范围的计慊更多精彩文章及讨论,请光临枫下论坛 rolia.net
1973年11月,在Purdue大学召开的"操作系统原理研讨会"上,Ken Thompson 和Dennis Ritchie发表了第一篇关于Unix的论文。 当时California大学Berkeley分校的Bob Fabry教授也正好在会场上,他立刻对此发生了兴趣,并得到了一份操作系统的拷贝,准备在Berkeley分校进行实验。
当时,Berkeley仅有大型的计算机主机系统在做一些批处理工作。因此这项事业的第一个定单是得到一台PDP-11/45计算机,以运行当时的Unix Version 4。 Berkeley的计算机系、数学系和统计系共同出资购买了这台PDP-11/45。 在1974年元月份,第四版本(Version 4)的Unix 磁带交付学校使用,学校当时指定当时上研究生的Keith Standiford将这个操作系统安装到了这台机器上。
尽管身在Purdue的Ken Thompson没有参与在Berkeley安装这一操作系统,因为他要负责在其他地方的安装系统,但是在Berkeley安装的系统上出现了几次奇怪的系统崩溃,因此很快就需要像他这样富有经验的专家来帮助解决。 当时Berkeley仅有一台300-波特率的声频耦合式的调制解调器,且没有自动应答功能,所以Thompson需要事先通过电话通知机房的Standiford,让他将电话线插入调制解调器中。 通过这种方法,Thompson可以从新泽西州远程地对崩溃了的系统进行调试。
许多次系统崩溃的原因在于磁盘控制器不能可靠地执行叠加搜索,与通常的文档搜索不同,Berkeley 的PDP-11/45计算机是Thomspson所遇到的首批在同一个控制器上有两个磁盘的系统之一! Thompson的远程调试也是后来延续的Berkeley和Bell实验室之间合作的第一个例子,Bell实验室的研究人员乐意助人,他们同意将他们的工作成果与Berkeley进行分享,这极大地加快了Berkeley软件的改进工作。
尽管Unix很快就开始运行起来,而且很可靠,但Berkeley计算机系、数学系和统计系之间的冲突很快就导致了新的问题:数学系和统计系想运行DEC的RSTS系统。经过多次讨论后,他们达成了妥协,每个系可以有每班8个小时的时间运行计算机系统,即Unix运行8个小时后,再运行16个小时的RSTS。 为促进公平性,运行时间段的切换每天进行,因此第一天Unix从上午8点运行到下午4点,然后是从第二天的下午4点到第二天的午夜,接着是第三天的凌晨到上午8点。 尽管这个时间表异乎寻常,但是学习操作系统课程的学生们更喜欢在Unix系统上做项目,而不是在批处理机上。
Eugene Wong教授和Michael Stonebraker教授都感到在批处理环境限制下的工作很别扭,因此他们的INGRES数据库项目成为第一组从批处理机移至Unix交互环境下开发的项目,但他们很快就发现了缺乏机器运行时间,而且在PDP-11/45上的需要在奇数小时才能进行工作的确让人忍受不了,因此在1974年的春天,他们购买了一台PDP-11/40以运行新的Unix Version 5。 随着1974年秋天第一个INGRES分发版的发行,INGRES项目小组成为计算机系中第一个发行软件的小组,在随后的六年中,他们一共交付了几百份INGRES磁带,大大地帮助了Berkeley在设计和建立真正系统领域树立起了良好的信誉。
尽管INGRES项目组后来不再使用PDP-11/45,但对使用机器的学生来讲,仍然存在运行机器时间的不足,为了弥补这种缺陷,Michael Stonebraker教授和Bob Fabry教授,从1974年6月开始着手为计算机系购买两台供教学使用的PDP-11/45。 1975年初,钱已到位,但几乎在同时,DEC发布了PDP-11/70,一种显得比PDP-11/45更高档的机器,因此原本计划在1975年秋天购买两台PDP-11/45的钱转而购买了一台PDP-11/70。 PDP-11/70交付学校使用时,碰巧Ken Thompson决定作一年的休假。California Berkely分校是Ken Thompson的母校,Ken Thompson决定去Berkely分校当访问教授。 后来Thompson 同Jeff Schriebman与Bob Kridle三人一道在新安装的PDP-11/70上合作开发了后来的Unix Version 6。
1975年的秋天,来了两位当时还不出名的研究生,他们是Bill Joy和Chuck Haley,两人立刻都对这一新的系统产生了兴趣,最初他们开始在一个Pascal系统上工作,该系统由Thompson在PDP-11/70机房调试时与机器集成在一起,他们扩展了并有效地改进了Pascal解释器,并使它成为学生们一个可选的一个编程系统,因为它具有极好的错误恢复机制和快速编译时间及运行时间(compile and execute time)。
随着Model 33 teletypes被ADM-3屏幕终端所取代,Joy和Haley开始感到ed编辑器存在的局限性,他们从伦敦的Queen Mary学院George Coulouris教授那里得到了一个名为em的编辑器,并开始着手开发一种每次一行的编辑器,名为ex。
1976年夏末,Thompson离开了Berkeley,而此时Joy和Haley开始对Unix的内核发生了浓厚的兴趣,在细心的Schriebman教授关照下,他们将来自 Bell实验室的经过了"五十次变化"磁带的修正和改进部分第一次成功地安装到了系统上。 他认真地研究了源代码,并建议完成几处小的改进,以在某种程度上解决内核瓶颈的问题?
早期发行版本
在人们对Pascal编译器上错误恢复工作感兴趣的同时,人们也开始提出了系统拷贝的需求。在1971年初,Joy完成恕?erkeley Software Distribution"的合并。 这个第一发行版包括Pascal系统,而且在Pascal源代码的一个难懂的子目录下,附上了编辑器ex。 过了一年,Joy作为发行组的秘书,寄出了大约三十份免费的系统拷贝。
这时出现了一些ADM-3a终端,它们提供屏幕定址光标的功能,Joy最终开始编写vi,为Berkeley带来一种基于屏幕的编辑器,但很快他就发现自己遇到了麻烦。在学校里,经费捉襟见肘是常有的事,老的设备从不会立刻被替换掉,Joy没有进行优化和更新几个不同终端的支持工作,而是决定采用一个小的解释器以重画屏幕,从而加强屏幕管理,此解释器由终端特性描述所驱动,此项工作的后来的结果是产生了termcap。
到1978年中期,软件发行版显然需要升级了,用户社团一直在不断扩大,在用户反馈意见的基础上,修改后的Pascal系统已明显变得更加健壮,并且它被分成了两个分支,以使其能运行在PDP-11/34s上,更新的结果就产生了"第二版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和其他十三个系里的同事共同提出了一份NSF提案,并将其他系的资金合并在一起,最终购买了一台VAX计算机。
最初的VAX运行的是DEC的VMS操作系统,但系里已习惯使用Unix环境,并想继续使用Unix, 所以在VAX到来不久, Fateman得到了由Bell实验室的John Reiser和Tom London开发的将Unix移植到VAX的32/V的拷贝。
尽管32/V在VAX机上提供了UnixVersion 7环境,但它不能很好地利用VAX硬件的虚拟内存能力,正象PDP-11系列中的早期机器一样,它是一种完全基于转换(swap-based)的系统。对于Berkeley的Mascsyma小组来说,缺少虚拟内存就意味着进程地址空间受限于物理内存的大小,在新的VAX机器上,最初物理内存为1 MB。
为了减轻这个问题所带来的矛盾, Fateman与Domenico Ferrari教授进行了讨论,Domenico Ferrari教授是Berkeley系统委员会的成员,他开始调查让Fateman的小组为Unix写一个虚拟内存系统的可能性。Ferrari教授有一位学生,名叫Ozalp Babaoglu,他开始寻找一些关于在VAX机器上实现设置分页系统的方法。 由于VAX机缺少参照位(reference bits),因此他的工作变得非常复杂。
当Babaoglu接近于完成他的第一个方法时,他与Bill Joy取得了联系,请Bill Joy帮助他理解Unix内核的复杂内容。 与Babaoglu的交流使Joy对其工作发生了兴趣,并帮助Babaoglu将代码集成到32/V中,后来又接着帮助进行调试工作。
不幸的是,Berkeley仅有一台VAX机, 这台机器既要用于系统开发,又要用于一般的工作。因此,在圣诞节的假期后几个星期里,具有忍耐心的用户群体发现他们自己开始交替地登录到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年12月,Joy 首先发布了将近100份拷贝的3BSD,即Berkeley的第一个VAX发行版。
Bell实验室的最后版本为32/V,以后来自AT&T的所有Unix版本,从最初的System III到后来的System V,都由注重稳定性的商业版本的不同组织管理。伴随着Unix的商业化,Bell实验室的研究员开始感到作为兴起的Unix研究的源头有些力不从心了。当研究社团继续修改Unix系统时,他们发现需要有一个组织能开发研究版。 由于Berkeley对Unix开发的介入很早,且具有发布基于Unix实用程序的历史,Berkeley很快步入并取代了先前Bell实验室的角色。
DARPA 支持
此时,在国防部高级研究项目署(Defense Advanced Research Projects Agency,DAPRA) 的规划者们的办公室里展开了一场对Berkeley工作起着重大影响的讨论,DARPA的早期成果之一是成功地建立了一个覆盖全国范围的计慊更多精彩文章及讨论,请光临枫下论坛 rolia.net