您所在的位置:读书频道 > 操作系统 > Linux > 1.1.3 Linux之前UNIX的历史

1.1.3 Linux之前UNIX的历史

2007-09-26 15:04 鸟哥 人民邮电出版社 字号:T | T
一键收藏,随时查看,分享好友!

《鸟哥的Linux私房菜》全面而详细地介绍了Linux操作系统,第一章我们主要对Linux本身进行了详细的阐述,本文主要讲了Linux之前UNIX的历史。

AD:

1.1.3  Linux之前UNIX的历史

在Linux出现之前(大约在20世纪70年代),就有一个相当稳定而成熟的操作系统存在了,那就是Linux的老大哥UNIX。众所周知,Linux的核心是由Linus Torvalds在1991年开发出来的,并且放到网络上供大家下载。后来大家觉得它(Linux核心)小而精巧,所以慢慢就有许多朋友投入其研究领域里。为什么它这么棒呢?为什么大家都可以免费下载它呢?下面说明其中的缘由。

• 1969年以前,一个没有完成的梦想:Bell、MIT与GE的Multics系统

早期的计算机并不像现在的个人计算机,一般人很难接触到,多用于军事、高科技或学术单位的学术研究。非但如此,早期的计算机架构还很难使用,除了运算速度慢之外,操作接口也很麻烦。那时,编写程序是一件非常麻烦的事情,因为程序设计人员必须将程序相关信息在读卡纸上打洞,然后再将读卡纸插入卡片阅读机,将信息读入主机中运算。一旦程序编写有误,就需要重新打卡,加上主机少,用户多,仅等待就会耗去很多的时间。

在此之后,通过操作系统的改善,后来便可以使用键盘来进行信息的输入了。不过,当时在一所学校里,主机可能只有一台,如果多人等待使用怎么办?20世纪60年代初期,麻省理工学院(MIT)开发了“兼容分时系统(Compatible Time-Sharing System, CTSS)”,它可以让大型机通过提供数个终端(terminal)联机进入主机,利用主机资源进行运算,其架构如图1-2所示。

图1-2  早期主机与终端机的相关性示意图

这样,无论主机在哪里,只要在终端前进行输入输出,就可以利用主机提供的功能了。但是,需要注意的是,此时终端只具有输入/输出功能,本身完全不具备任何运算或软件安装能力。而且,比较先进的主机也只能提供30台左右的终端。
为了强化大型机系统,使主机资源可供更多用户使用,在1965年前后,由贝尔实验室(Bell)、麻省理工学院(MIT)及通用电气公司(GE)共同发起了Multics计划,其目的是让大型机同时连接300台以上的终端。不过,到了1969年前后,由于计划进度落后,资金短缺,所以该计划宣告失败(注:Multics有复杂、多数的意思)。
• 1969年:Ken Thompson的小型文件服务器系统
在认为Multics计划不可能成功之后,贝尔实验室就退出该计划。不过,原来参与Multics计划的人员中,已经从该计划中产生了一些想法,Ken Thompson就是其中的一位。因为自己的需要,Thompson希望开发一个小型操作系统。在开发期间,有一台DEC(Digital Equipment Corporation,数字设备公司)的PDP-7没人使用,他就准备用这台主机进行操作系统核心程序的编写。本来Thompson是没时间的,有趣的是,在1969年8月,Thompson的妻儿去了美西探亲,于是他有了额外的一个月的时间待在家里,使得一些构想得以实现。经过4个星期的努力,他终于用汇编语言(Assembler)写了一个核心程序,同时包括一些核心工具程序,以及一个小小的文件系统。该系统就是UNIX的原型。当时Thompson将Multics庞大的复杂系统简化了许多,同实验室的同事都戏称这个系统为Unics。Thompson的这个文件系统有两个重要的概念,分别是:
― 所有的程序或系统设备都是文件;
― 不管是创建编辑器,还是附属文件,所写的程序只有一个目的,而且要有效地完成目标。
这些概念在后来对Linux的发展有相当重要的影响。
• 1973年:UNIX正式诞生,Ritchie等人用C语言写出第一个正式的UNIX核心
由于Thompson编写的操作系统很好用,所以在贝尔实验室内部广为流传,并且经过多次改版。比较重要的改版在1973年。UNIX本来是以汇编语言写成的,因为系统的移植性与性能需求,该系统使用B语言改写。不过,性能依旧不是很好。后来,Dennis Ritchie将B语言重新改写成C语言,C语言算是比较高级的程序语言,可以在不同的机器上运行,而Ritchie等人也同时将原来Thompson的操作系统重新以C语言改写,最后发布了UNIX的正式版本。
需要特别注意的是,贝尔实验室是隶属于AT&T的,由于AT&T当时忙于其他商业活动,所以对UNIX采取比较开放的态度。此外,UNIX这个时期的开发人员都是贝尔实验室的工程师,这些工程师对程序相当有研究,所以,UNIX在此时不容易被一般人所接受。需要特别强调的是,由于UNIX是以较高级的C语言编写的,汇编语言需要与硬件有密切的配合,高级的C语言与硬件的相关性就没有这么好了,所以,这个改变也使得UNIX很容易被移植到不同的机器上。
• 1977年:重要的UNIX分支——BSD诞生
前面说到,虽然贝尔属于AT&T,但AT&T此时对于UNIX采取开放的态度。由于UNIX是使用高级C语言写成的,理论上具有可移植性,所以,只要获取UNIX的源码,并且针对大型机的特性修改源码,就可能将UNIX移植到另一台不同的主机上。1973年以后,学术界参与到UNIX的开发工作中,最重要的参与者就是加州伯克利(Berkeley)大学。伯克利大学的Bill Joy在获取了UNIX的核心源码后,着手修改成适合自己机器的版本,并且同时增加了很多工具软件与编译程序,最终将其命名为Berkeley Software Distribution(BSD)。BSD是UNIX很重要的一个分支。Bill Joy也是Sun公司的创办者。Sun公司是以BSD发展的核心来进行自己商业UNIX版本的发展的。另外,后来可以安装在x86硬件架构上的FreeBSD,也是BSD改版而来的。
• 1979年:一个措手不及的版权声明
由于UNIX的高度可移植性与强大的性能,加上当时并没有版权纠纷,所以很多商业公司开始了UNIX操作系统的开发,例如AT&T自己的System V、IBM的AIX以及HP与DEC等公司,都采用自己的主机与自己的UNIX操作系统。
但是,如前所述,操作系统的核心(Kernel)必须要与硬件配合,以控制硬件资源正常运行。在早期,生产计算机硬件的公司还没有“协议”的概念,每一台计算机公司制造的硬件各不相同,因此他们必须要为自己的计算机硬件开发合适的UNIX系统。例如,相当有名的Sun、Cray与HP就是这样的情况。这些公司开发的UNIX操作系统以及内含的相关软件没有办法在其他硬件架构下工作。由于没有厂商针对个人计算机设计UNIX系统,因此,在早期并没有支持个人计算机的UNIX操作系统出现(由于UNIX强调多用户多任务的环境,但早期的x86个人计算机架构下的CPU没有能力实现多任务,因此,并没有人对移植UNIX到x86的计算机上感兴趣)。每一家公司的UNIX虽然在架构上大同小异,却仅能支持自身的硬件,所以,早先的UNIX只能类似于服务器(Server)或者是大型工作站(Workstation)。
这个高度开放的UNIX系统在1979年有了重大的转折,因为AT&T出于商业方面以及当时环境的考虑,想要将UNIX的版权收回去,所以当AT&T在1979年发行的第7版UNIX中,特别提到了“不可对学生提供源码”的严格限制。同时,这也造成了UNIX业界之间的紧张气氛,并且引发了很多商业纠纷。

• 1984年之一:x86架构的Minix诞生
在1979年的版权声明中,影响最大的是在学校教UNIX相关知识的教授。想一想,如果没有核心源码,如何教学生认识UNIX呢?这对于Andrew Tanenbaum(谭邦宁)教授来说,实在很伤脑筋。不过,学校的课程还要继续,怎么办?既然1979年的UNIX第7版可以在Intel的x86架构上进行移植,是否意味着可以将UNIX改写并移植到x86上呢?谭邦宁教授自己动手编写了Minix这个“类UNIX(UNIX Like)”的核心程序。在编写过程中,为了避免版权纠纷,谭邦宁完全不看UNIX核心源码,并且强调他的Minix必须能够与UNIX兼容。谭邦宁在1984年开始编写核心程序,直到1986年终于完成,并于1987年出版Minix相关书籍,同时与新闻组相结合。
这个Minix版本比较有趣的地方是,它并不是完全免费的,无法在网络上提供下载,必须要通过磁盘/磁带购买才行。虽然真的很便宜,毕竟因为没有在网络上流传,所以Minix的传播速度并不快。当购买时,随磁盘还会附上Minix的源码。这意味着用户可以学习Minix的核心程序设计概念(这对于Linux的初始开发有很大的影响)。此外,开发人员仅有谭邦宁教授,他始终认为Minix主要用在教育事业上,所以对于Minix只是点到为止。Minix虽然很受欢迎,但却不能满足用户的要求/需求。
• 1984年之二:GNU与FSF计划的成立
Richard Mathew Stallman(史托曼)在1984年发起的GNU计划,对于如今的自由软件风潮有不可磨灭的作用。目前我们所用的很多自由软件,几乎都直接或间接地与GNU计划相关。史托曼是何许人也?为什么会发起这个GNU计划呢?
史托曼(生于1953年,网络ID为RMS)从小就很聪明。他在1971年进入黑客圈中相当出名的人工智能实验室(AI Lab.)。这个时候的黑客专指计算机功力很强的人,而非破坏计算机的怪客(cracker)。当时的黑客圈对于软件的着眼点几乎都是在“分享”,所以并没有专利方面的困扰。这对于史托曼的影响很大。不过,后来管理阶层的问题导致优秀黑客离开该实验室,并且进入其他商业公司继续开发优秀的软件。但史托曼并不服输,仍然持续在原来的实验室开发新的程序与软件,并且他发现,自己一个人无法完成所有工作,于是想到要成立一个开放团体来共同努力。
1983年以后,实验室硬件的更换使得史托曼无法以原有的硬件与操作系统继续自由程序的编写,而且他进一步发现,过去他所用的Lisp操作系统,是麻省理工学院的版权软件,无法共享,这对于想要成立开放团体的史托曼而言是一种阻碍。于是他便放弃了Lisp系统。后来,他接触到UNIX系统,并且发现UNIX在理论与实际上,都可以在不同的机器间进行移植,于是他开始转而使用UNIX系统。因为Lisp与UNIX是不同的系统,所以,史托曼原本已经编写完毕的软件却无法在UNIX上运行。为此,他就开始将软件移植到UNIX上,并且,为了让软件可以在不同的平台上运行,史托曼将他开发的软件均编写成可移植的类型。
1984年,史托曼开始着手GNU计划,这个计划的目的是想建立一个自由的开放的UNIX操作系统。但是,建立一个操作系统谈何容易?当时的GNU计划只有史托曼一个人在做,这实在太麻烦,但又不能不做这个计划,于是史托曼反其道而行之,“既然操作系统太复杂,我就先编写可在UNIX上运行的小程序,这总可以了吧?”基于这个想法,史托曼便开始了程序的编写。在此期间,为了不让自己吃官司,他绝对不看版权软件的源码。为了这个计划,他开始使用原本在UNIX上运行的软件,并自行编写功能与UNIX原有版权软件相似的软件。
但不论是什么软件,都要编译成为二进制文件(binary file)后才能执行,因此,史托曼便开始编写C语言的编译器,即现在相当有名的GNU C (gcc)。这相当重要。因为C语言编译器版本众多,但都是版权软件,如果他写的C编译器很好,而且性能高,那么将会让GNU计划出现在众人面前。
前面提过,计算机仅认识0/1数据,但人类不认识它们。人类对于纯文字的数据(就是所谓的ASCII文件格式)比较有感觉。但偏偏计算机又不认识ASCII格式的文字。为此,就会有很多所谓的“编译器”来辅助我们编写程序。我们一般使用文字编辑器以ASCII纯文字格式来编写程序,再通过所谓的“编译器(compiler)”将刚刚完成的文本文件“编译”成为计算机认识的二进制文件(binary file),让计算机认识且可以执行程序。
史托曼在开始编写C编译器时并不顺利,为此,他先转而将Emacs编辑器写成可以在UNIX上运行的软件,并公布源码,因为Emacs太优秀了,因此,很多人便直接向他购买。此时Internet尚未流行,所以,史托曼便借着Emacs以磁带(tape)方式出售,赚了一点钱,从而开始全力编写其他软件。当史托曼在成立自由软件基金会(Free Software Foundation,FSF)后,便请了更多的工程师与志愿者来编写软件。终于还是完成了GCC的编写,这比Emacs更有帮助。此外,他还编写了更多可以被调用的C函数库(GNU C library),以及可以用来操作操作系统的基本接口BASH shell。这些都在1990年前后完成。

如果仅使用文字编辑器来编辑程序,那么,当写错程序语法时,只能利用编译时出现的错误信息来修改,这样效率很低。Emacs是一个很棒的编辑器。注意,是编辑器(editor)而非编译器(compiler)。它可以很快地显示写入的语法可能存在错误的地方,它对于程序设计师来说,是一个很好的工具,所以才会这么受欢迎。
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的出现。
• 1988年:图形界面XFree86计划
鉴于图形用户界面(Graphical User Interface, GUI)的需求日益增多,在1984年由MIT与其他合作厂商首次发表了X Window System,并且在1988年成立了非盈利性质的XFree86组织。所谓的XFree86其实是X Window System + Free + x86的整合名称。当Linux的核心1.0版于1994年发布时,该XFree86的GUI界面已整合于Linux操作系统当中。
为什么称图形用户界面为X呢?因为26个英文字母中,Window的W后面就是X。意指Window的下一版。需要注意的是,X Window并不是X Windows。
• 1991年:芬兰大学生Linus Torvalds的一则消息
到了1991年,芬兰赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息,宣称他以bash、gcc等工具写了一个小小的核心程序,这个核心程序可以在Intel的386机器上运行。这让很多人感兴趣,从此便开始了Linux不平凡的路程。

【责任编辑:雪花 TEL:(010)68476606】

回书目   上一节   下一节

分享到:

OSX系统管理和部署

《OS X系统管理和部署》讲述Mac计算机OS X系统的特性和实际应用[详细]

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点职位

更多>>

热点专题

更多>>

读书

基于Project2003的项目管理
本书的上一版本《基于Project 2002的项目管理》上市以后得到了读者的欢迎,为了更好地将Project 2003新版本的应用介绍给读者,我

51CTO旗下网站

领先的IT技术网站 51CTO 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 51CTO学院