相关文章
UNIX OS 简史
- 阅览次数:
- 文章来源: ChinaUnix.net
- 原文作者: 網路農夫
- 整理日期: 2004-11-11
- 发表评论
一个重要的延续及发展 -- BSD UNIX
时间回到 1973 年 11 月, Ken Thompson 和 Dennis Ritchie 在印第安纳
Purdue 大学的一场操作系统原理的座谈会。会场上、坐着一位柏克莱大学
(U.C. Berkeley)教授,名字叫 Bob Fabry。当天的 K&R 所发表的 UNIX 立
刻引发 Bob Fabry 的极度兴趣。当时的柏克莱还是处在使用大型计算机主机、批
次执行程序的阶段,并没有像 UNIX 这样的交谈式作业环境。会后,他便决定将
UNIX 带回柏克莱。
于是柏克莱的计算器科学、数学与统计三个系所合买的一台 PDP-11/45,准备用
来迎接 UNIX。1974 年 1 月,Bell Labs 寄来了一卷 V4 的磁带,学生 Keith
Standiford 便开始进行安装 V4 的工作。安装时 Standiford 碰到了问题,便转
向 Bell Labs 求援。人在新泽西州的 Thompson 便透过柏克莱这端速度只有
300-baud 的调制解调器在在线进行侦错。
在 UNIX 的发展史上,这是 Bell Labs 与 柏克莱的第一次接触。
完成除错后,V4 便顺利地在柏克莱这台新买的 PDP-11/45 计算机上工作了。当
时这台是三个系所合买的,计算器科学好不容易装上了 UNIX,却碰到数学与统计
系所要使用 DEC's RSTS system,所以在一阵协调后,UNIX 与 DEC's RSTS
system 以 8:16 小时的比例分配,供三个系所轮流使用。一段时日后,具交谈
式功能的 UNIX 在效能上的表现得到绝多数学生们喜爱,纷纷将自己的计划转向
UNIX 的时段。而一天占了 16 个小时的批处理时段却乏人问津。
当时 Eugene Wong 与 Michael Stonebraker 教授,看上了 UNIX 提供的便
利性,便打算将他们的 INGRES 数据库计划重原先批处理的计算机环境转移到
UNIX 系统上面。在 1974 年,他们为这执行计划添购了一台新的 PDP-11/40
计算机,上面安装了 V5。这个计划也就是柏克莱的第一个将作业环境转移到
UNIX 的案子。UNIX 作业环境的需求,在柏克莱迅速地成长。为了应付需求,
Michael Stonebraker 与 Bob Fabry 教授决定再申请购买两台 PDP-11/45。
1975 年初,DEC 推出 PDP-11/70,价格差不多等于两台 PDP-11/45,但功
能强过 PDP-11/45,所以他们便决定改购买一台 PDP-11/70。
这台机器引来了 Ken Thompson、碰上 Bill Joy 以及日后产生了 1BSD。她
就宛如是一块 UNIX 史上的地标,沿袭自 Bell Labs,竖立在柏克莱,承先启后
并开创新局。农夫个人认为,她应该被供在博物馆。
当这台机器在 1975 年终运达柏克莱时;同一时间,Thompson 受邀回母校(柏
克莱)当客座教授,科目就是 UNIX。Thompson 在校期间与 Jeff Schriebman
和 Bob Kridle 一起动手将新版的 V6 安装在 PDP-11/70。
Bill Joy1975 年,一位密执安州大学的毕业生来到了柏克莱,他的名字就是 Bill
Joy。当时 Joy 和同学 Chuck Haley (tar 就是他写的)喜欢一起泡在计算机房里
面,Thompson 也时常插上一脚。他们成功地改善了 Pascal 的解译与侦错的能
力,同时还提升了解译与执行的速度。另外换装上 ADM-3 的屏幕后,他们觉得
ed 文字编辑指令并不合用;于是根据另外一个相似的 em 指令,发展了自己的
觉得满意的文字编辑工具,也就是指令 ex。
1976 年夏天,Thompson 结束了他的休假回到 Bell Labs。此时的 Joy 和
Haley 已经开始着手探索 UNIX kernal,甚至还做了一些修改。1977 年初,
Joy 制作了一卷磁带,上头写着 "Berkeley Software Distribution.",这就是
1BSD。其中包含新的 Pascal compiler 与 ex 编辑器。
次年,来了几台新屏幕 -- ADM-3a,这种屏幕支持光标地址显示,Joy 在这种屏
幕上完成了有人爱不释手;有人恨之入骨的文字编辑器 -- vi。接着不久,Joy 便
发现一个问题,老旧的屏幕装备,还是会被用在其它的计算机上。为了支持上的
方便,Joy 针对此现象设计了一个接口,用来管理、支持不同的屏幕装备。这个
接口就是现在的 termcap。1978 年中,包含了功能加强的 Pascal 与 vi 及
termcap 的 "Second Berkeley Software Distribution," 也就是 2BSD,
迅速的取代了原先版本。1979 年,至少有 75 部 PDP-11 的机器上安装 2BSD
在运作着。自此在 DEC PDP-11 系列上执行的 BSD 版本便一直以 2.xBSD 作
为识别。由于 PDP-11 计算机实在相当长寿,持续到今日农夫我仍然在网络上发
现过关于 PDP 计算机的网站。似乎到今日它们仍旧在某些地方默默地工作着。
2.xBSD 最近的一次改版是在 1987 年,使用 4.3 BSD 为主架构改写,版本定
为 2.10 BSD。
在 BSD UNIX 中登场的重要功能当中,有一个直到今日仍然叫人又爱又恨的
指令 – vi。我接触过不少学习 UNIX OS 的人,大部分的人对 vi 的使用与掌握都
不算顺手,其中恨死这个指令的也大有人在,前些日子农夫我还看到某个网站公
开讨论起 vi 是否阻碍了 UNIX 的发展?实在夸张了一点!
Bill Joy 多次公开地说,他要是知道 vi 会如此受"欢迎"的话,他宁愿当初没有
写 vi 这只程序。不过 Bill Joy 也说过,当时他原本还想加入一项 Multiple
Windows in vi 的功能,不过当他在写这部分程序的时候,磁带机坏了,所以
Bill 只好在没有备份的情况下继续工作,想不到"屋漏偏逢连夜雨",程序写到一
半,他使用的硬盘也跟着挂了。在无可挽救又没有备份磁带的情况下,Bill 宣告放
弃为 vi 增加 Multiple Windows 这项功能。事后 Bill 为前一版的 vi 写好使用说
明后就继续作其它的事。所以 vi 就长成今天那付德性。农夫我认为这或许是福不
是祸!搞不好当初要是连 Multiple Windows 这项功能一起发表的话,上头的图
可能就是遗照了。
当时有位 Richard Fateman 教授,原先使用一台 PDP-10 上进行着他的
Macsyma 研究计划。但他需要更大的内存地址来执行程序,所以在 1978 年
初,他看上了当时迪吉多新发表的 VAX-11/780。好不容易,他联合了其它的部
门才凑足购买 VAX 的经费。刚开始时,机器原本安装的是 VMS 操作系统。不过
别的成员要执行 UNIX 操作系统,于是 Fateman 安装上了 V32。但问题来了,
V32 并不支持虚拟内存,Fateman 便找上了 Domenico Ferrari 教授,希望他
与他的研究小组能为 UNIX 加上这项功能。当时一位学生叫 Ozalp Babaoglu
,他想到了一些解决的方法似乎可行,但因为牵涉到 VAX 硬件与 UNIX kernal
的问题,于是他找上了 Joy 帮忙。就在只有一台 VAX 的状况下,他们努力奋战
着。1979 年 1 月,在 VAX 上支持虚拟内存的 UNIX 版本终于诞生,V32 从此
走入历史。紧接着 Peter Kessler 与 Marshall Kirk McKusick 为他加上了
Pascal;Joy 则动手将 2BSD 上的 ex、vi、C shell 等工具转移了过来。这个
版本就是 3BSD。一个首次支持虚拟内存、demand paging 和 page
replacement 的 UNIX OS。


UNIX 与 DARPA 交会
1970 年代末,美国国防部先进研究计划机构(Defense Advanced Research
Projects Agency -- 简称 DARPA)正在为 AI(Artificial Intelligence), VLSI
及计算器视觉等研究(vision research)找寻一个可共通作业的计算机环境。硬件
方面的首选是迪吉多的 VAX 主机。配合的操作系统是 VMS。这样的组合因拥有
相当接近 DARPA 需求的功能被列入优先的考量,但在 DARPA 与 DEC 商谈对
于 VMS 的支持事宜之后,DARPA 并没有得到满意的答案。这迫使他们考虑朝向
UNIX 发展。但当时 UNIX OS(指的就是32V) 搭配 VAX,最大的缺憾就是没有
支持虚拟内存;但此时已经有人克服了。
当时,Bob Fabry 教授写了一份建议书给 DARPA,建议他们以柏克莱支持虚拟
内存的 3BSD 为基础,发展成为计划所需。这份企划书引起了 DARPA 的高度兴
趣。随后 3BSD 也实际获得了 DARPA 相关计划成员们的良好风评,也因此最后
柏克莱大学打败了卡奈基梅隆大学与 BBN(Bolt Baranek & Newman, Inc.),
让 Bob Fabry 成功地获得了 DARPA 的资助合约。这份合约开始于 1980 年 4
月,为期 18 月。此后的 DARPA 便以 UNIX OS 为标准操作系统。Bob Fabry
教授在取得 DARPA 合约后,依约成立了一个支持机构,也就是 Computer
Systems Research Group 简称 CSRG。Bob Fabry 找上了 Bill Joy 来负责
软件开发。Joy 迅速地以先前的 3BSD 为基础,整合新的功能。如 Job Contro
l(作者是 Jim Kulp)、auto reboot、1K block file system。同时也整合入
Pascal compiler、Franz Lisp system、enhanced mail handling
system。这就是在 1980 年所发表的 4BSD。没多久她便被安装在将近 500 台
VAX 上。
DARPA 采用了这个版本作为当时 DARPA 的标准 UNIX 操作系统。
树大招风,当时,有位在 Stanford Research Institute 的仁兄叫 David
Kashtan,写了一份关于 VMS 与 BSD UNIX 在 VAX 上的执行效率评估。该份
报告指出 BSD UNIX 在效率上不如 VMS 来的好。Joy 知道这件事之后,花了不
到一个星期的时间,重新调整 UNIX kernal。然后也写了一份报告,证明他们的
BSD 在 VAX 上要比 VMS 优越多多。1981 年 6 月,这个 Joy 调整过的系统,
加上了 Robert Elz 写的 auto configuration,以 4.1BSD 的版本发表了。
当时的 DARPA 对柏克莱 4.1BSD 的表现相当满意,于是续签了两年的新约,金
额更是先前合约的 5 倍。其中有一半的金额用在资助柏克莱继续发展 BSD UNIX
。钱多的相对代价就是要求高。当时,DARPA 对 UNIX 的期望开出了明确的目
标;更迅速、更有效率的档案系统、支持程序可执行地址达 multi-gigabyte、提
供弹性的解译沟通能力、具整合支持网络能力。在此同时,为了达到计划的目
标,DARPA 成立的一个指导委员会;主要的成员有柏克莱的 Bob Fabry, Bill
Joy, Sam Leffler、BBN 公司的 Alan Nemeth and Rob Gurwitz、贝尔实验
室的 Dennis Ritchie、史丹佛大学的 Keith Lantz、卡内基.梅伦大学 Rick
Rashid、麻省理工学院 Bert Halstead、信息科学协会 Dan Lynch、DARPA
的 Duane Adams and Bob Baker 以及加州.洛杉矶大学的 Jerry Popek。
不久,Joy 便开始整合早先 BBN 的 Rob Gurwitz 所发表的 TCP/IP
protocols,不过他对 BBN 这些程序的执行效率并不满意,于是 Joy 与 Sam
Leffler 重新写的一版自己的程序。另外,并加入了一些支持网络的工具 rcp,
rsh, rlogin, rwho。他们称她为 4.1aBSD,这个版本并没有正式发表,在
1982年 4 月开始供内部使用。虽是如此,在 4.2BSD 未正式发表之前,她还是
繁殖的到处都是。6 月,4.1aBSD kernal 加上了新完成的档案系统,版本更新
为 4.1bBSD。
rcp, rsh, rlogin, rwho 这群指令。因安全机制上的理由,逐渐被另一群新的
指令群所取代,新的指令群叫 SSH (Secure Shell)。SHH 相关网址(http:
//www.ssh.org)。
1982 年的春季末,已厌倦了在柏克莱环境的 Bill Joy ,答应受邀加入当年刚创
办的 Sun Microsystems, Inc.,成为 SUN 的第四号创办人。那年的整个夏季
他就在两地奔走。之后他对修改中的弹性解译沟通机制及改写 UNIX kernal 到一
个段落之后,由 Leffler 接手了他的工作。由于合约期限的因素,Leffler 在
1983 年 4 月发表了 4.1cBSD ,提供给参予 DARPA 各项相关计划的成员试
用。6月,DARPA 的指导委员会第二次会议招开,验收与检讨最新版的 BSD 成
果。继续整合 UNIX 系统的 Leffler,在 1983 年 8 月,发表了 4.2BSD。她达
到了 DARPA 的预定的需求;足以应付 CAD/CAM 影像处理与 AI 研究的高速的
档案系统及扩展强化的虚拟内存功能;提供能分散处理的解译沟通机制;支持
56-Kbit 的 ARPA Internet 网络连结,以及 10-Mbit/s Ethernet 的局域网
络;还有经过重组架构已模块化的 kernal code ,提供更有效率的计算机平台移
植。
SUN 以生产 RISC 架构的工作站计算机为主,使用的正是以 BSD 为基础所的
UNIX OS。在当时以不逊色于大型计算机的多人多任务、具网络沟通功能的
UNIX OS、加上价格低廉的硬件(相对于 mini 级计算机而言),广获得工程界
的青睐,而 mini 级大计算机的命运自此注定开始逐渐式微。计算机软件的应用因
为有了网络于是也开始朝向 Client-Server 的架构发展。
1982 年,SUN 有了自己的操作系统 -- SunOS 1.0 -- 承袭自 4.1BSD。一
直到 1990 年 11 月,发表 SunOS 4.1.1 版同时冠上 Solaris 1.0 时,SUN
才算开始向 System V 版本靠拢。SunOS 4.1.1 可算是以 BSD 为主体再附加
上 System V 工具的 UNIX 混血儿。但这其实是个商业考量的过渡性做法(后文
会加以说明)。而 SunOS 4.1.x 版的字眼也仅延续到 1994 年的 SunOS 4.1.4
为止,她后继的版本是 Solaris 1.3。真正延续到今日的 Solaris 版本,则是始
于 1992 年 7 月的 Solaris 2.0(SUN OS 5.0)。
在商业有所成就的 SUN Microsystems 对 UNIX OS 的发展倒也做了些重大
贡献;如 1984 年发表的 NFS(Network File System)与其后在 1986 年发表的 PC-NFS。
商业化的不平坦历程 -- UNIX 版本的战争
UNIX 商业化实质上即意味着将产生各种独立化的 UNIX 版本,这点大概是最显
而易见的事实。如果以商品要具备独特性与独占性的利益来做考量的话,其实一
点也不意外。因此 UNIX 开始衍生的相当多的版本。这种现象,对使用者以开发
应用程序的厂商而言,已经造成了某成程度上困惑。然而,一种无所适从的无力
感其实才刚开始。
1984 年 1 月 1 日, AT&T 这个拥有 1495 亿美元资产、1,009,000 位员工的
庞大巨兽,终于被格林法官 (Harold H. Greene) 以反扥拉斯法 (antitrust) 强
制拆解成七家 RBOCs (Regional Bell Operating Companies) 。 AT&T 也
因而在一夕间解体成为区域性网络公司,从此失去了长途电话的垄断性地位。这
种时空的转变让 AT&T 对 UNIX 的态度有了 180 度的转变(其实,农夫我指的是
收费的态度)。
先前已经提过 70 年代初期的 AT&T,已经在长途电话市场上占有绝对垄断的优
势,因而被美国政府的限制不得涉足与从事计算机与其它行业,也正因而造就了
UNIX 发展初期的自由开放。直到 1979 年,AT&T 才宣布要将 UNIX 商业化的
计划。1981 年 11 月,AT&T 属下的 USG 发表了 System III。次年又更新为
System IV。稍后于 1983 年,AT&T 将 CRG, USG 合并成立了 UNIX
System Development Lab. 一般简称为 USL,从其名称就不难清楚她将要扮
演的角色。该年 System V 上市了。此时 AT&T 发觉每次版本更新都得花不少宣
传费,实在不划算,所以决定在 System V 以后,名字就不再做变动了。1984
年,System V Release 2 发表,简称为 SVR2。在这个版本中,才终于看到
来自 BSD 版本的 Virtual memory 功能,农夫我不得不惊叹 AT&T 的稳健作
风。SVR3 则是到了 1986 年才发表,随后 1987 年又发表了 SVR3.2。
1987 年,在工作站市场上已占有一席之地的 SUN,找上了 AT&T,打算将
System V 与 BSD 这两大版本归为一统。1988 年初,双方更签订了合作合约,
AT&T 取得 SUN 的一席董事,同时亦有权买下 SUN 百分之二十的股份。这项合
作计划,原本有机会整合当时版本纷乱的 UNIX OS。但那是理想。实际上这个计
划反而让 UNIX 族群里的其它成员恐慌万分,特别是 IBM、DEC、HP 这几个产
业龙头。为了抵制这项行动,他们组织了一个反对联盟。因此「开放软件基金
会」也就是 Open Software Foundation 简称 OSF 在 1988 年正式诞生;成
员除了前面的三巨头外,尚有多达三十几家计算机硬件制造厂商与系统咨询顾问
公司,也相继以行动投入到此反对的行列中。然而 AT&T 与 SUN 也不示弱地组
织了 UNIX International,也就是 UNIX 国际公司,成员数量虽然不比 OSF
阵营来的多,但如果她是 Intel、Toshiba、Unisys、Motorola、Fujitsu,这
几个大块头,那也是很够看头的。
企业自身的利益在现实世界里始终是以个体的考量为优先,所以这两大阵营始终
没能再达成任何共识,就连当时所制定的 UNIX 统一标准规格,严格来说也从不
曾被实现过。这种企业利益上的冲突与矛盾其实也存在于同一个阵营中不同的成
员之间。两大阵营对峙,可以说是 UNIX 有史以来最重大的产业冲突事件。由于
商业利益的政治考量大过技术问题的考量,也因此奠定了 UNIX 将继续分裂下去
的命运。 AT&T 在 1989 年发表了 SVR4,SUN 在日后也将她的 SunOS 4.1.
1 开始冠上 Solaris 的字眼,以行动靠拢 SVR4。OSF 则是在 1990 年发表了
OSF/1。UNIX 版本的问题因而更加混乱了。但有趣且可笑的是,开放系统 --
Open System,这个双方都标榜的理念与观念却因此在计算机产业界引起了回
响,这点倒是原先所始料未及的。
不久 AT&T 撤销了对 SUN 的投资,同一个阵营的成员彼此也因而劳燕分飞。
USL 在 1991 年正式转变了一家独立的商业公司。但 UNIX 在商业市场上的价值
却出现了变化...
上一篇:深入理解sizeof时间回到 1973 年 11 月, Ken Thompson 和 Dennis Ritchie 在印第安纳
Purdue 大学的一场操作系统原理的座谈会。会场上、坐着一位柏克莱大学
(U.C. Berkeley)教授,名字叫 Bob Fabry。当天的 K&R 所发表的 UNIX 立
刻引发 Bob Fabry 的极度兴趣。当时的柏克莱还是处在使用大型计算机主机、批
次执行程序的阶段,并没有像 UNIX 这样的交谈式作业环境。会后,他便决定将
UNIX 带回柏克莱。
于是柏克莱的计算器科学、数学与统计三个系所合买的一台 PDP-11/45,准备用
来迎接 UNIX。1974 年 1 月,Bell Labs 寄来了一卷 V4 的磁带,学生 Keith
Standiford 便开始进行安装 V4 的工作。安装时 Standiford 碰到了问题,便转
向 Bell Labs 求援。人在新泽西州的 Thompson 便透过柏克莱这端速度只有
300-baud 的调制解调器在在线进行侦错。
在 UNIX 的发展史上,这是 Bell Labs 与 柏克莱的第一次接触。
完成除错后,V4 便顺利地在柏克莱这台新买的 PDP-11/45 计算机上工作了。当
时这台是三个系所合买的,计算器科学好不容易装上了 UNIX,却碰到数学与统计
系所要使用 DEC's RSTS system,所以在一阵协调后,UNIX 与 DEC's RSTS
system 以 8:16 小时的比例分配,供三个系所轮流使用。一段时日后,具交谈
式功能的 UNIX 在效能上的表现得到绝多数学生们喜爱,纷纷将自己的计划转向
UNIX 的时段。而一天占了 16 个小时的批处理时段却乏人问津。
当时 Eugene Wong 与 Michael Stonebraker 教授,看上了 UNIX 提供的便
利性,便打算将他们的 INGRES 数据库计划重原先批处理的计算机环境转移到
UNIX 系统上面。在 1974 年,他们为这执行计划添购了一台新的 PDP-11/40
计算机,上面安装了 V5。这个计划也就是柏克莱的第一个将作业环境转移到
UNIX 的案子。UNIX 作业环境的需求,在柏克莱迅速地成长。为了应付需求,
Michael Stonebraker 与 Bob Fabry 教授决定再申请购买两台 PDP-11/45。
1975 年初,DEC 推出 PDP-11/70,价格差不多等于两台 PDP-11/45,但功
能强过 PDP-11/45,所以他们便决定改购买一台 PDP-11/70。
这台机器引来了 Ken Thompson、碰上 Bill Joy 以及日后产生了 1BSD。她
就宛如是一块 UNIX 史上的地标,沿袭自 Bell Labs,竖立在柏克莱,承先启后
并开创新局。农夫个人认为,她应该被供在博物馆。
当这台机器在 1975 年终运达柏克莱时;同一时间,Thompson 受邀回母校(柏
克莱)当客座教授,科目就是 UNIX。Thompson 在校期间与 Jeff Schriebman
和 Bob Kridle 一起动手将新版的 V6 安装在 PDP-11/70。
Bill Joy1975 年,一位密执安州大学的毕业生来到了柏克莱,他的名字就是 Bill
Joy。当时 Joy 和同学 Chuck Haley (tar 就是他写的)喜欢一起泡在计算机房里
面,Thompson 也时常插上一脚。他们成功地改善了 Pascal 的解译与侦错的能
力,同时还提升了解译与执行的速度。另外换装上 ADM-3 的屏幕后,他们觉得
ed 文字编辑指令并不合用;于是根据另外一个相似的 em 指令,发展了自己的
觉得满意的文字编辑工具,也就是指令 ex。
1976 年夏天,Thompson 结束了他的休假回到 Bell Labs。此时的 Joy 和
Haley 已经开始着手探索 UNIX kernal,甚至还做了一些修改。1977 年初,
Joy 制作了一卷磁带,上头写着 "Berkeley Software Distribution.",这就是
1BSD。其中包含新的 Pascal compiler 与 ex 编辑器。
次年,来了几台新屏幕 -- ADM-3a,这种屏幕支持光标地址显示,Joy 在这种屏
幕上完成了有人爱不释手;有人恨之入骨的文字编辑器 -- vi。接着不久,Joy 便
发现一个问题,老旧的屏幕装备,还是会被用在其它的计算机上。为了支持上的
方便,Joy 针对此现象设计了一个接口,用来管理、支持不同的屏幕装备。这个
接口就是现在的 termcap。1978 年中,包含了功能加强的 Pascal 与 vi 及
termcap 的 "Second Berkeley Software Distribution," 也就是 2BSD,
迅速的取代了原先版本。1979 年,至少有 75 部 PDP-11 的机器上安装 2BSD
在运作着。自此在 DEC PDP-11 系列上执行的 BSD 版本便一直以 2.xBSD 作
为识别。由于 PDP-11 计算机实在相当长寿,持续到今日农夫我仍然在网络上发
现过关于 PDP 计算机的网站。似乎到今日它们仍旧在某些地方默默地工作着。
2.xBSD 最近的一次改版是在 1987 年,使用 4.3 BSD 为主架构改写,版本定
为 2.10 BSD。
在 BSD UNIX 中登场的重要功能当中,有一个直到今日仍然叫人又爱又恨的
指令 – vi。我接触过不少学习 UNIX OS 的人,大部分的人对 vi 的使用与掌握都
不算顺手,其中恨死这个指令的也大有人在,前些日子农夫我还看到某个网站公
开讨论起 vi 是否阻碍了 UNIX 的发展?实在夸张了一点!
Bill Joy 多次公开地说,他要是知道 vi 会如此受"欢迎"的话,他宁愿当初没有
写 vi 这只程序。不过 Bill Joy 也说过,当时他原本还想加入一项 Multiple
Windows in vi 的功能,不过当他在写这部分程序的时候,磁带机坏了,所以
Bill 只好在没有备份的情况下继续工作,想不到"屋漏偏逢连夜雨",程序写到一
半,他使用的硬盘也跟着挂了。在无可挽救又没有备份磁带的情况下,Bill 宣告放
弃为 vi 增加 Multiple Windows 这项功能。事后 Bill 为前一版的 vi 写好使用说
明后就继续作其它的事。所以 vi 就长成今天那付德性。农夫我认为这或许是福不
是祸!搞不好当初要是连 Multiple Windows 这项功能一起发表的话,上头的图
可能就是遗照了。
当时有位 Richard Fateman 教授,原先使用一台 PDP-10 上进行着他的
Macsyma 研究计划。但他需要更大的内存地址来执行程序,所以在 1978 年
初,他看上了当时迪吉多新发表的 VAX-11/780。好不容易,他联合了其它的部
门才凑足购买 VAX 的经费。刚开始时,机器原本安装的是 VMS 操作系统。不过
别的成员要执行 UNIX 操作系统,于是 Fateman 安装上了 V32。但问题来了,
V32 并不支持虚拟内存,Fateman 便找上了 Domenico Ferrari 教授,希望他
与他的研究小组能为 UNIX 加上这项功能。当时一位学生叫 Ozalp Babaoglu
,他想到了一些解决的方法似乎可行,但因为牵涉到 VAX 硬件与 UNIX kernal
的问题,于是他找上了 Joy 帮忙。就在只有一台 VAX 的状况下,他们努力奋战
着。1979 年 1 月,在 VAX 上支持虚拟内存的 UNIX 版本终于诞生,V32 从此
走入历史。紧接着 Peter Kessler 与 Marshall Kirk McKusick 为他加上了
Pascal;Joy 则动手将 2BSD 上的 ex、vi、C shell 等工具转移了过来。这个
版本就是 3BSD。一个首次支持虚拟内存、demand paging 和 page
replacement 的 UNIX OS。


UNIX 与 DARPA 交会
1970 年代末,美国国防部先进研究计划机构(Defense Advanced Research
Projects Agency -- 简称 DARPA)正在为 AI(Artificial Intelligence), VLSI
及计算器视觉等研究(vision research)找寻一个可共通作业的计算机环境。硬件
方面的首选是迪吉多的 VAX 主机。配合的操作系统是 VMS。这样的组合因拥有
相当接近 DARPA 需求的功能被列入优先的考量,但在 DARPA 与 DEC 商谈对
于 VMS 的支持事宜之后,DARPA 并没有得到满意的答案。这迫使他们考虑朝向
UNIX 发展。但当时 UNIX OS(指的就是32V) 搭配 VAX,最大的缺憾就是没有
支持虚拟内存;但此时已经有人克服了。
当时,Bob Fabry 教授写了一份建议书给 DARPA,建议他们以柏克莱支持虚拟
内存的 3BSD 为基础,发展成为计划所需。这份企划书引起了 DARPA 的高度兴
趣。随后 3BSD 也实际获得了 DARPA 相关计划成员们的良好风评,也因此最后
柏克莱大学打败了卡奈基梅隆大学与 BBN(Bolt Baranek & Newman, Inc.),
让 Bob Fabry 成功地获得了 DARPA 的资助合约。这份合约开始于 1980 年 4
月,为期 18 月。此后的 DARPA 便以 UNIX OS 为标准操作系统。Bob Fabry
教授在取得 DARPA 合约后,依约成立了一个支持机构,也就是 Computer
Systems Research Group 简称 CSRG。Bob Fabry 找上了 Bill Joy 来负责
软件开发。Joy 迅速地以先前的 3BSD 为基础,整合新的功能。如 Job Contro
l(作者是 Jim Kulp)、auto reboot、1K block file system。同时也整合入
Pascal compiler、Franz Lisp system、enhanced mail handling
system。这就是在 1980 年所发表的 4BSD。没多久她便被安装在将近 500 台
VAX 上。
DARPA 采用了这个版本作为当时 DARPA 的标准 UNIX 操作系统。
树大招风,当时,有位在 Stanford Research Institute 的仁兄叫 David
Kashtan,写了一份关于 VMS 与 BSD UNIX 在 VAX 上的执行效率评估。该份
报告指出 BSD UNIX 在效率上不如 VMS 来的好。Joy 知道这件事之后,花了不
到一个星期的时间,重新调整 UNIX kernal。然后也写了一份报告,证明他们的
BSD 在 VAX 上要比 VMS 优越多多。1981 年 6 月,这个 Joy 调整过的系统,
加上了 Robert Elz 写的 auto configuration,以 4.1BSD 的版本发表了。
当时的 DARPA 对柏克莱 4.1BSD 的表现相当满意,于是续签了两年的新约,金
额更是先前合约的 5 倍。其中有一半的金额用在资助柏克莱继续发展 BSD UNIX
。钱多的相对代价就是要求高。当时,DARPA 对 UNIX 的期望开出了明确的目
标;更迅速、更有效率的档案系统、支持程序可执行地址达 multi-gigabyte、提
供弹性的解译沟通能力、具整合支持网络能力。在此同时,为了达到计划的目
标,DARPA 成立的一个指导委员会;主要的成员有柏克莱的 Bob Fabry, Bill
Joy, Sam Leffler、BBN 公司的 Alan Nemeth and Rob Gurwitz、贝尔实验
室的 Dennis Ritchie、史丹佛大学的 Keith Lantz、卡内基.梅伦大学 Rick
Rashid、麻省理工学院 Bert Halstead、信息科学协会 Dan Lynch、DARPA
的 Duane Adams and Bob Baker 以及加州.洛杉矶大学的 Jerry Popek。
不久,Joy 便开始整合早先 BBN 的 Rob Gurwitz 所发表的 TCP/IP
protocols,不过他对 BBN 这些程序的执行效率并不满意,于是 Joy 与 Sam
Leffler 重新写的一版自己的程序。另外,并加入了一些支持网络的工具 rcp,
rsh, rlogin, rwho。他们称她为 4.1aBSD,这个版本并没有正式发表,在
1982年 4 月开始供内部使用。虽是如此,在 4.2BSD 未正式发表之前,她还是
繁殖的到处都是。6 月,4.1aBSD kernal 加上了新完成的档案系统,版本更新
为 4.1bBSD。
rcp, rsh, rlogin, rwho 这群指令。因安全机制上的理由,逐渐被另一群新的
指令群所取代,新的指令群叫 SSH (Secure Shell)。SHH 相关网址(http:
//www.ssh.org)。
1982 年的春季末,已厌倦了在柏克莱环境的 Bill Joy ,答应受邀加入当年刚创
办的 Sun Microsystems, Inc.,成为 SUN 的第四号创办人。那年的整个夏季
他就在两地奔走。之后他对修改中的弹性解译沟通机制及改写 UNIX kernal 到一
个段落之后,由 Leffler 接手了他的工作。由于合约期限的因素,Leffler 在
1983 年 4 月发表了 4.1cBSD ,提供给参予 DARPA 各项相关计划的成员试
用。6月,DARPA 的指导委员会第二次会议招开,验收与检讨最新版的 BSD 成
果。继续整合 UNIX 系统的 Leffler,在 1983 年 8 月,发表了 4.2BSD。她达
到了 DARPA 的预定的需求;足以应付 CAD/CAM 影像处理与 AI 研究的高速的
档案系统及扩展强化的虚拟内存功能;提供能分散处理的解译沟通机制;支持
56-Kbit 的 ARPA Internet 网络连结,以及 10-Mbit/s Ethernet 的局域网
络;还有经过重组架构已模块化的 kernal code ,提供更有效率的计算机平台移
植。
SUN 以生产 RISC 架构的工作站计算机为主,使用的正是以 BSD 为基础所的
UNIX OS。在当时以不逊色于大型计算机的多人多任务、具网络沟通功能的
UNIX OS、加上价格低廉的硬件(相对于 mini 级计算机而言),广获得工程界
的青睐,而 mini 级大计算机的命运自此注定开始逐渐式微。计算机软件的应用因
为有了网络于是也开始朝向 Client-Server 的架构发展。
1982 年,SUN 有了自己的操作系统 -- SunOS 1.0 -- 承袭自 4.1BSD。一
直到 1990 年 11 月,发表 SunOS 4.1.1 版同时冠上 Solaris 1.0 时,SUN
才算开始向 System V 版本靠拢。SunOS 4.1.1 可算是以 BSD 为主体再附加
上 System V 工具的 UNIX 混血儿。但这其实是个商业考量的过渡性做法(后文
会加以说明)。而 SunOS 4.1.x 版的字眼也仅延续到 1994 年的 SunOS 4.1.4
为止,她后继的版本是 Solaris 1.3。真正延续到今日的 Solaris 版本,则是始
于 1992 年 7 月的 Solaris 2.0(SUN OS 5.0)。
在商业有所成就的 SUN Microsystems 对 UNIX OS 的发展倒也做了些重大
贡献;如 1984 年发表的 NFS(Network File System)与其后在 1986 年发表的 PC-NFS。
商业化的不平坦历程 -- UNIX 版本的战争
UNIX 商业化实质上即意味着将产生各种独立化的 UNIX 版本,这点大概是最显
而易见的事实。如果以商品要具备独特性与独占性的利益来做考量的话,其实一
点也不意外。因此 UNIX 开始衍生的相当多的版本。这种现象,对使用者以开发
应用程序的厂商而言,已经造成了某成程度上困惑。然而,一种无所适从的无力
感其实才刚开始。
1984 年 1 月 1 日, AT&T 这个拥有 1495 亿美元资产、1,009,000 位员工的
庞大巨兽,终于被格林法官 (Harold H. Greene) 以反扥拉斯法 (antitrust) 强
制拆解成七家 RBOCs (Regional Bell Operating Companies) 。 AT&T 也
因而在一夕间解体成为区域性网络公司,从此失去了长途电话的垄断性地位。这
种时空的转变让 AT&T 对 UNIX 的态度有了 180 度的转变(其实,农夫我指的是
收费的态度)。
先前已经提过 70 年代初期的 AT&T,已经在长途电话市场上占有绝对垄断的优
势,因而被美国政府的限制不得涉足与从事计算机与其它行业,也正因而造就了
UNIX 发展初期的自由开放。直到 1979 年,AT&T 才宣布要将 UNIX 商业化的
计划。1981 年 11 月,AT&T 属下的 USG 发表了 System III。次年又更新为
System IV。稍后于 1983 年,AT&T 将 CRG, USG 合并成立了 UNIX
System Development Lab. 一般简称为 USL,从其名称就不难清楚她将要扮
演的角色。该年 System V 上市了。此时 AT&T 发觉每次版本更新都得花不少宣
传费,实在不划算,所以决定在 System V 以后,名字就不再做变动了。1984
年,System V Release 2 发表,简称为 SVR2。在这个版本中,才终于看到
来自 BSD 版本的 Virtual memory 功能,农夫我不得不惊叹 AT&T 的稳健作
风。SVR3 则是到了 1986 年才发表,随后 1987 年又发表了 SVR3.2。
1987 年,在工作站市场上已占有一席之地的 SUN,找上了 AT&T,打算将
System V 与 BSD 这两大版本归为一统。1988 年初,双方更签订了合作合约,
AT&T 取得 SUN 的一席董事,同时亦有权买下 SUN 百分之二十的股份。这项合
作计划,原本有机会整合当时版本纷乱的 UNIX OS。但那是理想。实际上这个计
划反而让 UNIX 族群里的其它成员恐慌万分,特别是 IBM、DEC、HP 这几个产
业龙头。为了抵制这项行动,他们组织了一个反对联盟。因此「开放软件基金
会」也就是 Open Software Foundation 简称 OSF 在 1988 年正式诞生;成
员除了前面的三巨头外,尚有多达三十几家计算机硬件制造厂商与系统咨询顾问
公司,也相继以行动投入到此反对的行列中。然而 AT&T 与 SUN 也不示弱地组
织了 UNIX International,也就是 UNIX 国际公司,成员数量虽然不比 OSF
阵营来的多,但如果她是 Intel、Toshiba、Unisys、Motorola、Fujitsu,这
几个大块头,那也是很够看头的。
企业自身的利益在现实世界里始终是以个体的考量为优先,所以这两大阵营始终
没能再达成任何共识,就连当时所制定的 UNIX 统一标准规格,严格来说也从不
曾被实现过。这种企业利益上的冲突与矛盾其实也存在于同一个阵营中不同的成
员之间。两大阵营对峙,可以说是 UNIX 有史以来最重大的产业冲突事件。由于
商业利益的政治考量大过技术问题的考量,也因此奠定了 UNIX 将继续分裂下去
的命运。 AT&T 在 1989 年发表了 SVR4,SUN 在日后也将她的 SunOS 4.1.
1 开始冠上 Solaris 的字眼,以行动靠拢 SVR4。OSF 则是在 1990 年发表了
OSF/1。UNIX 版本的问题因而更加混乱了。但有趣且可笑的是,开放系统 --
Open System,这个双方都标榜的理念与观念却因此在计算机产业界引起了回
响,这点倒是原先所始料未及的。
不久 AT&T 撤销了对 SUN 的投资,同一个阵营的成员彼此也因而劳燕分飞。
USL 在 1991 年正式转变了一家独立的商业公司。但 UNIX 在商业市场上的价值
却出现了变化...
下一篇:Photoshop调色,制作阿宝色彩的练习
