一天一点学习Linux之LinuxUinx发展历程(1)

发布时间:2013-01-24 17:26:14   来源:文档文库   
字号:
Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。它控制整个系统基本服务的核心程序(kernel)是由Linus 带头开发出来的,Linux这个名称便是以Linus’s unix来命名,Linus 选择用(大众公有版权)GPL的方式来发行这份程序,这个版权允许任何人以任何形式复制与散布Linux 的原始程序。换句话说,Linux实际上是免费的,使用者在网络上就可以得到Linux 的原始程序代码,随心所欲的复制与更改Linux 的原始程序,在因特网的日渐盛行以及Linux 开放自由的版权之下,吸引了无数计算机高手投入开发、改善Linux 的核心程序,使得Linux 的功能日见强大,所以今日我们可以在网络上免费下载Linux使用,或者花很少的一点费用就可以取得Linux光盘,这都是因为Linux是GPL 版权的缘故。   近几年的发展,已使得Linux成为微软、Sun的另一大敌手。Linux挟其价格低廉、品质良好与稳定的竞争优势,正无形无影地扩散至众多以PC为主的工作 平台上。早期因缺乏商业性应用软件,单凭学术味道浓厚的工具程序,是无法打入一般商家的主流操作系统的。然而,现在的Linux已经今非昔比。KDE、Gimp、Gnome等计划相继地开展,为X提供了更多图形接口的桌面操作环境和应用软件。   Unix的发展史   早在Linux出现之前的二十年(大约在1970 年代),就有一个相当稳定而成熟的操作系统存在了,那就是Linux的老大哥Unix。下面我们就先来了解一下Unix的发展史   1969年以前:一个伟大的梦想–Bell,MIT与GE的『Multics』系统   在1965年前后, 由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE, 或称为通用电器)共同发起了Multics的计划,Multics计划的目的是想要让大型主机可以达成提供300个以上的终端机联机使用的目标。   1969年:Ken Thompson的小型file server system   在认为Multics计划不可能成功之后,贝尔研究室就退出该计划。不过,原本参与Multics计划的Ken Thompson已经从该计划当中获得一些思想。因为自己的需要,希望开发一个小小的操作系统以提供自己的需求。经过四个星期的奋斗,他终于以汇编语言(Assembler)写出了一组核心程序,同时包括一些核心工具程序, 以及一个小小的文件系统。那个系统就是Unix的原型。当时Thompson将Multics庞大的复杂系统简化了不少,于是同实验室的朋友都戏称这个系统为:Unics。(当时尚未有Unix的名称)   Thompson的这个文件系统有两个重要的概念,分别是:   所有的程序或系统装置都是档案   不管建构编辑器还是附属档案,所写的程序只有一个目的,且要有效的完成目标。   这些 概念在后来对于Linux的发展有相当重要的影响。   1973年:Unix的正式诞生,Ritchie等人以C语言写出第一个正式Unix核心。   由于Thompson写的那个操作系统实在太好用了,所以在贝尔实验室内部广为流传,并且数度经过改版。因为Unics本来是以汇编语言写成的,汇编语言具有专一性,加上当时的计算机机器架构都不太相同,所以每次要安装到不同的机器都得要重新编写汇编语言,实在不方便。后来Thompson与Ritchie合作想将Unics改以高阶程序语言来撰写。当时现成的高阶程序语言有B语言。 但是由B语言所编译出来的核心效能不是很好。后来Dennis Ritchie将B语言重新改写成C语言,再以C语言重新改写与编译Unics的核心, 最后正名与发行出Unix的正式版本!   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虽然在架构上面大同小异,但是却真的仅能支持自身的硬件, 所以,早先的Unix只能与服务器(Server)或者是大型工作站(Workstation)划上等号。 但到了1979年时,AT&T推出System V 第七版Unix 后,这个情况就有点改善了。 这一版最重要的特色是可以支持x86架构的个人计算机系统,也就是说System V 可以在个人计算机上面安装与运作了。   不过因为AT&T由于商业的考虑,以及在当时现实环境下的思考,于是想将Unix的版权收回去。因此,AT&T在1979年发行的第七版Unix中,特别提到了 “不可对学生提供原始码”的严格限制! 同时,也造成Unix业界之间的 紧张气氛,并且也引爆了很多的商业纠纷~   1984年之一:x86架构的Minix操作系统诞生   关于1979年的版权声明中,影响最大的当然就是学校教Unix核心原始码相关学问的教授了。如果没有核心原始码,那么如何教导学生认识Unix呢?这问题对于Andrew Tanenbaum(谭宁邦)教授来说,实在是很伤脑筋的。既然1979年的Unix第七版可以在Intel的x86架构上面进行移植, 那么是否意味着可以将Unix改写并移植到x86上面了呢?在这个想法上, 谭宁邦教授于是乎自己动手写了Minix这个Unix Like的核心程序! 在撰写的过程中,为了避免版权纠纷,谭宁邦完全不看Unix核心原始码! 并且强调他的Minix必须能够与Unix兼容才行!谭宁邦在1984年开始撰写核心程序, 到了1986年终于完成,并于次年出版Minix相关书籍。   这个Minix版本比较有趣的地方是,他并不是完全免费的,无法在网络上提供下载, 必须要透过磁盘/磁带购买才行,虽然很便宜。不过,毕竟因为没有在网络上流传, 所以Minix的传递速度并没有很快速。此外,购买时,随磁盘还会附上Minix的原始码, 这意味着使用者可以学习Minix的核心程序设计概念。(这个特色对于Linux的启始开发阶段,可是有很大的关系喔!)   1984年之二:GNU计划与FSF基金会的成立   关于GNU,我们会在下一节给出详细解释,这里先略过。   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操作系统当中!   1991年:芬兰大学生Linus Torvalds的一则消息   到了1991年,芬兰的赫尔辛基大学的Linus Torvalds在BBS上面贴了一则消息, 宣称他以bash, gcc等工具写了一个小小的核心程序,这个核心程序可以在Intel的386机器上面运作, 让很多人很感兴趣,从此开始了Linux不平凡的路程!   Linux发展历程   上面我们提到了Unix的历史,也提到了Linux是由Torvalds这个芬兰人所发明的。那么为何托瓦兹可以发明Linux呢?   Linus Torvalds(托瓦兹, 1969年出生)的外祖父是赫尔辛基大学的统计学家, 他的外祖父为了让自己的小孙子能够学点东西,所以从小就将托瓦兹带到身边来管理一些微计算机。 在这个时期,托瓦兹接触了汇编语言(Assembly Language),那是一种直接与芯片对谈的程序语言,也就是所谓的低级语言。必须要很了解硬件的架构,否则很难以汇编语言撰写程序的 。   在1988年间,托瓦兹顺利的进入了赫尔辛基大学,并选读了计算机科学系。在就学期间,因为学业的需要与自己的兴趣, 托瓦兹接触到了Unix这个操作系统。当时整个赫尔辛基只有一部最新的Unix系统,同时仅提供16个终端机(terminal)。早期的计算机仅有主机具有运算功能,terminal仅负责提供Input/Output而已。在这种情况下, 实在很难满足托瓦兹的需求,因为光是等待使用Unix的时间,就很耗时。为此,他不禁想到:我何不自己搞一部Unix来玩?不过,就如同Stallman当初的GNU计划一样,要写核心程序,谈何容易?   不久之后,他就知道有一个类似Unix的系统,并且与Unix完全兼容,还可以在Intel 386机器上面跑的操作系统, 那就是我们上一节提过的,谭宁邦教授为了教育需要而撰写的Minix系统!他在购买了最新的Intel 386的个人计算机后,就立即安装了Minix这个操作系统。托瓦兹也经由这个原始码学习到了很多的核心程序设计的设计概念。托瓦兹跟其他的工程师一样, 他发现Minix虽然真的很棒,但是谭宁邦教授就是不愿意进行功能的加强,导致一堆工程师在操作系统功能上面的欲求不满。 这个时候年轻的托瓦兹就想:既然如此,那我何不自己来改写一个我想要的操作系统?于是他就开始了核心程序的撰写了。   撰写程序需要什么呢?首先需要的是能够进行工作的环境,再来则是可以将原始码编译成为可执行文件的编译程序。 好在有GNU计划提供的bash工作环境软件以及gcc编译程序等自由软件, 让托瓦兹得以顺利的撰写核心程序。他参考Minix的设计理念与书上的程序代码,然后仔细研究出386个人计算机的效能优化, 然后使用GNU的自由软件将核心程序代码与386紧紧的结合在一起,最终写出他所需要的核心程序。 而这个小玩意竟然真的可以在386上面顺利的跑起来,还可以读取Minix的文件系统。 真是太好了。不过还不够,他希望这个程序可以获得大家的一些修改建议, 于是他便将这个核心放置在网络上提供大家下载,同时在BBS上面贴了一则消息:   Hello everybody out there using minix- I’m doing a (free) operation system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones.   I’ve currently ported bash (1.08) and gcc (1.40), and things seem to work. This implies that i’ll get something practical within a few months, and I’d like to know what features most people want. Any suggestions are welcome, but I won’t promise I’ll implement them :-)   这则新闻引起很多人的注意,他们也去托瓦兹提供的网站上下载了这个核心来安装。 有趣的是,因为托瓦兹放置核心的那个FTP网站的目录为 :Linux, 从此,大家便称这个核心为Linux了。(注意,此时的Linux就是那个kernel。 另外,托瓦兹所丢到该目录下的第一个核心版本为0.02)   同时,为了让自己的Linux能够兼容于Unix系统,于是托瓦兹开始将一些能够在Unix上面运作的软件拿来在Linux上面跑。 不过,他发现到有很多的软件无法在Linux这个核心上运作。这个时候他有两种作法, 一种是修改软件,让该软件可以在Linux上跑, 另一种则是修改Linux,让Linux符合软件能够运作的规范! 由于Linux希望能够兼容于Unix,于是托瓦兹选择了第二个作法:修改Linux。 为了让所有的软件都可以在Linux上执行,于是托瓦兹开始参考标准的POSIX(POSIX是可携式操作系统接口(Portable Operating System Interface)的缩写,重点在规范核心与应用程序之间的接口, 这是由美国电器与电子工程师学会(IEEE)所发布的一项标准)规范。因为POSIX标准主要是针对Unix与一些软件运行时候的标准规范, 只要依据这些标准规范来设计的核心与软件,理论上,就可以搭配在一起执行了。 而Linux的发展就是依据这个POSIX的标准规范,Unix上面的软件也是遵循这个规范来设计的, 如此一来,让Linux很容易就与Unix兼容共享互有的软件了。因为Linux直接放置在网络下,提供大家下载, 所以在流通的速度上相当的快,导致Linux的使用率大增。这些都是造成Linux大受欢迎的几个重要因素。   Linux虽然是托瓦兹发明的,而且内容还绝不会涉及专利软件的版权问题。 不过,如果单靠托瓦兹自己一个人的话,那么Linux要茁壮实在很困难。 因为一个人的力量是很有限的。好在托瓦兹选择Linu

本文来源:https://www.2haoxitong.net/k/doc/756c15cf6137ee06eff91869.html

《一天一点学习Linux之LinuxUinx发展历程(1).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式