科技典故
 
 
Unix是怎么来的?
不管是IBM 的AIX、Sun 的Solaris、HP 的HP-UX、还是Linux等等,都是源自1969年AT&T贝尔实验室(Bell Labs)所开发出来的Unix,回顾这段历史,MULTICS(MULTiplexed Information and Computing Service)计划是重要的关键。。
UNIX(Uniplexed Information and Computing System)是第一套由C语言所开发出来的操作系统,采用简化缩小的核心程序,具有分时(Time Sharing)、交谈式、支持多任务(Multi-Tasking)、多用户(Multi-User)、与多元程序(Multi-Programming)的功能,普遍应用在服务器上,在工作站方面以Sun公司的SunOS为代表,PC的版本有Microsoft公司的XENIX,Sun公司的Solaris,及共享件的Unix版本如Linux、FreeBSD等。不管是IBM 的AIX、Sun 的Solaris、HP 的HP-UX、还是Linux等等,都是源自1969年AT&T贝尔实验室(Bell Labs)所开发出来的Unix。 回顾Unix 历史,MULTICS(MULTiplexed Information and Computing Service)计划是重要的关键。当时大部份计算机都是采用批处理(Batch Processing)的方式:批处理的概念就像是在洗衣服,将衣服(Jobs)累积到一定的数量后才丢到洗衣机(CPU)处理,平时洗衣机(CPU)是闲置不用的。为了提升CPU的效能,AT&T、G.E.及MIT计划合作开发MULTICS操作系统。当时MIT设计的CTSS(Compatible Time-Sharing System)已相当成功,所以MULTICS就是以CTSS做基础,建置在G.E.的大型计算机GE-645。 当时仍和AT&T同属一家公司的Bell Labs已在60年代末期参与此计划,Unix 之父Ken Thompson则恭逢其时,由加州柏克莱分校换到Bell Labs,成为MULTICS 研究小组的一员。不过MULTICS发展进度缓慢,过了两年预定期却迟迟不见进展,以致1969年2月Bell Labs决定退出,不过MULTICS仍持续发展着。1972年Honeywell并购G.E.的计算机部门后,MULTICS进入商业市场,在MULTICS相对盛行的80年代,约有75至100台价值数百万美元的大型计算机使用MULTICS。然而1977年MIT退出MULTICS的开发、80年代中期Honeywell把计算机事业卖给Bull后,MULTICS的发展也在1988年划上休止符。 Ken Thompson在MULTICS中,为GE-645写了名为太空旅行(Space Travel)的游戏程序,当Bell Labs退出MULTICS后,Ken Thompson打算找一台机器把此游戏移植过去,于是便和Dennis Ritchie向Bell Labs申请一台DEC-10以建立一台分时系统,申请并未通过。最后他们采用一台巳弃置在旁的Digital PDP-7(1964年DEC生产的迷你计算机),Ken Thompson就以MULTICS中的技术经验─包括树状结构(tree-structured)文件系统、命令解释器(Command Interpreter)及对接口设备的访问控制方式─为基础,为这台过时的计算机撰写一套新操作系统。 受限于机器的效能,PDP-7只能支持两个用户,实在称不上多用户(Multi-User)。当时和Ken Thompson一起共事的Brian W. Kernighan便玩弄MUITICS这字本身,开玩笑地戏称他们的系统其实是UNiplexed Information and Computing System,并缩写为UNICS,后来取其谐音,就称其为Unix。 由于PDP-7的计算能力有限,也不太可能提供平行处理的服务,于是Ken Thompson和Dennis Ritchie再次提出申请,以研究字处理系统的名义请购一台PDP-11/20。因为PDP-11/20的磁盘比主机足足慢了三个月才运到实验室,就在等候磁盘的空闲时间,Ken Thompson用PDP-11的汇编语言重新编写整个Unix核心及基本命令。此时,Bell Labs的专利局正在寻找一个系统作为处理文件的工具,Ken Thompson所开发的字处理系统刚好符合需求,Bell Labs的专利局就成了Unix的第一家商业用户。于是在1971年11月,Unix小组终于将Unix第1版的说明手册定稿,该系统的手册被标示为First Edition,因此由Bell Labs发展的Unix版本,都是以同时出版的说明文件版本号码为基准。 尔后Unix版本众多,兹不赘述。其中重要的是1973年11月Unix V4,用C语言重新编写,只要稍微修改原始码,便可在不同的硬件架构上面执行。因此,这促使许多商业软件公司及学术机构加速研发Unix,成为可携式操作系统的一个里程碑。这情况下自1974年起,AT&T公司不得不把Unix的原始码提供给学术性机构研究,使得Unix的稳定性与执行效率更好,并增加更多功能。1975年的Unix V6第一次在Bell Labs以外使用,并推动了加州柏克莱分校于1978年开发的1 BSD(1st Berkeley Software Distribution)Unix版本的基础,开启Unix分支BSD系列。1979年的Unix V7被认为是空前绝后的完整操作系统,被移植到VAX上,称为32V。由于其轻薄短小,如伊利诺、哈佛、柏克莱等成果影响深远,柏克莱的Bill Joy和Ozalp Baboglu以32V为基础,加入虚拟内存、需求分页及分页替换等重要功能后,发表3 BSD Unix,因为其具有大型的内存管理机制,因而获得美国防部高等防卫研究所(DARPA)的支持。 同时期,AT&T 成立USG(Unix Support Group),催生Unix成为市场化的商品,对外发表的首版是System III,再来是System IV。从此Unix版本便有BSD和AT&T相互抗衡,因而分为System IV和4.x BSD这两大主流。然AT&T向法院控告BSD剽窃AT&T 的原始码,终结了颇受好评的BSD系统,AT&T本身则因反拖拉斯法被拆解成几个子公司,反而加速Unix商品投入市场的速度。但由于AT&T让Unix在商业应用改良、修改散布的自由度受限,使得Open Source此一新观念重要性为世人所注重。1984年Richard M. Stallman创立GNU(GNU is Not Unix)计划,开发一套与Unix向上兼容、名为GNU的自由软件系统,并在1985年成立自由软件基金会(Free Software Foundation;FSF),研发许多自由软件供大众使用,也带给日后风起云涌的Linux落地生根的扎实基础。