浅谈Unix、linux和自由软件运动

 

最初的OS不能满足足够多的终端同时使用,于是贝尔实验室、通用和MIT发起了一个Multics计划。希望能够制造一个足够强大的多任务、多用户系统。

2 Multics项目搁浅,贝尔实验室退出。但是贝尔实验室的工程师汤普森得到了一个灵感,恰巧手边有一台PDP-7计算机而老婆出去探亲一个月。于是他奋战四个星期,用汇编写了一个File Server System。这个汇编的OS革命性地提出了一切设备和程序都是文件的理念,沿用至今。这个OS在当时的贝尔实验室内广为流传,当时被称作Unics,以示这个OS源于Multics项目。Multics项目最终项目周期过长、资金短缺而没有取得成功。但是它培养的人才却带来了计算机界的一场革命。有趣的是,UNIX的最初发明,只是为了玩一个叫星际航行的游戏。

汤普森的OS最初是用汇编写出来的,不具备在不同的硬件架构上移植的可能性。于是他发明了B语言重写了一遍,但是性能还是不是很好。另一个同事,丹尼斯里奇在B的基础上设计出C程序设计语言,获得了很好的性能,且摆脱了硬件的束缚。用C语言编写的程序可以在不同的平台之间很容易地移植,这就为后来UNIX的大范围移植打下了基础。

4 1977年,伯克利的比尔修改出了一个很重要的分支,即BSD--Berkley Software DistributionAT&T则在1979年发布了重要的System V。现在的纯种UNIX只剩下他们。Linux严格来说只能是UNIX Like的一种实现。System V一开始就发布了四个版本SVR1SVR2SVR3SVR4,四个版本带来了不同的分支。其中SVR4是其中最成功的版本,成为了后来很多UNIX共同特性的一个源头。

 

5

1984年的三件事:

    UNIX是一个非常强大的OS。它一开始就是专门为服务器或者大型工作站的多任务、多用户环境所准备。而早期的X86 处理器(比如286)则不支持多任务,于是没有人对把UNIX移植到PC上感兴趣。比较有趣的是,在AT&T的第七个版本的UNIX中,刚刚开始支持X86个人运算,与此同时,又增加了不准向学生提供源代码的条款。于是教授OS内核原理的谭宁邦教授突发奇想,完全不看UNIX源码,自己从零写了一个UNIX LikeMinix,意为迷你UNIX。这项工作1984年开始,持续两年才完成,并于1986年在BBS新闻组上发布。

    

史托曼在人工智能实验室干到一半,突然遇到实验室重组。此时的他已经进行了很多自由软件的开发,感到需要一个更大的团队。一次实验室设备的更新让他感受到MIT的专利软件LispOS和他的理念格格不入。这时候,一个开放架构的UNIX出现在他面前,于是他转而投身于UNIX。同样是在1984年,史托曼开始GNU项目。GNU“GNU's Not Unix”无穷递归缩写,意为GNU不是UNIX注:Gnu在英文中原意为非洲牛羚,发音与new相同目标是构建一整套完全由自由软件构成的UNIX OS体系。但是一开始单打独斗的史托曼力有不逮,于是GNU项目一开始只是开发在UNIX上运行的自由软件。 史托曼靠相似的免费软件打开了GNU的知名度以后,又靠出售Emacs的磁带赚了一点小钱,于是成立了FSFFree SoftWare Foundation--自由软件基金会。进而与志同道合者开发出了GCC(GNU C Compiler)编译器。这是一个伟大的编译器,不仅自由免费,而且比其他商用专利编译器性能都要好。现在的GCC不仅能够支持C的编译,还能支持C++Java等多种程序设计语言的编译。GNU的拳头产品,大概在1990年左右全部发布:EmacsGCCGLIBCBash shellGNU的所有产品为了反专利,都使用GPL--General Public License。因为GNU的理念是“版权制度是促进社会进步的手段,版权本身不是自然权利。”这和比尔盖茨那封著名的信真是相映成趣!

 

同样是在1984年,MIT和其他第三方第一次发布了UNIX上的X Window GUI

 

芬兰学生托瓦兹小时候就跟着外祖父搞微计算机,很小就学会了汇编语言。进入赫尔辛基大学以后他苦于学校只有一台UNIX OS的计算机且只支持16个终端。于是他自己贷款弄了一台最新式的386计算机,并且购买了Minix OS进行实验,发现386确实能够很好地支持多任务操作。但是此时谭宁邦教授忙于教学,已经不大搭理Minix的更新,于是他决定用GNUBash shellGCC,参照Minix的设计理念和书上的程序代码自己写一个OS1991年,他将第一个kernel放上FTP网站的一个名为Linux的目录下,编号为0.02。这项伟大的运动就此诞生!

 

为了让UNIX上的软件能够运行与Linux上,托瓦兹开始参考POSIXIEEE制的Portable OS Interface的缩写,意在不同的厂商硬件和OS上设定一些通用的协议,提高整个业界的兼容性)。Linux在黑客团队的支持下,终于在1994年发布了1.0版本(恰好此时把X Free 86 基金会的 X Window系统也兼容进去了,也就是说,一开始就是带图形操作界面的),在1996年发布了2.0版本。奇怪的是,至今的kernel仍然只是2.6

 

8由于GPL的限制,所有从自由软件中诞生的软件都是自由软件,Linux的商业空间可谓相当狭小。但是在Linux优秀的内核支持下,还是出现了许多Linux Distribution。这些Distribution必须遵循LSBLinux Standard Base)和FHSFile system Hierarchy Standard)规范,且使用的自由软件也多大同小异,所以很方便学习!

 

实际上,现在的Linux Distribution分为Debian系统和红帽子系统(fedora)。乌班图用于个人计算效果非常绚丽!SuSE也不错。

猜你喜欢

转载自cppbomb.iteye.com/blog/1481877