|
|
51CTO旗下网站
|
|
移动端

1.1.2 Linux之前UNIX的历史(2)

《鸟哥的Linux私房菜 基础学习篇(第三版)》第1章Linux是什么,本章介绍为何Linux可以免除专利软件之争,并且了解到Linux为何可以同时在个人计算机与大型主机上面大放光彩。本节为大家介绍Linux之前UNIX的历史。

作者:鸟哥来源:人民邮电出版社|2010-07-15 15:46

1.1.2 Linux之前UNIX的历史(2)

1977年:重要的UNIX分支-BSD诞生

虽然贝尔实验室属于AT&T公司,但是AT&T此时对于UNIX是采取较开放的态度,此外,UNIX是以高级的C语言写成的,理论上是具有可移植性,即只要取得UNIX的源码,并且针对大型主机的特性加以修订原有的源码(Source Code),就可能将UNIX移植到另一台不同的主机上。所以在1973年以后,UNIX便得以与学术界合作开发!最重要的接触就是与加州柏克莱(Berkeley)大学的合作了。

柏克莱大学的Bill Joy在取得了UNIX的内核源码后,着手修改成适合自己机器的版本,并且同时增加了很多工具软件与编译程序,最终将它命名为Berkeley Software Distribution (BSD)。这个BSD是UNIX很重要的一个分支,Bill Joy也是Sun这家公司的创办者。Sun公司即是以BSD开发的内核进行自己的商业UNIX版本的开发的。(后来可以安装在x86硬件架构上面FreeBSD即是BSD改版而来!)

1979年:重要的System V架构与版权声明

由于UNIX的高度可移植性与强大的性能,加上当时并没有版权的纠纷,所以让很多商业公司开始了UNIX操作系统的开发,例如AT&T自家的System V、IBM的AIX以及HP与DEC等公司,都有推出自家的主机搭配自己的UNIX操作系统。

但是,如同我们前面提到的,操作系统的内核必须要跟硬件配合,以提供及控制硬件的资源进行良好的工作。而在早期每一家生产计算机硬件的公司还没有"协议"的概念,所以每一台计算机公司出产的硬件自然就不相同了。因此他们必须要为自己的计算机硬件开发合适的UNIX系统。例如在学术机构相当有名的Sun、Cray与HP就是这一种情况。他们开发出来的UNIX操作系统以及内含的相关软件并没有办法在其他的硬件架构下工作的。另外,由于没有厂商针对个人计算机设计UNIX系统,因此,在早期并没有支持个人计算机的UNIX操作系统的出现。

如同兼容分时系统的功能一般,UNIX强调的是多用户、多任务的环境。但早期的286个人计算机架构下的CPU是没有能力达到多任务的作业,因此,并没有人对移植UNIX到x86的计算机上有兴趣。

每一家公司自己出品的UNIX虽然在架构上大同小异,但是却仅能支持自身的硬件,所以,早先的UNIX只能与服务器(Server)或者是大型工作站(Workstation)划上等号!但到了1979年时,AT&T推出System V第七版UNIX后,这个情况就有点改善了。这一版最重要的特色是可以支持x86架构的个人计算机系统,也就是说System V可以在个人计算机上面安装与运行了。

不过因为AT&T由于商业的考虑,以及在当时现实环境下的思考,于是想将UNIX的版权收回去。因此,AT&T在1979年发行的第七版UNIX中,特别提到了"不可对学生提供源码"的严格限制。同时,也造成UNIX业界之间的紧张气氛,并且也引发了很多的商业纠纷。

目前被称为纯种的UNIX指的就是System V以及BSD这两套。

1984年之一:x86架构的Minix操作系统诞生

关于1979年的版权声明中,影响最大的当然就是学校里教导UNIX内核源码相关学问的教授了。想一想,如果没有内核源码,那么如何教导学生认识UNIX呢?这问题对于AndrewTanenbaum(谭宁邦)教授来说,实在是很伤脑筋的。不过,学校的课程还是得继续,那怎么办?

既然1979年的UNIX第七版可以在Intel的x86架构上面进行移植,那么是否意味着可以将UNIX改写并移植到x86上面了呢?在这个想法上,谭宁邦教授于是自己动手写了Minix这个UNIX Like的内核程序!在编写的过程中,为了避免版权纠纷,谭宁邦完全不看UNIX内核源码!并且强调他的Minix必须能够与UNIX兼容才行!谭宁邦在1984年开始编写内核程序,到了1986年终于完成,并于次年出版Minix相关书籍,同时与新闻组(BBS及News)相结合。

之所以称为Minix的原因,是因为他是个Mini的UNIX系统。

这个Minix版本比较有趣的地方是,它并不是完全免费的,无法在网络上提供下载,必须要通过磁盘/磁带购买才行!虽然真的很便宜,毕竟因为没有在网络上流传,所以Minix的传递速度并没有很快。此外,购买时,随磁盘还会附上Minix的源码!这意味着用户可以学习Minix的内核程序设计概念。(这个特色对于Linux的开始开发阶段,可是有很大的关系!)

此外,Minux操作系统的开发者仅有谭宁邦教授,因为学术很忙,加上谭宁邦始终认为Minix主要用在教育上面,所以对于Minix是点到为止。没错,Minix是很受欢迎,不过,用户的要求/需求的可能就比较没有办法上升到比较高的地方了!

1984年之二:GNU项目与FSF基金会成立

Richard Mathew Stallman(史托曼)在1984年发起的GNU项目,对于现今的自由软件风潮真有不可磨灭的地位。目前我们所使用的很多自由软件,几乎均直接或间接受益于GNU这个项目,那么史托曼是何许人也?为何他会发起这个GNU项目呢?

一个分享的环境

Richard Mathew Stallman(生于1953年,网络上自称的ID为RMS)从小就很聪明。他在1971年的时候,进入黑客圈中相当出名的人工智能实验室(AI Lab.),这个时候的黑客专指计算机功力很强的人,而非破坏计算机的怪客(Cracker)。

当时的黑客圈对于软件的着眼点几乎都是在"分享",所以并没有专利方面的困扰。这个特色对于史托曼的影响很大!不过,后来由于管理阶层的问题,导致优秀黑客离开该实验室,并且进入其他商业公司继续开发优秀的软件。但史托曼并不服输,仍然持续在原来的实验室开发新的程序与软件。后来,他发现,自己一个人并无法完成所有的工作,于是想要成立一个开放的团体来共同努力!

使用UNIX开发阶段

1983年以后,因为实验室硬件的更换,使得史托曼无法继续以原有的硬件与操作系统继续自由程序的编写,而且他进一步发现,过去他所使用的Lisp操作系统是麻省理工学院的专利软件,是无法共享的,这对于想要成立一个开放团体的史托曼是个阻碍。于是他便放弃了Lisp这个系统。后来,他接触到UNIX这个系统,并且发现,UNIX在理论与实际上,都可以在不同的机器间进行移植。虽然UNIX依旧是专利软件,但至少UNIX架构上还是比较开放的!于是他开始转而使用UNIX系统。

因为Lisp与UNIX是不同的系统,所以,他原本已经编写完毕的软件是无法在UNIX上面运行的。为此,他就开始将软件移植到UNIX上面,并且,为了让软件可以在不同的平台上运行,史托曼将他开发的软件均编写成可以移植的类型,也就是他都会将程序的源码公布出来!

GNU项目的推展

1984年,史托曼开始GNU项目,这个项目的目的是创建一个自由、开放的UNIX操作系统(Free UNIX)。但是创建一个操作系统谈何容易?而且在当时的GNU是仅有史托曼一个人单打独斗的,这实在太麻烦,但又不想放弃这个项目,那可怎么办呢?

聪明的史托曼干脆反其道而行之:"既然操作系统太复杂,我就先写可以在UNIX上面运行的小程序,这总可以了吧?"在这个想法上,史托曼开始参考UNIX上面现有的软件,并依据这些软件的作用开发出功能相同的软件,开发期间史托曼绝不看其他软件的源码,以避免吃上官司。后来一堆人知道免费的GNU软件,并且实际使用后发现与原有的专利软件也差不了多少,便转而使用GNU软件,于是GNU项目逐渐打开知名度。

虽然GNU项目渐渐打开了知名度,但是能见度还是不够。这时史托曼又想:不论是什么软件,都得要进行编译成为二进制文件(Binary Program)后才能够执行,如果能够写出一个不错的编译程序,那不就是大家都需要的软件了吗?因此他便开始编写C语言的编译程序,那就是现在相当有名的GNU C Compiler(GCC)!这点相当重要。这是因为C语言编译程序版本众多,但都是专利软件,如果他写的C编译程序够棒,性能够佳,那么将会大大地让GNU项目出现在众人眼前。如果你忘记了什么是编译程序,请回到第0章去看看编译程序!

但开始编写GCC时并不顺利,为此,他先转而将他原先就已经写过的Emacs编辑器写成可以在UNIX上运行的软件,并公布源码。Emacs是一种程序编辑器,它可以在用户编写程序的过程中就进行程序语法的检验,此一功能可以减少程序员排错的时间!因为Emacs太优秀了,因此,很多人便直接向他购买。

此时因特网尚未流行,所以,史托曼便借着Emacs以磁带出售,赚了一点钱,从而开始全力编写其他软件,并且成立自由软件基金会(Free Software Foundation,FSF),请更多工程师与志愿者来编写软件。终于还是完成了GCC,这比Emacs还更有帮助!此外,他还编写了更多可以被调用的C函数库(GNU C Library),以及可以被用来操作操作系统的基本接口bash shell。这些都在1990年左右完成。

如果纯粹使用文本编辑器来编辑程序的话,那么程序语法如果写错时,只能利用编译时发生的错误信息来修订了,这样实在很没有效率。Emacs则是一个很棒的编辑器。注意:是编辑器(editor)而非编译器(compiler)!它可以很快显示出你写入的语法可能有错误的地方,这对于程序员来说,实在是一个好到不能再好的工具了。所以才会这么受到欢迎。

GNU的通用公共许可证

到了1985年,为了避免GNU所开发的自由软件被其他人所利用而成为专利软件,所以他与律师草拟了有名的通用公共许可证(General Public License, GPL),并且称呼它为CopyLeft(相对于专利软件的CopyRight)。关于GPL的相关内容我们在下一个小节继续谈论,在这里,必须要说明的是,由于有GNU所开发的几个重要软件,如:

Emacs

GNU C(GCC)

GNU C Library(GLIBC)

Bash shell

造成后来很多的软件开发者可以借由这些基础的工具来进行程序开发,进一步壮大了自由软件团体。不过,对于GNU的最初构想"创建一个自由的UNIX操作系统"来说,这些优秀的程序仍旧无法满足,因为,当下并没有"自由的UNIX内核"存在,所以这些软件仍只能在那些授权的UNIX平台上工作,一直到Linux的出现。更多的FSF开发的软件可以参考如下网页:

https://www.fsf.org/resources

1988年:图形接口XFree86项目

有鉴于图形用户接口(Graphical User Interface, GUI)的需求日益加重,在1984年由MIT与其他第三方首次发表了X Window System,并且在1988年成立了非营利性质的XFree86这个组织。所谓的XFree86其实是X Window System + Free + x86的整合名称。而这个XFree86的GUI界面更在Linux的内核1.0版于1994年释出时集成于Linux操作系统当中!

为什么称图形用户界面为X呢?因为由英文单字来看,Window中的字母W下面接着的就是字母X。意指Window的下一版!需注意的是,X Window并不是X Windows!

1991年:芬兰大学生Linus Torvalds的一则消息

到了1991年,芬兰的赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息,宣称他以bash, gcc等工具写了一个小小的内核程序,这个内核程序可以在Intel的386机器上面运行,让很多人很感兴趣,从此开始了Linux不平凡的旅程!

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

标准C++开发入门与编程实践

本书着重介绍标准C++语言,即1998年由ISO正式推出的关于C++的国际性标准版本。 本书从最基础的编程语言概念讲起,共分6篇24章。前4篇完整...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊