Linux的起源与发展

1981 年IBM公司推出微型计算机IBM PC。

1991年,GNU计划已经开发出了许多工具软件,最受期盼的GNU C编译器已经出现,GNU的操作系统核心HURD一直处于实验阶段,没有任何可用性,实质上也没能开发出完整的GNU操作系统,但是GNU奠定了Linux用户基础和开发环境。

1991年初,林纳斯·托瓦兹开始在一台386sx兼容微机上学习minix操作系统。1991年4月,林纳斯·托瓦兹开始酝酿并着手编制自己的操作系统。

1991 年4 月13 日在comp.os.minix 上发布说自己已经成功地将bash 移植到了minix 上,而且已经爱不释手、不能离开这个shell软件了。

1991年7月3日,第一个与Linux有关的消息是在comp.os.minix上发布的(当然此时还不存在Linux这个名称,当时林纳斯·托瓦兹的脑子里想的可能是FREAX,FREAX的英文含义是怪诞的、怪物、异想天开等)。

1991年的10月5日,林纳斯·托瓦兹在comp.os.minix新闻组上发布消息,正式向外宣布Linux内核的诞生(Freeminix-like kernel sources for 386-AT)。

1993年,大约有100余名程序员参与了Linux内核代码编写/修改工作,其中核心组由5人组成,此时Linux 0.99的代码大约有十万行,用户大约有10万左右。

1994年3月,Linux1.0发布,代码量17万行,当时是按照完全自由免费的协议发布,随后正式采用GPL协议。

1995年1月,Bob Young创办了RedHat(小红帽),以GNU/Linux为核心,集成了400多个源代码开放的程序模块,搞出了一种冠以品牌的Linux,即RedHat Linux,称为Linux"发行版",在市场上出售。这在经营模式上是一种创举。

1996年6月,Linux 2.0内核发布,此内核有大约40万行代码,并可以支持多个处理器。此时的Linux 已经进入了实用阶段,全球大约有350万人使用。

1998年2月,以Eric Raymond为首的一批年轻的"老牛羚骨干分子"终于认识到GNU/Linux体系的产业化道路的本质,并非是什么自由哲学,而是市场竞争的驱动,创办了"Open Source Intiative"(开放源代码促进会)"复兴"的大旗,在互联网世界里展开了一场历史性的Linux产业化运动。

2001年1月,Linux 2.4发布,它进一步地提升了SMP系统的扩展性,同时它也集成了很多用于支持桌面系统的特性:USB,PC卡(PCMCIA)的支持,内置的即插即用,等等功能。

2003年12月,Linux 2.6版内核发布,相对于2.4版内核2.6在对系统的支持都有很大的变化。

2004年的第1月,SuSE嫁到了Novell,SCO继续顶着骂名四处强行“化缘”, Asianux, MandrakeSoft也在五年中首次宣布季度赢利。3月,SGI宣布成功实现了Linux操作系统支持256个Itanium 2处理器

 

1969-1995 
       小型实验原型系统的后继产品往往备受令人讨厌的“第二版效应”折磨。由于迫切希望把所有首次开发时遗漏的功能都添加进去,往往导致设计十分庞大、过于复杂。其实,还有一个因不常遇到而鲜为人知的“第三版效应”:有时候,在第二系统不堪自身重负而崩溃之后,有可能返璞归真,走上正道。 最初的Unix就是一个第三系统。Unix的祖辈是小而简单的兼容分时系统(CTSS, Compatible Time-Sharing System),也算曾经实施过的分时系统的第一代或者第二代了(取决于不同的定义,具体我们在此不作讨论)。Unix的父辈是颇具开拓性的Multics项目,该项目试图建立一个具备众多功能的“信息功用体/应用工具(information utility)”,能够很漂亮地支持大群用户对大型计算机的交互式分时使用。唉,Multics最后因不堪自身重负而崩溃了。但Unix却正是从它的废墟中破壳而出的。 
1969—1971 
       Unix于1969年诞生于贝尔实验室的计算机科学家Ken Thompson的头脑中。Thompson曾经是Multics项目的研究人员,饱受当时几乎作为铁律而到处应用的原始批量计算的困扰。然而在六十年代晚期,分时系统还是个新鲜玩意儿。计算机科学家John McCarthy( Lisp语言的发明者 )几乎是在十年前才首次发表了分时系统的构想,而直到Unix诞生前七年的1962年才第一次真正部署使用,因此当时的分时系统尚处实验阶段,像喜怒无常的野兽,性能极不稳定。 那个时代计算机硬件的原始程度,恐怕亲历者现在也很难以记清。那时最强大的机器所拥有的计算能力和内存还不如现在一个普通的手机。 视频显示终端才刚刚起步,六年以后才得到广泛应用。最早分时系统的标准交互设备就是ASR-33电传打字机——一个又慢又响的设备,只能在大卷的黄色纸张上打印大写字母。Unix命令简洁、少说多作的传统正是从ASR-33开始的。 当贝尔实验室(Bell Labs)从Multics研究联盟中退出时,Ken Thompson带着从Multics激发的灵感——如何创建一个文件系统 ——留了下来。他甚至没能留下一台机器来玩自己编写的“星际旅行”,这是个科幻游戏——模拟驾驶一艘火箭在太阳系中遨游。 Unix就在一台废弃的PDP-7小型机 (图2.1)上问世了。这台PDP-7成为了“星际旅行”的游戏平台和Thompson关于操作系统设计思路的试验场。 Dennis Ritchie后来以Unix的合作发明者和C语言的发明者而闻名于世。Dennis Ritchie、Doug McIlroy和其他一些同事,已经习惯了Multics环境下的交互计算方式,不愿意放弃这一能力。Thompson的PDP-7操作系统给了他们一条救生绳。 Ritchie评述道:“我们希望保留的不仅仅是一个良好的编程环境,还包括一种能够形成伙伴关系的系统。经验告诉我们,远程访问(remote-access)和分时系统支持的公用计算,其本质不是用终端机代替打孔机来输入程序,而是鼓励频繁的交流。”计算机不应仅被视为一种逻辑设备而更应视为社群的立足点,这种观念深入人心。ARPANET(现今Internet的直系祖先)也发明于1969年。“ 伙伴关系”这一旋律将一直鸣奏在Unix的后继历史中。 Thompson 和Ritchie“星际旅行”的实现引起了关注。起先,PDP-7的软件不得不在通用电气公司(GE)的大型机上交叉编译。 Thompson和Ritchie为支持游戏开发而在PDP-7上编制的实用程序成了Unix的核心——虽然直到1970年才产生Unix这个名字。最初的缩写是“UNICS”(单路信息与计算服务,Uniplexed Information and Computing Service),Ritchie后来称之为“一个有点反叛 Multics味道的双关语”,因为Multics是多路信息与计算服务(MULTiplexed Information and Computing Service)的英文缩写。
即使在最早期,PDP-7 Unix已经拥有现今Unix的诸多共性,提供的编程环境也比当时读卡式批处理大型机的环境要舒服得多。Unix 几乎可以称得上第一个能让程序员直接坐在机器旁,飞快捕获稍纵即逝的灵感,并能一边编写一边测试的系统。Unix的整个发展进程中都能吸引那些不堪忍受其它操作系统局限性的程序员自愿为它进行开发,这也一直是Unix不断拓展其能力的模式。这种模式早在贝尔实验室时就已确立了。 Unix的轻装开发和方法上不拘一格的传统与生俱来。Multics是项庞大的工程,硬件开发出来前必须编写几千页的技术说明书,而第一份跑起来的Unix代码只是在三个人头脑风暴了一把,然后由Ken Thompson花了两天时间来实现罢了——还是在一台破烂机器上完成的,而那个机器本来只作为一台“真正”计算机的图形终端! Unix的第一功,是1971年为贝尔实验室的专利部门进行“文字处理”的支持工作。首个Unix应用程序是nroff(1)文本格式化程序的前身。这个项目也让他们名正言顺地购买了一台功能强大得多的PDP-11小型机。万幸的是,当时管理层还未意识到Thompson和其同事所编写的字处理系统就快孵化出一个操作系统。贝尔实验室并没有开发操作系统的计划——AT&T加入Multics联盟正是为了避免自行开发一个操作系统。不管怎样,整个系统还是取得了令人振奋的成功。Unix在贝尔实验室计算群落中的重要而永久地位由此确立,并且开创了Unix历史的下一个主旋律——与文档格式化、排版和通讯工具的紧密结合。1972年版的手册宣称装机量达10台。

Doug McIlroy[McIlroy91]后来这样描述这个时代:“外界的压力和纯粹出于对技艺的荣誉感,促使人们在有了更好更多的初步思路后,去重写或抛开已有的大量代码。从来没听说什么职业竞争和势力范围保护:好东西太多了,没有人需要把这些创新占为己有。”但是直到四分之一世纪后,人们才真正体会到他的话的含义。

       最初的Unix用汇编语言写成,应用程序用汇编语言和解释型语言B混和编写。B语言的优点在于小巧,能在PDP-7上运行,但是作为系统编程语言还不够强大,所以Dennis Ritchie给它增加了数据类型和结构。C语言从1971年起自B语言进化而来;1973年, Thmpson和Ritchie成功地用新语言重写了整个Unix系统。这是一个大胆的举动——那时为了最大程度地利用硬件性能,系统编程都通过汇编器来完成。与此同时,可移植操作系统的概念几乎鲜为人知。1979年,Ritchie终于可以这么写了:“很肯定,Unix的成功很大程度上源自其以高级语言作为表述方式所带来的可读性、可改性和可移植性”,虽然理想与现实此时尚有一线距离。
      1974年在《美国计算机通信》(Communications of the ACM)上发表的一篇论文中[Ritchie-Thompson]第一次公开展示了 Unix。文中作者描述了Unix前所未有的简洁设计,并报告了600多例Unix应用——这些都是安装在即便按照那个年代的标准,性能都算很低的机器上,但是(正如Ritchie和Thompson所写)“性能的局限不仅成就了经济性,而且鼓励了设计的简约”。
CACM论文发表后,全球各个研究实验室和大学都嚷着要亲身体验Unix。根据1958年为解决反托拉斯案例达成的和解协议,AT&T (贝尔实验室的母公司)被禁止进入计算机相关的商业领域。所以,Unix不能够成为一种商品。实际上,根据和解协议的规定,贝尔实验室必须将非电话业务的技术许可给任何提出要求的人。Ken Thompson开始默默回应那些请求,将磁带和磁盘一包包地寄送出去——据传说,每包里都有一张字条,写着“love,ken”(爱你的,ken)。
        这离个人机出现还有些年。那时候,不仅运行Unix所必须的硬件设备价格超出个人的承受范围,而且也没人敢奢望这种情况会在可预见的未来改变。因此,只有预算充足的大机构才用得起Unix机器:公司、高校、政府机构等。但是,对这些小型机的使用管制要比那些大型机少得多,因此,Unix的发展迅速笼罩了一层反传统文化的氛围。在上世纪70年代早期,最早搞Unix编程的通常都是头发蓬乱的嬉皮士和准嬉皮士们。摆弄操作系统的乐趣对他们来说不仅意味着可以在计算机科学的前沿上纵情挥洒,而且在于可以去推翻伴随“大计算”的所有技术假定和商业实践:卡式打孔机、COBOL、商务套装、IBM批处理大型机都成了看不上眼的过时事物;Unix黑客们沉浸在同时编织未来和编写系统的狂欢中。
那些日子的兴奋从Douglas Comer的话语中可见一斑:“许多大学都对Unix作出过贡献。多伦多大学计算机系发明了200dpi的打印机/绘图仪,并且开发了用打印机模拟照相排版机的软件;耶鲁大学的计算机专家和学生们改进了Unix的shell;普渡大学的电子工程系对Unix的性能作了重要改进,推出了支持大量用户的Unix版本;普渡大学还开发出了最早的Unix计算机网络之一;加州大学伯克利分校的学生开发了新shell和许多小型实用工具。          1970年代后期贝尔实验室发布Unix V7版本时,很显然,该系统解决了许多部门的运算问题,也综合了许多高校的创意。最终诞生了一个更强大的系统。思想潮流开始了新一轮循环,从学术界流向工业实验室,然后又回到学术界,最后流向了不断增加的商业用户。”
现代Unix程序员公认的第一个完全意义上的Unix是1979年发布的V7版本 。第一代Unix用户群一年前就已形成。此时,Unix用于支撑贝尔系统(Bell System)的所有操作[Hauben],并且传播到高校中,甚至远至澳大利亚——在那里,John Lions对V6版源码的注释[Lions]成了Unix内核的第一个正式文档。许多资深的Unix黑客仍然珍藏着一份拷贝。
      Lions的书是地下出版界轰动一时的大事。由于侵犯版权等诸如此类的问题,该书不能在美国出版,所以大家就你拷给我、我拷给你。我也有一份拷贝,至少是第六手了。在那个时代,若没有Lions的书,你就当不成内核黑客。 Unix产业也初露端倪。1978年,第一个Unix公司(the Santa Cruz Operation,SCO)成立,同年售出第一个商用C编译器(Whitesmiths)。1980年,西雅图一家还不起眼的软件公司——微软也加入到Unix游戏中,他们把AT&T版本移植到微机上,取名为 XENIX来销售。但是微软把Unix作为一个产品的热情并没有持续多久(尽管直到1990年左右,微软的大部分内部开发工作都用的是 Unix)。

你可能感兴趣的:(Linux的起源与发展)