先前的一个理想
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 还是安 装在奇异公司的 GE 645 大型计算机上供麻省理工使用。奇异公司在该计划草草 结束后不到一年便完全淡出大型计算机市场。日后,MULTICS 计划被嘲解为 Many Unnecessarily Large Table In Core Simultaneously。
农 夫我个人认为, MULTICS 计划诞生在大型计算机将开始鼎沸的 1965 年,夭 折于大型计算机最为辉煌的 1969 年。她如果适时
在 1960 年代末期成功的话, 绝对可以助长当时已经普遍被计算机权威人士视为理想的『计算机公用事业』, 至少可以让大型计算机的发展与资源集中的应用模式就不至于会在 1970 年代初 期就迅速萎缩。因为 MULTICS 计划如果成功,至少能让当时的大型计算机的应 用规模大上 10 倍左右。然而,
MULTICS 计划失败了。她严重地打击了当时依赖 大型计算机主机的计算机公用事业业者在发展上的信心。更由于没有相似的计划 后继进行,使得集中式的大型计算机主机没有明显的 使用效能提升,而加速催化 计算器工业的转变,以寻新的道路。另一方面,MULTICS 计划失败的经验亦让 当时参与该计划的软件工程师们得到相当宝贵的经验与正面的影响。
几年后,就在 AT&T,MULTICS 计划这个不同凡响的失败换来的一个不同凡响的 成功。一个戏谑她的名字诞生了 …. UNIX。
一个游戏的开始
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 Equipm
ent Corporation PDP-7 迷你计算机,当时 PDP-7 使用的 是 Graphic-II 显示器,具有不错的图形处理能力。Brian kernighan于是 Ken Thompson 便与 Dennis Ritchie 连手将程序设计转移到 PDP-7 型计算机上。 Ken Thompson 在移转工作环境的同时为了得到较好的发展环境,便与 Dennis Ritchie 共同动手设计一套包含 File System、Process Subsystem 及一小组 Utility 的操作系统,当时这套系统仅能支持 2 个使用者使用。由于贝尔 实验室对于 MULTICS 计划失败的阴霾还未消散, Brian Kernighan 这位仁兄 开玩笑地戏称这套新的操作系统为 UNiplexed Information and Computing System,缩写为 UNICS,之后大家取谐音便叫她为 “UNIX”,没想到这个开玩 笑的名字会被人叫到今天。
初期的自由发展
事实上该套 “UNIX” 系统在当时仅是私下的被使用,也并没有得到多大的重视, 一直到 1971 年的一个正式的计划,UNIX 才正式被搬上台面。
PDP-11/201970 年,
当时贝尔实验室的专利部门(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 日后较难以被一般人所接受的命 运。
走出贝尔实验室
中国最强音杨承熹1974 年 Thompson 与 Ritchie 共同在 Communications of the ACM 发表 了一篇 UNIX 论文 “UNIX Time-Sharing System” 得到相当大的回响。 1975 年 UNIX 发表第六版(V6)﹐其提供的强大功能更胜过当时昂贵大计算机的操作 系统,其最大特点是以高级语言写成,仅需要做少部份程序的修改便可移植到不 同的计算机平台上。 UNIX V6 版本并附有完整的程序原始码在 1976 年正式从 贝尔实验室内部传播到各大学及研究机构,UC Berkeley 也就是依据这个版本开 始
研究并加以发展,并在 1977 年发表 1 BSD(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 系统开始被移植改装到各型微处理机及新 计算机上
一个稳定的基石
1978 年 UNIX 发表对今日影响最重大的 UNIX 第七版(UNIX Time-Sharing System,Seventh Editio
中学生调查报告范文安达佑n)也就是 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。
一个重要的延续及发展 — 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。翁美玲自杀
1975 年,一位密执安州大学的毕业生来到了柏克莱,他的名字就是 Bill Joy。当时 Joy 和同学 Chuck Haley (tar 就是他写的)喜欢一起泡在计算机房里 面,Thompson 也时常插上一脚。他们成功地改善了 Pascal 的解译与侦错的能 力,同时还提升了解译与执行的速度。另外换装上 ADM-3 的屏幕后,他们