本文2001年由台湾“网络农夫”所写,其人生平不祥,此文受鸟哥大力推崇,两人应该相识。文章写得很不错,应该是查了很多资料整理而成的,美中不足的是好多语句不通顺,国考语文绝对不及格,哈哈。

0.我的准备:

0.1、批处理系统和分时系统:

批处理系统,又名批处理操作系统。批处理是指用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行。这种采用批量处理作业技术的操作系统称为批处理操作系统。批处理操作系统分为单道批处理系统和多道批处理系统。批处理操作系统不具有交互性,它是为了提高CPU的利用率而提出的一种操作系统。

分时操作系统 (time-sharing system),“分时”的含义:分时是指多个用户分享使用同一台计算机。多个程序分时共享硬件和软件资源。分时操作系统是指在一台主机上连接多个带有显示器和键盘的终端,同时允许多个用户通过主机的终端,以交互方式使用计算机,共享主机中的资源。分时操作系统是一个多用户交互式操作系统。分时操作系统,主要分为三类:单道分时操作系统,多道分时操作系统,具有前台和后台的分时操作系统。分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。

UNIX发展简史

1.先前的一个理想

UNIX系统自1969年 Ken ThompsonKen Thompson 与 Dennis RitchieDennis Ritchie 在美国贝尔电话实验室(Bell Telephone Laboratories )发展出雏形至今,已历经近 30 来年。而 "UNIX" 这个字典上查不到其原意的怪字,其实是戏谑 MULTICS(MULTiplexed Information and Computing System)操作系统的大而无当所产生的谐音字。

在 1957 年 10 月,前苏联发射了第一枚人造卫星,此举让当时的美国总统艾森豪威尔决定投下巨额的经费用以支持及发展科学,美国高等研究计划署(ARPA,Advanced Research Projects Agency )便是在这个背景下设立的,该单位负责推动系统发展等相关计划,成为当时美国电子计算器发展的重要推手。

1960年代是大型计算机的发展年代,当时的麻省理工学院因最先实现了兼容分时系统(CTSS, Compatible Time-Sharing System),在电子计算器领域享有相当崇高的地位。

1963年,麻省理工的里克莱德(J. C. R. Licklider,1915~1990 )推动了 MAC计划,MAC 以 IBM的大型计算机做为主体,连接了将近 160台终端机,这些终端机就四散在学区以及教职员的家中,可以让 30 位使用者同时共享计算机资源。这项计划到了 1965 年便不堪负荷,于是麻省理工便决定开发更大型的分时计算机系统。新的计划便是—— MULTICS. 一个计算机史上最为庞大的分时计算机系统,企图连接 1000 部终端机,支持 300位使用者同时上线的分时计算机系统。她面临的是,操作系统的分时观念还在各学术与研究机构探索成形中,计算机硬件亦需重新设计的双重挑战。

当时,麻省理工原本找 IBM来配合这项计划,但 IBM正忙着应付自己的问题而无意配合MULTICS 计划。此时,通用电子公司(General Electric Company) 
也就是奇异公司正好在发展自己的大型主机,见机不可失,便极力邀请麻省理工参予她们的 GE 645 大型主机的规格制定。有了奇异热心主动的计算机硬件配合,麻省理工又找来了不能贩售计算机却人才济济的贝尔电话实验室来负责承包软件工程。于是乎,MULTICS 的计划便在 1965 年由麻省理工学院、奇异公司及贝尔电话实验室这三个成员开始共同发展。

1969年,MULTICS 计划在历经四年的奋战后,仍旧未达到原先规划设计的理想,贝尔电话实验室决定退出计划。功能未达原始设计理想的 MULTICS还是安装在奇异公司的 GE645 大型计算机上供麻省理工使用。奇异公司在该计划草草结束后不到一年便完全淡出大型计算机市场。日后,MULTICS 计划被嘲讽为Many Unnecessarily Large Table In Core Simultaneously.

农夫我个人认为, MULTICS计划诞生在大型计算机将开始鼎沸的1965年,夭折于大型计算机最为辉煌的1969年。她如果适时在1960年代末期成功的话,绝对可以助长当时已经普遍被计算机权威人士视为理想的「计算机公用事业」,至少可以让大型计算机的发展与资源集中的应用模式就不至于会在 1970 年代初期就迅速萎缩。因为 MULTICS计划如果成功,至少能让当时的大型计算机的应用规模大上10倍左右。然而,MULTICS 计划失败了。她严重地打击了当时依赖大型计算机主机的计算机公用事业业者在发展上的信心。更由于没有相似的计划后继进行,使得集中式的大型计算机主机没有明显的使用效能提升,而加速催化计算器工业的转变,以寻找新的道路。另一方面,MULTICS 计划失败的经验亦让当时参与该计划的软件工程师们得到相当宝贵的经验与正面的影响。几年后,就在 AT&T ,MULTICS 计划这个不同凡响的失败换来的一个不同凡响的成功。一个戏谑她的名字诞生了…… UNIX.

2.一个游戏的开始

1969年贝尔实验室的计算器科学研究中心(Computing Science Research Center )成员退出 MULTICS计划的同时,贝尔实验室本身其实也没有一套完善便利的交谈式计算器服务环境。在其中不少工程师们也正为了改善程序设计环境努力着, Ken Thompson 、Dennis Ritchie和其同事们在当时草拟一个新的档案系统架构,这个档案系统也就是早期的UNIX操作系统的档案系统的前身。当时的Ken Thompson忙着使用 Fortran语言将原本在 Multics系统中开发的game叫 "Space Travel" (太空旅游)转移到GECOS System上开发。 当时GECOS System大型计算机的CPU Time相当昂贵(一秒要 75 块美金),同时控制 "spaceship"(宇宙飞船) 的效果不甚理想,于是Ken Thompson不得不寻找替代的开发环境。Thompson看上了一台很少被人使用的Digital Equipment Corporation PDP-7 迷你计算机,当时 PDP-7使用的是 Graphic-II 显示器,具有不错的图形处理能力。Ken Thompson、Dennis Ritchie和Brian kernighan等人联手将程序设计转移到 PDP-7型计算机上。

Ken Thompson在移转工作环境的同时为了得到较好的发展环境,便与Dennis Ritchie共同动手设计一套包含 File System、Process Subsystem 及一小组 Utility的操作系统,当时这套系统仅能支持 2个使用者使用。由于贝尔实验室对于 MULTICS计划失败的阴霾还未消散, Brian Kernighan这位仁兄开玩笑地戏称这套新的操作系统为UNiplexed Information and Computing System,缩写为UNICS,之后大家取谐音便叫她为"UNIX",没想到这个开玩笑的名字会被人叫到今天。

【注】:Brian Kernighan也是UNIX的早期主要贡献者之一,在一篇1998年对他的采访记录中我们可以看到他在开发人员系统中被分配了一个9号ID,至于为什么能够这么早地加入到开发小组中来他自己也不太清楚,因为当时他还名不见经卷。

【注】:GECOS System是大型计算机操作系统,1962由通用电气开始开发。最开始叫做GECOS (the General Electric Comprehensive Operating Supervisor),后来更名为GCOS(General Comprehensive Operating System)。

【注】:PDP,是DEC公司生产的小型机系列的代号。PDP是“Programmed Data Processor”(程序数据处理机)的首字母缩写。在计算机发展的初期,整个计算机产业就已发展到了相当的规模,但是计算机只有一些资金雄厚的公司和机构才能用的起,因为那时的计算机都是庞然大物,功能强大而复杂(当然不能与现代计算机相比)。1960年,DEC推出了首个以阴极管为监视器的小型机产品PDP-1设备。PDP-1简化了大型机的功能,而且价格低廉。1965年推出了世界上第一台真正意义的小型计算机PDP-8。随后,DEC又推出了世界上首款采用晶体管的小型机PDP-8/1。1970年,DEC推出了第一款16位小型机PDP-11。(美国工业协会评为“70年代最具影响力的技术产品”)。PDP系列计算机使DEC公司成为了小型机时代的领头羊。由于小型机的推广,降低计算机产品的使用成本,使得更多的人获得了接触计算机的机会,大大促进了计算机产业以及相关行业的发展,并直接促进了个人计算机(PC)的发展。尽管DEC公司因为推动计算机大众化而获得成功,DEC却因为反对个人计算机的出现而遗憾的成为了历史的笑柄。随着比小型机还小型化的苹果等大批个人计算机出现时,DEC业绩一落千丈。20世纪90年代后,DEC被康柏电脑收购(康柏最终被惠普收购)。由DEC开创的小型机时代宣告结束,小型机市场多被高性能个人计算机占领,目前选择小型机的客户多有特别的需求。

3.初期的自由发展

事实上该套 "UNIX" 系统在当时仅是私下的被使用,也并没有得到多大的重视,一直到1971年的一个正式的计划,UNIX才正式被搬上台面。

1970 年,当时贝尔实验室的专利部门(Patent department )缺乏一套文书处理系统,为了设计开发的需要,于是买了一台PDP-11计算机。当时PDP-11计算机的交机过程并不顺利,处理器先到,硬盘则多等了好几个月。

当PDP-11一切准备妥当后,他们便将UNIX移植到拥有512K bytes硬盘的PDP-11/20型计算机上,并在此系统之下开发了一套文书处理工具。而这套工具便是后来nroff / troff的前身。那时的UNIX提供16K bytes给系统、8K bytes给使用程序,档案最大的极限是64K bytes. 而此套含有文书处理工具的系统,也正式获得贝尔实验室的专利部门采用,系统名称并被编为 "First Edition". 在 UNIX 移植成功后Thompson用B语言为它添加了Fortran Compiler,但因为B语言属于一种解译语言(interpretive language),执行成效并不是很好,于是Ritchie又将它—— Compiler 发展成可产生机器码、允许定义数据形态及结构,Ritchie 称它为 C语言。并在1973年以C语言改写全部UNIX原始程序,UNIX于是首度出现正式版本——V5(第五版)。

此时的 UNIX 慢慢地在贝尔实验室内部蔓延开来,装机数也变成了 25 部之多。

由于当时的贝尔实验室实际上是掌控在美国电信电话公司(AT&T)及其子公司西方电器公司的手上,实验室主要是负责研究改进西方电器公司制造的和美国电信电话公司在贝尔系统中使用的电信设备。同时根据军方合同,从事与国防有关的研究与改进的工作。而AT&T本身由于有反托拉斯法的限制并不能从事于任何有关计算机方面的销售,所以AT&T的主管阶层们对于当时UNIX的发展并没有太多的支持,因而当时贝尔实验室内部对于UNIX的发展并不是相当在意也无意于将之推广。不过为了应对实验室内各部门日益增加的 UNIX 使用者与相关技术支持需求,还是成立了UNIX system Group (简称 USG)。但该组织也只是提供技术上的支持,并未赋予继续发展的任务。所以当时的UNIX发展,全靠AT&T的工程师们的努力。这段期间UNIX的发展完全没有组织及系统性可言,而玩家尽是一些工程师们,于是乎种下了UNIX日后较难以被一般人所接受的命运。

4.走出贝尔实验室

1974年Thompson与Ritchie共同在Communications of the ACM发表了一篇UNIX论文"UNIX Time-Sharing System"得到相当大的回响。1975年UNIX发表第六版(V6),其提供的强大功能更胜过当时昂贵大计算机的操作系统,其最大特点是以高级语言写成,仅需要做少部份程序的修改便可移植到不同的计算机平台上。UNIX V6版本并附有完整的程序原始码在1976年正式从贝尔实验室内部传播到各大学及研究机构,UC Berkeley也就是依据这个版本开始研究并加以发展,并在1977年发表1BSD(1st Berkeley Software Distribution)版本的UNIX OS,其后续的发展更为UNIX OS贡献良多且影响深远,此点稍后再为你说明。

同年UNIX因它提供良好程序发展环境、网络传输服务与及时服务(Real-Time Services),而广得各电话公司采用。Interactive System Corporation更因Value Added Reseller(VAR)运用UNIX来强化办公室自动化环境,成为第一家应用UNIX操作系统的公司。此年UNIX亦被修改并第一次装到 Interdata 8/32 型计算机上。这也是 UNIX 操作系统首次安装在非 PDP型的计算机上。自此 UNIX 系统开始被移植改装到各型微处理机及新计算机上 。

5.一个稳定的基石

1978年 UNIX 发表对今日影响最重大的 UNIX 第七版(UNIX Time-Sharing System,Seventh Edition)也就是 V7.此版本包含 Fortran 77 compiler、Shell (只有Bourne Shell)、文件处理工具(nroff/troff 、roff、 MS mocro等)、UNIX-to-UNIX-file-Copy(用来支持两台UNIX机器间的档案传输)、数据处理工具(AWK 、SED 等强悍的工具)、除错工具(ADB )、程序发展工具(MAKE)、Lexical analyzer generator(LEX 、YACC等)、简单的绘图工具、并支持 C语言及 LINT verifier,主要执行于 PDP-11 及Interdata 8/32型计算机上。在当时那个年代来说其系统的架构与功能已经是相当的完备的了。Bourne Shell的原作者称她为 "improvement over all preceding and following Unices" ,在今日也有人称这个版本是"last true Unix".由此可见V7在UNIX发展里程上的扮演了相当重要的盘石角色。

在当时 DEC公司推出了一款32-bit supermini 主机—— VAX,搭配的 VAX的操作系统叫做VMS. 这款迷你级计算机的硬件无可挑剔(直到今日她的稳定度仍是被诸多老一辈的系统管理者所赞许的),但DEC对 VMS操作系统的支持性却让贝尔实验室的工程师们宁愿使用UNIX OS。 而这项工作则是由John Reiser和Tom London所共同完成。他们以V7为基础转移UNIX OS到VAX计算机上使用。这个版本被称为UNIX V32。同时为了转移的方便性,他们把32-bit 的VAX当成是大一点的PDP-11(因为DEC的PDF-11型计算机是16-bit ),同时为了执行的效率,V32放弃使用VAX硬件提供的一项 paging 功能(DEC的VMS OS有支持paging功能,也由于V32舍弃这项功能,所以V32没有虚拟内存的功能)。即使是如此,V32支持的地址已高达 4Gb。就这样没有支持paging功能的V32开始被广泛的安装在VAX的机器上运作。

DEC则是在 1984 年左右推出来自己的UNIX OS,叫做ULTRIX。

6.一个重要的延续及发展——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受邀回母校(柏克莱)当客座教授,科目就是 NIX。Thompson在校期间与Jeff Schriebman和Bob Kridle一起动手将新版的V6安装在PDP-11/70上。

1975年,一位密执安州大学的毕业生来到了柏克莱,他的名字就是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这项功能一起发表的话,上头的图可能就是遗照了。(意思是bill joy会被人骂死?)

当时有位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 eplacement的UNIX OS.

7.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 Control(作者是 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研究的高速的档案系统及扩展强化的虚拟内存功能;提供能分散处理的解译沟通机制;支持56Kbit的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。

8.商业化的不平坦历程—— 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在商业市场上的价值却出现了变化…….

9.让 UNIX 自由—— Networking Release 2

自从UNIX走出贝尔实验室后,研究机构与学术界就扮演了继承与发展的双重角色。在1979到1984年这段期间,UNIX的拥有者AT&T,对于学术界的授权政策尚可用「大方」来形容;同时也对学术界做某种程度的资助与合作。当时的学术界,得助于AT&T的大方授权与分享程序原始码,研习UNIX这个分时操作系统开始在学术界蔚为一股风气,甚至可以说是一种潮流或一种流行。其中,像柏克莱BSD对UNIX的贡献,就是一个公开的事实。但早期的BSD使用者,是必需向AT&T支付授权金的。这点,从产业界资助学术界的角度来看是一点也不值得惊讶的。因为资金的援助为了就是取得其成果。所以当时基于AT&T原始码所发展的成果,均归属AT&T所有。也因而AT&T掌控了UNIX的所有权。到了1984年以后,AT&T开始更积极地保护UNIX的原始码;AT&T甚至还要求各大学的使用人员签订保密条约,想藉此防堵UNIX的原始码从学术单位流出,以影响到商业利益。

在DARPA资助柏克莱从事BSD OS发展的过程中,诞生了TCP/IP这项广泛影响现今计算机与因特网的通讯协议。由于DARPA对于资助开发的软件项目有明文规定接受资助者必须无条件地释出程序的原始码,所以TCP/IP的原始码与程序的版权并不属于AT&T所有。这点在现今看来其意义是不凡的。也正因为有此一条件,柏克莱的CSRG(Computer System Research Group)因应BSD Vendors需求,在1989年6月发表了Networking Release 1,她包含了TCP/IP source code以及一些工具,提供给当时正开始起步发展的个人计算机制造业者使用。Networking Release 1授权收费仅1000美元,而且不需要AT&T的商业授权,取而代之的是柏克莱大学的开放式授权。

农夫我看柏克莱授权方式,几乎可以说是一种良心式授权方式,在实质的运用上她完全没有限制。她允许原始码或执行档在任何情况下修改并且允许将修改后的程序从事商业行为而无须任何回馈,当然也没有绝对要求开发者必须要释出原始码。如果你改都不改地加以贩售,她也没有意见。但有一点不可违反的限制,就是必须在衍生物的版权声明上提到柏克莱的贡献。这种做法在日后,也没有多少改变,而这样的授权方式也成为了柏克莱的授权精神。

Networking Release 1 所得到的响应实在远超过CSRG成员的预估。这个不算差的成果,让柏克莱的 CSRG 觉得有必要释出更多属于 BSD的程序原始码。于是激发CSRG的成员 Keith Bostic开始组织志愿工作者从事一项就算不能够惊天也足以动地的程序写作计划。计划的主要目的在当时还真让人感到有点" 乌扥邦"。农夫我个人喜欢戏称她为「解放 UNIX 计划」。Marshall Kirk McKusick这项计划大体上分成两个部分,操作系统工具(Utility ) 与核心(kernal)。而且参与人员必须在完全没有参考 AT&T UNIX source code的情况下进行撰写程序的工作。因为只有在这种条件下,写出来的程序代码,才能摆脱AT&T的着作权束缚。当然这也绝对不是一件容易的事。Keith Bostic四处奔走,组织了超过四百名热心的软件工程师,经过了长达十八个月的奋战之后,操作系统主要的工具与链接库才算改写完成。Marshall Kirk McKusick负责改写当时的核心程序。但系统核心的部分,由于长期以来柏克莱与AT&T一直就彼此分享UNIX原始码,所以各自所加上去的程序代码早已混杂难分了。为了彻底的厘清双方各自撰写的部分,他们下决心进行逐行比对。首先花了好几个月的时间,将核心程序每一行每一个档案都建立转换比对的数据库。然后接着进行移除来自AT&T 32V的程序代码并改写她们。即使是如此,仍旧有6只程序让他们束手无策,因而无法将核心程序彻底完整地改写。最后,他们还是决定将他们所做的所有成果发表。授权的方式沿用Networking Release 1的授权方式,授权的磁带依旧是1000美金。这个版本就是Networking Release 2 ,也有人称她为4.3BSD NET/2。发表的时间在1991年6月。虽然这是个不完整的操作系统。 但,在今日看来,却有着划时代的意义—— UNIX OS自由了。

10.谁是" 老大哥" ——侵权诉讼

AT&T的USL在1991年正式转变了一家公司。当然,这意味着她将更重视UNIX在商业上的利益。当时的UNIX OS早以称霸高阶的计算机市场;从Cray 超级计算机、IBM 的大型计算机主机、迷你级计算机到工作站,均是UNIX 的天下(这一点,直到现在21世纪,仍旧没有多大的改变)。即使在80年代中期后开始迅速发展的个人计算机,虽然当时被戏称为是玩具计算机,但也仍旧有像XENIX[注1], Interactive UNIX[注2]等几种向AT&T缴过税的商业化版本。

【注1】Intel在1978年发表了4.77MHz的8086微处理器。1980年,Microsfot便以V7为基础,发表了在微处理器 (microprocessor-based computers)上执行的版本也就是XENIX. 到了1982年,一家成立于1979年的软件公司Santa Cruz Operation,成为微软的合作开发厂商。之后她这家公司便一直致力于这个领域里延续到今日,缩写就是今日 的 SCO.
【注2】Interactive IS/1 (以 V6 为主体)。这个版本后来演化为比较让人熟知的名字
—— Interactive UNIX. 后来因为Sun Microsystems致力发展Solaris for X86,被财力雄厚的Sun Microsystems合并了,如今已经不见踪迹了。

UNIX简直就是AT&T的一棵摇钱树。

但这一切在Networking Release 2(以后简写为 Net/2)出现之后,起了变化!首先,一位i386处理器的玩家名叫Bill Jolitz,在拿到Net/2之后,很快地就将Net/2kernal缺少的程序补齐了。BSD kernal这时可算是大功告成了。

当时Bill Jolitz将他们放在因特网与其它人共享他的原始码,并且得到了不少正面的响应。由于这个版本是使用在i386微处理器的个人计算机上,所以就命名为386BSD,在1992年2月正式发表。这该算是BSD首度功能完整且版权独立的版本。Bill Jolitz是当时唯一的kernal维护者。在他离开这个计划之后,继起的BSD玩家们延续了这个版本,日后衍生了FreeBSD,然后又从其中分支出裂NetBSD版本。另一个将 Net/2完整化的是一家叫Berkeley Software Design,Incorporated的公司,简称BSDI[注3]. 由于Net/2的版权声明中,宣称其源文件的合法性,并且允许使用者,从事衍生物的商业行为,所以BSDI将他们修改后的系统命名为BSD/386. 他们并将成果打包,刊登广告以995美金的售价贩售BSD/386,而且含原始码,而且还提供免费服务电话的咨询,电号号码是"1-800-ITS-Unix". 时间大约是在1992年1月。当时,USL的System V含source code的价格大约是BSD/386价格的一百倍左右。这可惊动了老大哥AT&T。并且正式地书面严重警告BSDI 违反的注册商标法(电话号码里有Unix的字眼),并公开宣称AT&T拥有UNIX 的注册商标。BSDI再次刊登广告公开反击AT&T ,声明她的商业行为完全合法。果不期然,BSDI的博命演出让双方手牵手走上法庭。

【注3】就在我反复修改这段文稿的时候,BSDI这家公司已经被 Wind River 合并了,改名为iXsystems.2001/05/03

AT&T的USL控告BSDI剽窃他的UNIX原始码,要求法官还他公道。在听证会上,BSDI祭出早已准备好的法宝;自己在无任何AT&T source code的条件下写出的合法档案,以及来自于BSD授权的Net/2 source code。 前面的证据足以让BSDI立于不败之地,后者让BSDI置身在暴风圈外。BSDI的辨证获得了法官的采信。但At&T岂会就此罢手,他们将焦点转移到Net/2的BSD授权上面,并且重新提出控诉,被告的对象变成了BSDI与柏克莱大学;同时AT&T还申请法庭禁止BSDI一切的BSD/386销售行为。就这样,柏克莱大学也对号入座了。

农夫我认为,毕竟AT&T是营利企业,她得维护她的商业利益,这点是天经地义的事。

虽然柏克莱大学与AT&T在UNIX发展上有着非比寻常的关系,但商业利益是现实的。企业资助学术界的研究计划,多半是基于商业上的考量;我相信,学术界的少数高层在寻求奥援时不会不明白这一点,即使这有可能让大部分的学术人士无法接受或不愿接受。不管如何,这一记醒棍倒再次挑起了这一点事实。

成为被告的柏克莱大学,只好无奈地面对这场无情的商业诉讼。但他们也同样不甘示弱地对AT&T的Systerm V的著作权提出质疑,因为在AT&T的UNIX授权声明中完全没有提及柏克莱的贡献。所以柏克莱反控AT&T违反BSD的授权条款。柏克莱的反击让战况越演越烈,诉讼案一路从AT&T的老家新泽西州的联邦法庭打到柏克莱大学的所在地加州法院,但依旧没有结果。

到了1993年,官司还在进行中,但AT&T却已经打包USL准备以一亿美元的价格找寻买主了。最后AT&T将USL以八千万美元代价的卖给了Novell。而新买主也当仁不让地加入了这场混战。但却也因此,战况露出了一线平息的曙光。

诉讼案在1994年1月宣告终结,以庭外和解收场。实际的协议内容仅有当事人知情。如果从胜负的角度来看这场诉讼,或许柏克莱与BSDI是胜利的一方。但如果从UNIX发展的脚步来看这场诉讼,就可能根本没有任何一方是胜利者了。

事件平息后的1994年6月,柏克莱的CSRG风光地发表了BSD 4.4 Lite。在这个版本中,有70个档案引用的一份新修改的版权声明,阐述的AT&T与BSD双方的贡献,并明确地给予档案自由散播的权利。但不知为何,应该有能力完整发表的BSD 4.4 Lite还是缺少了三的档案。当时,农夫我也很高兴地买了一本BSD4.4-Lite CD-ROM Companion ,含一张光盘,现在拿在手上,看来总觉得有点呆。

掌握UNIX source code以及UNIX商标的Novell,将UNIX商标交给X/open管理,自己则发展了一套命名为UNIXWave的操作系统。推出后市场的反应并不热络。不久,Novell与SCO接头,在SCO保证继续支持UNIXWare的条件下,UNIX在1995年二次易主,新主人是SCO[注4]。

【注4】 2001 年 5月 4日,Caldera International , Inc. 正式并购了 SCO的服务器软件部及SCO 专业服务部这两个部门,新的控股公司名为 Caldera, Inc

11.GNU 计划——开启了新大道

在1983年9月27日,麻省理工学院人工智能实验室(MIT Artificial Intelligence Lab )的Richard M. Stallman(以下简称为 RMS),在net.unix-wizards以及net.usoft的newsgroups贴上了一份标题为 "new UNIX implementation" 的讯息。这就是如今广为人知的GNU计划的开始。在那则被视为「GNU 宣言」草稿的讯息中,RMS阐述个人的理念与计划的目的——完成一个命名为 GNU的 "Free UNIX"操作系统,希望藉此寻唤理念想同者共襄盛举。

「如果我喜欢一个程序的话,那我就应该分享给其它喜欢这个程序的人」,这是RMS的座右铭。此点也似乎正是促使其决心运作 GNU计划的原动力。当时的RMS是想写出一套免费的操作系统。能够让每个人如空气般地自由的取得与使用。

选择“UNIX兼容”为设计的主要原因是;RMS表明,UNIX并非他个人理想中的操作系统;他仅阅读一些相关数据,但未曾使用过(MIT 使用操作系统是"ITS——Incompatible Timesharing System");但他认为UNIX操作系统具有优良的本质特性。他相信如果GUN与UNIX兼容将更容易令人接受。所以RMS承袭MIT用递归缩写字命名的传统为GNU释译界定Gnu is Not Unix。

1984年1月,RMS为了展开他的理想而决心离开已经待了十几年的MIT AI Lab。当他向他老板Patrick Winston辞职时,Winston试图挽留地说:「你还是要辞职?」。RMS 不为所动的回答:「是」。Winston显然得到预料中的答案,于是接着说出了思绪里关怀:「你想要保留你的钥匙吗?」。于是RMS就从此开始专心地" 失业" 在他的老东家。一个人窝在他原来的旧办公室中,规划着如何开始他的GNU计划。但想开发一套新的UNIX兼容的操作系统,即使是财力、人力资源雄厚的顶级计算机公司,也绝对不是一件说想做就能够做到的事。

当拟妥他的「GNU 宣言」之后,他正式向全世界呼唤、表明其将所为。种子落地了。

GNU计划的第一只程序要算是孤军奋战的RMS在1984年9月开始撰写的Emacs编辑器。

1985年初,Emacs已进入可用的阶段。于是 RMS将她放在pre.ai.mit.edu这台机器的FTP server上,免费地让amonymous的到访者自由下载使用。不久后,Emacs强扞的功能引发了一些玩家们的注意,由于附上了source code,玩家们能自己动手为它添加新的功能或除错,很快地,Emacs获得了相当热烈的回响。随着名声渐播,开始有人相继地加入GNU计划的程序写作阵营。"此道不孤" 让RMS倍感振奋与喜悦。

当时的因特网并未十分普及。所以有不少人虽然对 Emacs程序有兴趣,却没办法经由FTP的管道取得,因而有人透过其它管道向RMS询问能如何取得时,这可让当时处在失业状态的RMS 看到能够支持他继续奋战下去的资金来源——贩售" 自由软件"。

一个人、一个独立的个人,要想在现实中实行自己的理念,最先得接受"现实"。唯有接收它是事实,实行理念的道路,才获得比较稳固的起点与开始。 ——网络农夫如是说。

想着、写着,脑中突然掠过一丝感受(所以顺便记录在这个地方)。不管如何,RMS 真的开始以一卷磁带 150 块美金的代价,服务有需要的人。也因为基于这个开始与基础, RMS当年便创立了自由软件基金会——Free Software Foundation(以后简称为FSF)。这对GNU计划而言,意味着它已跨越个人化理念的构思阶段,并进入了有群体组织化的运作阶段。

同时,RMS也制定出了属于GNU计划的软件版权。RMS使用"copyleft" 用来形容她,其实就是与着作版权(copyright) "对立" 之意。这也就是 GPL——General Purpose License(通用公共授权)。

GNU计划的种子,就这样生根发芽了。

从贩卖GNU自由软件扩展到其它的相关软件与参考手册,提供软件技术支持,并接受计算机器材与资金的捐助(捐助者依法享有一定额度的减税),为企业代训软件人才。FSF努力地开辟财源却仍旧是运作资金捉襟见肘。RMS本人并不支薪。而FSF聘请软件工程师的待遇,也仅是软件业界薪资水平的一半。但这绝不表示GNU计划的软件水准是半桶水。GCC编译器是GNU计划在1987年3月开始发表的免费编译器,当时的版本是0.9测试版。如今最新的版本则是3.0。 这个编译器可以说是今日自由软件写作的基石。GCC所解译的机器码,其可靠度绝对不逊于商业化的编译器产品,甚至可以说是优越过商业编译器。

90年代初,GNU计划暨已完成了质量与数量均十分可观的系统工具。这些工具被广泛的使用在当时各种工作站的UNIX系统上。虽然已有如此的成果,但仍称不上是完整的操作系统。他们缺少一支属于自己的"核心程序(kernal)".

UNIX在4.2BSD之后,越写越大kernal开始带来一些不便与问题。因而当时便开始有另一个写作理念逐渐在发展——微核心(microkernal )理念。

1985年,卡内基大学(Carnegie Mellon University简称 CMU)暨以4.3BSD为发展基础,将之一拆为二,分成micro kernal 与 single server两个部分。

该计划的名称为"Mach"。这个计划成了微核心发展的技术先河。GNU原本有意直接采用"Mach"计划的成果。但无奈,这一等,从80年代中等到了90年代初,在几经商量之后,他们打算采用微核心的写法,成立自己的计划,名称叫"Hurd". 这项计划,如今仍在奋战中,虽然microkernal的做法让他们吃了不少苦头;但可喜的是0.2,0.3 测试版本已经发表。直到21世纪的今日,RMS依旧努力不懈地耕耘着他的梦土。尽管他本人认为还尚未完全地实现他的「GNU 宣言」;但他执着于理念的行动,已凝聚了相当数量的自由软件写作族群们,在这些人与群体的努力下,一条新的大道其实已经被开拓出来了,她通往一个新的世界。大道旁,枝叶已然繁茂的树荫下,可口果实一如礼物般地为所有的人成熟。人们称她——Linux.

12.新世代的焦点—— Linux

1990年代中期,因特网因出现 World Wide Web,HTML这种新型态的应用,而开始迅速的延烧全世界。一夕间,架设因特网主机的需求激增。这时有一套可以免费取得,并且能让 x86计算机升格成UNIX级主机的免费操作系统,开始了吸引全世界目光。在传媒与计算机工程师们的竞相走告下成为了这个新世代的焦点,这个新的名字就是Linux.

当然,这套媒体吹捧的当红炸子鸡,可非一人之功,一夕即成的。Linux是一套版权彻彻底底与AT&T无关的UNIX-like OS。原始核心程序的创作者是芬兰籍的Linus Benedict Torvalds(现今他仍旧是核心程序的维护者)。操作系统里大部分的系统工具,来自于RMS行之多年的GNU计划成果,以及其它的自由软件写作计划产生的软件,如X Windows、KDE 、Gnome等窗口接口。由于构成操作系统的主要部分均奉行GPL版权,所以市面上有相当多样的安装套件,目前较广为人知的有RedHat 、Slackware 、SuSE、Debian GNU/Linux ……。也因此,这套操作系统,可说是包含了无数字自由软件写作者的共同心血。

如此的一套操作系统其实也就是RMS多年来想要达成的宿愿—— "Free UNIX"。所以,RMS本人总认为该将名称改做"GNU/Linux".因此,也有人用 GNU/Linux来称呼这个操作系统。

Torvalds打从十岁出头当他外公的"键盘手"开始,到了中学就已成了不折不扣的计算机迷。1990年,当他就读赫尔辛基大学(University of Helsinki) 信息系二年级,选修一门「C 语言与UNIX 操作系统」的课程,因而疯狂地迷恋上了UNIX操作系统。那年正好赫尔辛基大学正好添购的一台VAX,安装Ultrix操作系统。连接了16台终端机供授课师生使用。有所限制的计算机资源,对一位计算机迷来说是极痛苦忍受的。Torvalds开始作梦想"搞" 一套可以在自己计算机上跑的 UNIX。

1991年1月,Torvalds利用"学生贷款"加上去年的"耶诞红包" ,以分期付款方式买了一台386 DX33个人计算机(他的第三台计算机)。他选择安装的操作系统则是在学术界颇负盛名的Minix[ 注5]. 在几番奋战下,就绪运作的Minix OS功能性却多方面无法满足Torvalds的需求,因而激发了他重头来的欲念。于是Torvalds在他的386 DX33上逐步探索并撰写出他自己的核心程序。他网络上释放的第一个版本是1991年9月17日的0.01 版。虽然她是个简陋的开始,但由于Torvalds本人持续维护与网友回馈贡献,原本一个人所撰写的核心程序竟在不知不觉中逐渐转化成"虚拟团队"的运作模式。

【注5】 Minix是 Andrew Tanenbaum 教授为教学目的而撰写的操作系统。

然而,一般计算机使用者,需要的是可安装运作的操作系统(农夫我习惯以" 安装套件" 称之),而非单一的操作系统核心。当时英国的曼彻斯特电算中心(Manchester Computer Center,简称 MCC)便根据0.12版核心程序制作了一套名为MCC Imterin的安装套件。随后各地的安装套件有如雨后春笋般地出现;如美国德州Dave Safford的TAMU(Texas A&M University)版、Martin Junius的MJ 版、Peter McDonald的SLS(Softlanding Linux Sustem)版等非商业安装套件的出现。在安装需求日增的情况下,Linux安装套件创造出了一块新的需求市场。这一线商机,让非商业安装套件的也开始出现在商业市场上。Slackware大概可算是最早出现的商业安装套件了。到如今,商业与非商业的安装套件则已多得数不清了。

随着使用人数激增,核心程序的版本与功能也开始加速演化,但仍不失于稳健。1994年3月13 日,核心程序1.0正式发表。其安装套件在功能上的整合已急起直追当时商业版的UNIX OS。此时的Linux OS已拥有数十万名使用者。当时赫尔辛基大学还以此为由举办了一场名为"Linux首度正式发表会"。就在芬兰电视台与众多传媒的郑重其事的报导下, Torvalds成了芬兰人的自豪,Linux OS宛如刚诞生的"超新星" ,闪闪发亮地展现在众人眼前。

早期的Linux核心程序曾被Andrew Tanenbaum指出,过度紧密地与x86处理器结合,所以他认为Linux核心程序将无法移植到别的处理器上。这点显然与UNIX OS的可移植性大不相同。当时的情况的确是如此,这或多或少与Torvalds本人受限于拥有的硬件资源有关。

但当Linux的使用族群拓展开来之后,便开始有人主动地将她移植到不同的平台上。像Dave Miller即以不下于Torvalds狂热与学习精神将Linux成功地移植到SUN的SPARC工作站上。

此外如Amiga、Atari 、PowerPc 、MIPS R4000也陆续见到Linux的身影。 这些移植严格地从技术的角度来看,仅能说是"个案".但这已激发Torvalds的兴趣。
真正撼动Linux核心的移植是对Alpha处理器。

1994年 5月,在DEC使用者协会上,Digital的工程师John Hall(外号Maddog) 碰上了Torvalds ,双方一见如故。Maddog力劝Torvalds将Linux移植到 Alpha芯片上,并主动提供了一台Alpha计算机供Torvalds研究使用。当年可说是全世界最快的64-bits Alpha芯片是DEC引以为豪的一项成就,其架构与功能均优越过同一时期的Intel 32-bits处理器。这种技术性的挑战吸引了Torvalds的投入。这项移植,但这对原先以x86微处理器为写作基础的Linux核心程序而言,实在不是一件小工程。在Torvalds与DEC相关人员的将近一年奋战后,Linux核心程序脱胎换骨,成功地移植到Alpha处理器上(与 x86处理器使用同一套程序代码)。1995年3月,被戏谑是Linux'95的1.2 版核心程序正式发表,支持Intel x86 、DEC Alpha 、SUN SPARC 、MIPS等处理器。

1996年6月,核心程序版本由1.3直接跃升为2.0版。Torvalds本人正式钦定了一只"企鹅"作为Linux的标志。同时也开始支持对称式多重处理器(Symmetric Multi-Processing,简称SMP)架构的计算机;而支持的处理器则又多了Motorola 68k和PowerPc。在自由软件团体们的努力与计算机产业业界的支持投入之下,Linux 具备的功能逼近商业版UNIX OS。当然,Linux要达到"成熟"与"稳定",实际上还有好长的一段路要走。

时至今日,散播在全球各地的Linux虚拟发展团体,仍旧持续地发展中。能维持到什么时候?这在将来的历史自有答案。但至少在现今,一个RMS奋斗的目标——可自由分享程序代码的操作系统,已可贵地呈现在我们的眼前。在教育界可算是一套学习 UNIX 基础的好范本。

13.新文明世纪自由共享

到此,这一段关于 UNIX 发展的文字,已从过去的历史当中走回到了今日… … 21 世纪的今日。本文也接近尾声了。请诸位原谅农夫将以极为自身的历史感受,来作为本文的结语。

阅读与探究历史,是农夫个人在年轻时即有的一点小癖好。通常我无法忍受对自己喜好事物的缘由一无所知。所以我会想办法去探究她由谁所创、因何而生与发展的沿革。也正因为如此,我才会为 UNIX 这个当初我没能在英文字典上找的怪字,写了这么一篇文字。

然而在 UNIX 的发展过程当中,我惊讶地发现了一项有别于我探索 20 世纪历史的东西。

我相信诸君应该清楚,20世纪是人类文明史上最为血腥残暴的一段岁月。在其间,多数民族的上个世代所遭逢的苦难,都是空前的。哲学家柏林(Isaiah Berlin )回顾 20 世纪的感受,说了以下这样的一段话。

「我的一生——我一定得这么说一句——经历了二十世纪,却不曾遭逢个人苦难。

然而在我的记忆之中,它却是西方史上最可怕的一个世纪。」

的确,每当我阅读 20 世纪的相关史料,我就更能加倍地感受到这份莫名的幸运。我生长在台湾,这块回顾其历史仅能以" 悲土" 称之的岛上,她的苦难直至今日亦尚未完全结束。

尽管多数年轻的一代已然淡忘,来自何方,归往何处。

身为一个中国人,站立在这块似乎仍将被同胞武力相向的孤岛上……我已不清楚历史伤口会因得到同胞的爱而痊愈,还是再次因人类残暴掠夺的天性而迸裂……

抱歉,离题了。

我想说的是,在 20 世纪未的因特网时代中,我感受到了令人喜悦地,根源于心、跨越既有疆界藩篱的自由共享文明。这相较于 20 世纪初将" 战争" 视作为文明象征的人类而言,实属无价可贵的进展。即使这文明仍仅是刚播下的种子。 
但我相信,她将如贝聿铭所言:

「你永无法明确知道你已播种的东西何时可以收割;或许只有一次收成,或许可重复收成。你也许遗忘曾播种了些什么,一种经验,一种感受,与某人的关系,抑或一种哲学及一项传统。然后,忽然间就开花了,被全然不同的环境所唤醒。这种盛开可以冲破藩篱及整个时代。」

多希望亲眼看到,几个世代后的某日,人类彼此掠夺的行为如天花一般地在人类社会中绝迹;而,共享已成为人类整体奉行的道德公理。如果这样的一个社会是我们今日所企求的;那么,这个方向与希望,就值得你我花一生的精力去努力。

当然,这仅只是一个个人的希望,我也清楚这世间并非如此美好。但,如果因假设一件事物不可能做到,而决定不去做;那是假设得到胜利,而非真实的事实。

或许过去的历史,曾经证实正义、公理、平等与理想的胜利,不过是短暂的昙花一现;那又如何。只要我们不放弃希望,希望就有机会成为真实。今日,所有的美好均因此得来,明日也是。

这几年来,我已看到不少因特网上诸君们的努力。我也相信这崭新文明的种子,有朝一日将展现出令人赞叹、愉悦的美景。未来存在我们尚未发现的国度.

我相信,我们能发现未曾走过的通道,打开不曾打开的门,进入玫瑰园中……那会是一个崭新的文明。

[计算机、网络相关历史]unix简史的更多相关文章

  1. Linux 网络编程基础(1)--网络相关的数据结构及转化函数

    在Linux下进行网络编程,使用的语言一般为C.就个人感受而言,在Linux下进行网络程序的编写,重要的不是代码能力要多强,而是对Linux的网络编程思想的理解和对Linux网络数据结构的掌握.如果想 ...

  2. linux一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书)

    一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书) --------------------------目录-网络无关篇-目录-------------------------- 0001 修 ...

  3. unix简史及应用

    Unix 简史 1965年时,贝尔实验室(Bell Labs)加入一项由奇异电子(General Electric)和麻省理工学院(MIT)合作的计画:该计画要建立一套多使用者.多任务.多层次(mul ...

  4. netstat命令---输出网络相关的信息

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...

  5. 【Socket编程】Java中网络相关API的应用

    Java中网络相关API的应用 一.InetAddress类 InetAddress类用于标识网络上的硬件资源,表示互联网协议(IP)地址. InetAddress类没有构造方法,所以不能直接new出 ...

  6. dos命令:网络相关命令

    网络相关命令 一.Arp命令 1.介绍 ​ 显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表. 2.语法 ARP -s inet_addr eth_addr [if_addr] ARP ...

  7. [linux]netstat命令详解-显示linux中各种网络相关信息

    1.功能与说明 netstat 用于显示linux中各种网络相关信息.如网络链接 路由表  接口状态链接 多播成员等等. 2.参数含义介绍 -a (all)显示所有选项,默认不显示LISTEN相关-t ...

  8. Linux系统之网络相关的命令

    Linux系统之网络相关的命令 网络概述 网络:通过通信介质和通信设备 将分布不同地点的两台或多台计算机,经过相应的程序实现通信switch 交换机router 路由器网络的功能:数据通信:利用网络传 ...

  9. iOS网络相关知识总结

    iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...

随机推荐

  1. 从头开始一步一步实现EF6+Autofac+MVC5+Bootstarp极简的实现前后台ajax表格展示及分页实现

    本来是想试着做一个简单OA项目玩玩的,真是不做不知道,一做吓死人,原来以为很简单的事情,但是做起来不是忘这就是忘那的,有的技术还得重新温习.所以还是得记录.免得哪天电脑挂了,就全没有了. 开始是看了园 ...

  2. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  3. Dynamics AX 2012 R2 在AIF服务契约中使用DateTime

    Reinhard在AIF中使用DateTime作为服务契约的参数,与DotNet程序进行交互时,总是因为时区的问题,导致DotNet提交的System.DateTime与AIF中接收的DateTime ...

  4. if,else语句的运用

    1.求解一元二次方程 Console.WriteLine("求解一元二次方程:a*x*x+b*x+c=0"); Console.Write("请输入 a="); ...

  5. JAVA基础知识之JDBC——ResultSet的滚动和更新(statement的额外参数)

    ResultSet不仅可以内存中的一张二维表一样保存statement执行SQL的结果集,还能通过结果集修改DB的数据.ResultSetMetaData则可以用来获得ResultSet对象的相关信息 ...

  6. Code First Migrations更新数据库结构(数据迁移)

    背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建 (DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们 ...

  7. Database,Uva1592

    Peter studies the theory of relational databases. Table in the relational database consists of value ...

  8. [Mysql] mysql临时表corrupt

    问题描述 机房临时硬件问题, 机器掉电. 恢复后, 重启mysql进程, 结果出现core dump. 而且一直循环, 无法终止, 只能kill掉. backtrace如下. # service my ...

  9. nodejs系列(二)REPL交互解释 事件循环

    一.REPL交互解释 命令行中输入node启动REPL: > var x =2;undefined> do{x++;... console.log("x:="+x);. ...

  10. [css] 页面重构“鑫三无准则” 之“无宽度”准则

    原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]本文地址:http://www.zhangxinxu.com/wordpress/?p=1152 一 ...