初遇林纳斯(Linux)——Linux历史

 自学Linux半年多了,由于没有什么实践机会,纯靠平时的使用来练习确实效果不好,忘的差不多了。现在为了改变这种情况,开始写博客生涯,记录一下自己Linux的学习历程。

  首先纠正一下半年来的错误读法,Linux:lin-na-si,不是lin-niu-ke-si;GNU:ge-nu;GUI:gu-yi。
  这篇博客主要是在看了一些Linux学习视频之后来总结叙述一下Linux的历史,普及一下常识。当然,只是尽可能准确,有错误欢迎指出。
  在上世纪60年代,虽然此时第一台电子计算机问世不久(1946年2月14日在费城开始运行的ENIAC计算机),但是电子计算机的超强计算能力给当时社会所带来的影响却是十分广泛的。在那个年代,一台计算机的价格昂贵,并且体积庞大,在普通民众群体中是十分稀有的资源。后来麻省理工学院(MIT)开发了分时操作系统,也就是一个大型主机提供多个终端机链接,实现多个用户在某个时间段内分别使用主机的CPU资源。当然,这种方式在CPU频率很高的前提下并不会给用户带来为了使用计算机排队的感觉。不过这种终端机只能是个IO设备,并且限于硬件和技术的发展水平,在当时一个比较先进的主机最多也就能支持30台左右的终端机。
  为了充分利用主机资源,实现一个主机同时支持300终端机工作的这么一个目的,在1965年,贝尔实验室(Bell)、麻省理工学院(MIT)和通用电气公司(GE)三家巨头公司共同发起了一个名为Multics的项目,这在当时是如此兴师动众的一个工程,三家巨头各自出动了一批优秀的年轻人才。经过几年的努力,Multics的基本功能实现了,可以支持多程序、多用户,不过就算在大型机上面运行,性能仍然不怎么样。在基本功能完成后,三家都没有停止这个项目的意思,继续在为Multics延展一些功能。又过了一段时期,失去目标的Multics项目不再一如当前的吸引人,所以GE、BELL相继退出,只剩了MIT仍然在继续。不过Multics仍然是成功了的,据说福特公司使用曾购买使用Multics,一直运行到2000年以后才下线。
  Bell退出之后,当初为Multics招来的许多工程师就空闲了,其中有个叫Ken Thompson的年轻人 ,他曾经负责在Multics上面开发名为Space Travel这么一款游戏。在退出之后,由于无法再免费使用Multics来继续他的游戏开发,他就申请去购买一套Multics装在机器上面。在1972年左右,市面上流行的主机是PDP-11,由DEC公司生产的,是一款小型机,属于VAX系列。当时一台PDP-11数万美元。理所当然,Ken的申请被拒绝了。不过流浪在Bell的期间他发现了一台老旧没人用的PDP-7,虽然跨了四代(跨四代对电脑什么概念不必多言),不过还好能用。但是限于当时的Multics是用汇编语言所写,对硬件的依赖程度还是非常高的,所以Ken必须要自己开发一套内核来跑他的游戏。于是Ken凭借队此前的Multics的记忆,花了四个星期写了一套内核,并且还成功的跑起了他的游戏。Ken就向实验室里的同事炫耀他的游戏,然而没人看好他界面丑陋的游戏,大家倒是对他所开发的那套系统十分感兴趣。那套系统十分小巧,被实验室里的人称为UNICS,后来才改称为UNIX。此后的一年,出色的性能使得UNICS风靡Bell。不过同样的道理,UNICS是用汇编语言开发的,跟硬件平台紧密结合,在不同的硬件架构的电脑之间移植非常困难。为了扭转劣势。这时Bell实验室里的另外一名叫做Dennis M.Ritchis主动找到Ken,表示可以用高级语言重新开发UNICS,这样用编译器在不同的电脑上编译就能实现系统移植。两人不谋而合,立即着手对当时的B语言改进,通过引入静态变量,指针等一堆东西之后,B语言也升级成了赫赫有名的、广为流传的C语言。继而俩人用C语言改写了UNIX,最后发行出了UNIX正式版本。值得一提的是由于高级语言的一些特性(比如通过结合一些额外的机制,弥合多种硬件之间的不同),使得相对于汇编语言执行效率低了大概30%。在硬件速度相对慢的时代,这是非常大胆的举动。不过这也是俩人预见以后硬件速度的提升肯定会日新月异,果不其然,现在的高级语言的效率问题在电脑平台上几乎可以忽略了。
  UNIX发行之后,俩人联合署名在在美国计算机通信杂志上面发表了一篇论文,来宣传UNIX。这样一来,很多的高校和科研机构都希望能获得一份源码。由于Bell属于AT&T,在美国反垄断法的规定中,AT&T是不能销售除了电报电话之外的任何产品的,并且在别人需要的时候要无偿提供。这样很多著名的大学包括伯克利分校都获得了UNIX的源码。在有了这么突出的贡献之后,Ken获得了年休的机会,于是借此机会,他在1976年时去伯克利分校任教。在伯克利分校有个很厉害的研究生叫Bill Joy,他成立了一个叫BSRG的团体,专门是改进UNIX,修复bug,加入些新功能之类的。事实上在Ken加入之后,伯克利分校几乎成为UNIX研究领域的领头羊。
  随着研究的进行,后来美国军方网络平台需要一套传输数据的报文协议,军方不想在封闭的系统平台上面开发这一套协议,所以就把这个任务交给BSRG团队。BSRG团队在加入包括拥塞控制等一些列机制之后,再柔和进UNIX很多新功能,将研发结果打包发行,并称为BSD(伯克利系统发行版),开始了卖系统。在这之后不久,Bell被卖给另一家公司,看到BSRG卖UNIX挣了很多钱,Bell也迫不及待开始打包发行UNIX,并且以40000美元一个授权的价格,也挣了一大笔钱。后来两家为了UNIX正统之争开始打官司,一打就是十年。导致这段时间UNIX的研究陷入停顿状态。起初的UNIX只能在PDP系列上运行,由于当时PC机上的Inter芯片接口丑陋不堪,性能也不好,所以没人来将UNIX改造使其能运行在PC机上。
  后来美国一个教授,开发了CP/M,售价大概两三万美元,当时的PC机也是售价两三万,使得个人能买一台能用的计算机非常昂贵,所以PC机的销量并不好。IBM和当时的康柏公司就迫切一个解决方案。在1981年美国的西雅图,比尔盖茨成立了微软公司,最初公司一共3个人以卖basic编译器和包装发行UNIX为主。公司成立不久之后,在比尔盖茨的好友艾伦的一个好友所在的公司,有一个程序员写了个在PC机上的小系统。于是比尔盖茨非常敏锐的捕捉到这个商机,利用他母亲IBM公司董事会董事的关系,找到IBM董事长沃森,说有这么一个系统可以卖给IBM公司,不过他只是卖给沃森版权,也就是装一个这样的系统只要给比尔盖茨几美元就行了。沃森当即就同意了。比尔盖茨于是让艾伦以50000美元找那个程序员买断了这个系统,再和她一起改造了之后,更换名字为Dos。结果PC机大卖,比尔盖茨也挣了很多钱。不过Dos是单任务、单用户的系统,实际上并不好用。此时又有一家公司成立了,也就是Jobs成立的苹果公司。Jobs目的是生成PC机,并且要生成比IBM的PC兼容机性能强很多的真正的PC机。有趣的是Jobs这个人特别崇拜图灵,不过图灵是个同性恋,被当时的人们关押之后,图灵羞愤之下咬了一口涂了氰化钾的苹果死了,所以苹果的Logo是现在这样咬了一口的苹果。苹果公司所生产的1型PC机是基于UNIX的,卖了很多台。最初苹果电脑的CPU是PowerCPU,不是Inter的。
  为了给他的电脑添加一些新的东西,Jobs利用各种关系进入了施乐公司(卖打印机的)的PARK实验室参观,此时实验室里一个人在UNIX系统首先上研究出了世界上第一个鼠标,而且并且出了第一个图形操作界面。但是卖打印机为主的施乐公司领导层并不喜欢这个产品,当Jobs发现这个之后就向施乐公司高价买了一份回去研究。回去之后他就立即着手组织人对这个宝贝进一步研发(Jobs本人并不是程序员)。于是在苹果二代就有了图形操作系统,这使得装Dos系统的PC机销量日下。于是比尔盖茨也很想搞这么一套代码来开发他的系统,比尔盖茨就想方设法去接近Jobs,希望一起研究进一步开发这个图形界面,于是他成功的从Jobs手中骗走了一份源码,并且立即开始了改进他的系统。所以Windows系统就诞生了,但是Windows是在Dos基础上研发的,经常蓝屏。
  此时的UNIX还在战争期间,当BSD和Bell发现微软和苹果搞得这样火爆时才决定放弃了正统之争。之后BSD研究团队就解散了,但是里面一些人仍然在继续队UNIX的研发,并且开发了第一个可以在PC机上运行的UNIX,名字为FreeBSD。此后还出现了其他可在PC机上跑的UNIX发行版,如OpenBSD、NetBSD等。到现在苹果系统的核心仍然是FreeBSD内核。之前领导BSRG的Bill Joy,随后成立了著名的Sun公司,主要是生成工作站,并且开发了自己的操作系统Sun OS,后来结合UNIX系统改名为Solaris。Bill Joy最突出的贡献是为UNIX添加了一个程序:csh,也就是兼容C语言的shell。
  再回到苹果和微软,微软公司的Windows系统一直到Windows95、98版本之后,蓝屏问题仍然没有解决,由于Dos这个基础并没有改变。前面提到生产PDP主机的DEC公司,这家公司生产的机器上装的是自己开发的OpenVMS系统。在DEC公司被收购之后,OpenVMS系统的研发人员就被比尔盖茨接收进微软公司,来改进他的Windows系统。整个OpenVMS研发团队进入微软之后,新版本的Windows系统就在OpenVMS之上修改而成,改名为WindowsNT,此时的内核不再是Dos。之后又发行了WindowsXp,windows2000等等,这些系统的内核都是基于OpenVMS。尽管Windows系统的蓝屏问题解决了,但是界面不如苹果系统,因为不论微软吹嘘得多厉害的技术,基本都是别人几年前就不用的技术,直到现在。不过,苹果强大的界面都是依靠硬件支持,所以现在的图形工作站主机多数都是苹果机。
  再回到UNIX,当UNIX商用之后,很多高校就不能在免费用了。荷兰一个大学里,有个叫安德鲁的教授,此前一直在使用UNIX教学,UNXI商用之后他就自己开发了一个操作系统上课用,叫Minix,也就是和UNIX十分相似的很小的系统。在他去芬兰赫尔辛基大学教学之后,这个系统也被带了过去。由于他是用汇编写的这个系统,所以学生要使用就要自己开发内核。
  要再继续讲Linux就得先介绍一个著名的人,麻省理工学院的教授Richard Matthew Stallman。他是一个著名的黑客,认为程序是全人类的,于是举起自由的大旗,成立GNU组织,开始了程序界的共产主义运动,并且草拟了著名的GPL。Stallman开发了很多程序,如Emacs、GNU C(GCC)、GNU C Library(GLIBC)、Bash shell等。在赫尔辛基大学里有个叫Linus的学生,他20岁生日时收到外公的一个礼物——一台80386PC机。在1991年,他自己使用bash、gcc等工具在这台PC机上写了个很小的内核程序,命名为Linux。之后他在电子公告牌上宣布了这个消息,这让很多人感兴趣,并加入了对他写的这个内核的维护中来。此前说的Stallman所开发的程序都是在UNIX上运行的,此时Linux的出现正和GNU组织内核的需求相吻合。但是Linus提供的Linux只是内核,不是程序,没有库,之后Linus在Linux上移植了很多bsh,于是全球黑客开始了为Linux编写程序的活动。于是在1994年,Linux1.0诞生,由于所有人都在努力将Linux移植到各种硬件上,所以此时的Linux已经可以跑在很多PC上面上。要再次说明的是Linux只是个内核程序,GNULinux才是个系统。不过两者都是源代码,要运行在PC机上面得先编译。但是不是所有人都会编译,另外由于CPU支持二进制的格式不同,并且ABI(应用二进制接口)不同所以编译要求两台主机完全一样,比如编译后要在x86架构主机上运行,就必须在x86架构主机上编译才行。此时一些第三方组织出现,他们负责编译内核和外围应用程序,并打包发行。著名的包括RedHat、Debian、SUSE,他们不是Linux 的开发者,只是打包发行而已,Linux 的内核由linus和开发团体提供,软件由GNU提供。发行商在其中加入自己的配置文件,使得Linux不同版本之间看起来各不相同。
  由于早期的软件都是和内核打包发行,用户不能自己更改。所以后来出现了软件管理器,如Debian的Dpkg,RedHat的RPM,使得软件有安装、卸载、升级等功能。遵循GPL所规定的,发行商发行的源码必须公开。为了盈利,RedHat在发布源程序,但是不发放编译好的二进制文件,而且在软件升级时也不发放二进制升级补丁。这样的情况下出现了另一个组织,CentOS(社区企业操作系统)。每当RedHat发行源码时,CentOS都给搞成二进制代码免费发放,并且和RedH发行的版本完全兼容,不过CentOS不提供后续服务。在RedHat9.0(个人版)发行之后,这个系统基本就十分稳定了,所以后来RedH专注于研发RedHa企业版,个人版的更新在2003年终止,并将个人版捐给Fedora公司。Debian是目前唯一一个不受商业组织支持的UNIX发行者,因为Debian的所有者都是自愿者,所以最先进的Linux发行版是Debian,不过最难使用的也是Debian。之后Debian的二次发行版,如Ubuntu,主要用于PC,界面很漂亮。还要基于Ubuntu的二次发行,Mint。值得说的是现在流行的Andriod系统也是Linux的一个发行版。具体的Linux发行分支图参考:

http://blog.csdn.net/xkfz008/article/details/24103581


你可能感兴趣的:(Linux学习)