Unix&Linux历史重温

一、Unix的历史 

二、Linux 的由来 
三、百家争鸣 Linux Distribution  

一、Unix的历史 

  不管是IBM 的AIX、Sun的Solaris、HP 的HP-UX、还是近来炙手可热的Linux,都是源自1969年AT&T 贝尔实验室(Bell Labs)所开发出来的「Unix」(Linux kernel 的开发者-Linus Torvalds 也诞生于这一年)!想对Linux的沿革有进一步的了解,不得不先来谈谈Unix的历史,读者若有兴趣,也可以参阅Perter Salus 所著之《A Quarter Century of Unix》一书,此书可说是 Unix操作系统公认的标准史。  
 
□ 1965~1969年-失败的 MUITICS研究计划 
 
  回顾Unix历史,MULTICS(MULTiplexed Information and Computing Service)计划可说是其发展的起源。时光回溯到1965 年,当时大部份计算机都是采用批处理(Batch Processing)的方式;批处理的概念就像是在洗衣服,将衣服(Jobs)累积到一定的数量后才丢到洗衣机(CPU)处理,平时洗衣机
(CPU)是闲置不用的。
 
注:MULTiplexed 有多人多任务的涵义。 
 
  为了提升CPU的性能,美国电话及电报公司(American Telephone and Telegraph Inc.;AT&T)、通用电器公司(General Eletrics;G.E.)及麻省理工学院(Massachusetts Institute of Technology;MIT)计划合作开发一个多用途(General-Purpose)、分时(Time-Sharing)及多用户(Multi-User)的操作系统。当时MIT设计的CTSS(Compatible Time-Sharing System)在分时系统的发展已相当成功;所以「MULTICS(MULTiplexed Information and Computing Service)」就是计划由CTSS 扩展,建置在G.E.大型计算机「GE-645」上,以发展一套更新更好的分时操作系统。 
 
注:MULTICS计划所建置的机器,有些文献写「GE-645」,有些则写「GE-635」;
其实是 G.E.为了这个计划,将「GE-635」的硬件做了部份调整,因为与原有的
「GE-635」有所不同,故称为「GE-645」。 

 
  这里笔者先打个岔,什么是操作系统呢?操作系统是一个介于「计算机硬件」和「应用程序」间的程序(图1-1),其最重要的任务就是提供应用程序的使用接口,并能管理各项硬件资源,使计算机能运行的更有效率。 
 
图1-1、操作系统与计算机硬件、应用程序关系图
 
  依特性来看,操作系统可分为单工与多任务两类。单工的操作系统,如 DOS,通常是等一个应用程序执行完后才会执行另一个程序,因此应用程序可以无限制地使用系统的CPU时间、内存和I/O…等资源,这个应用程序甚至可以占据系统,不再将主导权交回操作系统。单工的操作系统只须提供系统调用便可运作。 
 
  而多任务的操作系统,如MULTICS、Unix和Linux,通常会允许多个应用程序同时进行,共享CPU时间和内存,因此只提供系统调用的服务是不够的,还必须将硬件资源做合理的分配与管理,使这些同时执行的应用程序不会互相干扰(例如A程序的数据不能写入B程序占用的内存),才能确保这些应用程序顺利地完成任务。 
 
  由于MULTICS有不少设计在当时是极新颖且颇富创意的,因此吸引了不少研究机构的注意。当时仍和AT&T 同属一家公司的贝尔实验室(Bell Labs)更在 60年代末期参与此计划;Unix之父Ken Thompson 也刚好由加州大学(University of California at Berkeley;UCB)换到贝尔实验室(Bell Labs),成为MULTICS研究小组的一员。 
 
  不过MULTICS的发展进度缓慢,原本预定两年就应该有成果,但却迟迟不见有进展;所以到了1969年2月,贝尔实验室(Bell Labs)的有力人士即决定退出MULTICS 计划。 
 
  虽然贝尔实验室(Bell Labs)退出,但 MULTICS计划仍持续发展着。在1972年Honeywell并购 G.E.的计算机部门后,MULTICS更进入了商业市场,但始终不太成功。MULTICS比较盛行的八十年代,约有 75至100台价值数百万美元的大型计算机使用此操作系统!然而1977年,MIT也退出MULTICS的开发。
八十年代中期,Honeywell把计算机事业部卖给 Bull 后,MULTICS的发展也终于在1988年划上休止符。 
 
□  1969年 8月-妙不可言的人和月(Man-Month) 
 
  Unix之父 Ken Thompson曾在 MULTICS 计划中,为「GE-645」写了个名为「太空旅行(Space Travel)」的游戏程序;当贝尔实验室(Bell Labs)退出MULTICS 计划后,Ken Thompson 打算找一台机器把此游戏移植过去,于是便和Dennis Ritchie 向贝尔实验室(Bell Labs)申请一台「DEC-10」的机器,以建立一台交互式、多使用者的分时系统,可惜当时申请并没有通过。最后,他们就用一台巳弃置在旁的「Digital PDP-7」迷你计算机(minicomputer)进行他们的计划。这台机器最后就被称为「角落中乏人问津的PDP-7(Little-used PDP-7 in a corner)」。 
 
  「PDP-7」是DEC(Digital Equipment Corporation)在1964年生产的迷你计算机,其所执行的操作系统对于Ken Thompson 而言是十分简陋的,于是Ken Thompson 就以他在 MULTICS计划中学到的技术和经验,为这台过时的计算机撰写一套新操作系统。这套操作系统有很多构想是来自MULTICS,包括树状结构(tree-structured)的文件系统、命令解译器(Command Interpreter)及对外围设备(Device)的存取控制方式。 
 
  最初,Ken Thompson 并不是直接在「PDP-7」上撰写新的操作系统,而是先在「GE-645」上使用 GEMAP组译器(Assembler)的宏(Macros)编写程序,再经由一后置处理器(post-processer)产生可供「PDP-7」读取的资料。这样一来一回,由「GE-645」到「PDP-7」,直到产生具备核心(Kernel)、编辑器(Editor)、组译器(Assembler)、Shell 及一些公用程序(如 rm、cat、及cp…等)的雏型,当整个系统可以自给自足后,所有工作才移到「PDP-7」继续开发。 
 
  读者可能会好奇Ken Thompson 花了多少时间完成这个新的操作系统?答案是「一个月」!1969年8月,Ken Thompson以短短四个星期的时间,在 DEC的「PDP-7」完成了 Unix操作系统的原型。 
 
  《A Quarter Century of Unix》的作者 Perter Salus 说:「这是他毕生所见到,最伟大的程序设计大师的一个月,令人叹为观止」!笔者觉得Ken Thompson开发Unix操作系统时,有几个概念影响后世颇深: 

Δ所有架构(甚至硬件本身)均用一个一个的文件表示 
 【Everything(including hardware) is a file】
Δ以文字形式储存设定文件数据 
 【Configuration data stored in text】
Δ程序尽量朝向小而单一的目标设计 
 【Small, single-purpose program】
Δ尽量避免令人困惑的使用者接口 
 【Avoid captive user interfaces】
Δ可将几个程序连结起来,处理大而复杂的工作 
 【Ability to chain program together to perform complex tasks】 

 
  受限于机器的性能,「PDP-7」只能支持两个使用者,实在称不上是多用户(multiuser);当时和Ken Thompson 一起共事的Brian W. Kernighan 便玩弄「MUITICS」这个字,开玩笑地戏称他们的系统其实是「UNiplexed Information and Computing System」,并缩写为「UNICS」,后来取其谐音,就称其为「Unix」了!提起Unix的名字,很多人都疑惑正确的写法是全部大写的「UNIX」,还是仅开头字符大写的「Unix」?Dennis Ritchie 如是说:「UNIX这个写法源自1974年CACM 的文件『The UNIX Time-Sharing System』,当时这群学者刚刚取得新的typesetter 以开发了 troff ;这些人对大写字款着了迷,导致了『UNIX』的产生」。即使后来 Dennis Ritchie 多次以「Unix」不是任何句子的缩写为由,想
在几份贝尔实验室(Bell Labs)的文件用回「Unix」,然而「UNIX」的用法仍然相当普及。而后来全部大写的「UNIX」也变为注册商标。 

  □  1971年-Unix第一版 
 
  由于「PDP-7」的计算能力有限,也不太可能提供平行处理的服务,于是Ken Thompson和Dennis Ritchie 再次提出申请,以研究文书处理系统的名义购一台「PDP-11/20」。由于「PDP-11」的价格只是「DEC-10」的凤毛麟角,而且申请的目的十分具体,AT&T 的管理当局便宽宏大量地为他们购买了
「PDP-11/20」型的机器。 
 
  由于当时整个系统全是以硬件依赖性甚高的汇编语言所编写,要将Unix移植到「PDP-11/20」上,可不是件轻而易举的事!他们在「PDP-11/20」将Unix加上一个编辑器,开发出一套文字处理系统-就是现在 Unix操作系统中文字处理系统(nroff/ troff )的前身。中间有个小插曲,因为「PDP-11/20」的磁盘比主机足足慢了三个月才运到实验室,就在等候磁盘的空闲期,Ken Thompson 用「PDP-11」的汇编语言(Assembly Language)重写了整个Unix核心及基本的命令。当时那台「PDP-11/20」只有24KB物理内存,而这个最早期的「PDP-11」版 Unix只占用了 12KB,其余的内存就被用作 RAM Disk
和用户的程序执行(笔者不由得想说声:「Ken真是太神了」!)。在毫无内存保护(Memory Protection)和仅有500KB 磁盘空间的情况下,Ken Thompson领军的Unix小组继续 Unix的开发工作。 
 
  此时,贝尔实验室(Bell Labs)的专利局正在寻找一个系统作为处理文件的工具;Ken Thompson所开发的文字处理系统恰好符合需求,贝尔实验室(Bell Labs)的专利局就成了 Unix的第一家商业用户。 
 
  1971年11 月,Unix小组终于将 Unix第一版的说明手册(Manual)定稿,该系统的手册被标示为「First Edition」。往后由贝尔实验室(Bell Labs)发展的Unix版本,都是以同时出版的说明文件版本号码为准;例如 Unix Version 1(V1)其实就是指 Unix第一版说明书所载的 Unix。而在贝尔实验室(Bell Labs)内部的Unix的版本一直都称呼为「nth Edition Unix」,不是外界的「Unix Version n」。 
 
  Unix第一版已有了 ed、fork()、roff( troff  的前身)及基本的文件系统…等功能,并被用作处理专利文件的工具。而pipe()…等功能则在Unix Version 2 中首次出现。 
 
□  1973年 2月-以 C语言开发的 Unix第三版 
 
  在开发Unix第一版时,由于「PDP-7」和「PDP-11」的汇编语言差异甚大,令移植工作非常因难。Ken Thompson 与Dennis Ritchie 觉得,使用组合语言开发操作系统,虽然能让机器发挥较高的性能,但如果使用与机器依赖性较低的高级语言(High-level Langauge)来撰写,若能保持不错的性能,那么Unix就能移植到各种机器上,再也用不着为特定的机器写软件,而且往后的维护工作将会变得简单许多!在那个完全以汇编语言来开发操作系统的年代,Ken Thompson 与Dennis Ritchie的想法算是相当疯狂! 
 
  Ken Thompson首先尝试使用 FORTRAN,不过没有成功。后来用一个叫BCPL(Basic CPL)的语言开发。BCPL是 Martin Richards在1967年于剑桥设计的;CPL(Combined Programming Language)则是1963年伦敦大学和剑桥大学的合作项目,CPL的设计颇受 1960年开发的 Algol60所影响。  
 
  Ken Thompson与Dennis Ritchie在使用BCPL期间,整理 BCPL 许多的功能,产生另一个新的程序语言-B语言。Unix第一版中就有少量公用程序是用B语言来撰写。后来Dennis Ritchie觉得B语言有缺乏数据类型(Data Type)支持…等缺点,便着手改良B语言,诞生了大名鼎鼎的C语言。 
 
  1973年,对Unix而言是跨时代的一年,Ken Thompson和Dennis Ritchie成功地利用C语言重写了Unix核心,此为Unix第三版。Unix至此在修改上更为便利,硬件的可移植性也较高;种种优点,奠定了Unix普及化的基础。 
 
注:Ken Thompson 与Dennis Ritchie是唯一两位获得 Turing Award(计算机界
的诺贝尔奖-图灵奖)的工程师,其它获奖人都是学者。 

 
□  1973年 11 月-Unix第四版 
 
  Unix第四版完成后,有几家大学和贝尔实验室(Bell Labs)签定协议,获得了第四版的拷贝。在还没有软件授权观念的时代,协议的内容主要是确保原始码不被泄露。Ken Thompson 自己录制磁带,不收任何费用,第一卷磁带就由纽约的哥伦比亚大学(Columbia University)获得。 
 
  1974年,Ken Thompson与Dennis Ritchie在『Communications of the ACM』上发表介绍Unix系统的论文。那时,『Communications of the ACM』是计算器科学的主要刊物,那篇文章在学术界引起了广泛的兴趣。所以,Unix第五版就以「仅用于教育目的」的协议,提供给各大学作为教学之用,成为当时操作系统课程中的范例教材。此时,Unix的使用者愈来愈多,甚至逐渐取代原来DEC公司在「PDP-11」机器上的操作系统。这种推广传播的方式,对日后Unix几乎成为主流有着极大的影响,也为 Unix的发展注入不少新生的活力。 
 
□  1976年-走出贝尔实验室的 Unix第六版 
 
  1976年的第六版,更是 Unix发展史上的重要里程碑,也是 Unix在贝尔实验室外(尤其是大学中)第一个广为流传的版本。在这之前,Unix只存在于 AT&T内部及少数大学;1976年起,大学内使用免付权利金,Unix首次流传到 AT&T以外的地方。Unix也开始走出学术界的象牙塔,透过授权(License)的方式,进入商业市场。 
 
□  1978年-System IV和 4.x BSD分庭抗礼 
 
  1978年,对 Unix而言是革命性的一年;因为学术界的老大柏克莱大学 (UC Berkeley),推出了一份以第六版为基础,加上一些改进和新功能而成的 Unix。这就是著名的「1 BSD(1st Berkeley Software Distribution)」,开创了Unix的另一个分支:BSD 系列。 
 
  同时期,AT&T成立USG(Unix Support Group),将 Unix变成商业化的产品。USG 对外发表的第一版本是System III,下一个版本为System IV。从此,BSD的 Unix 便和AT&T 的Unix 分庭抗礼,Unix就分为System IV和4.x BSD这两大主流,各自蓬勃发展。到了八十年代末才开始有整合的动作,如Sun 
Solaris OS 及POSIX。 
 
注:POSIX(Portable Operation System Interface) 
由于有太多厂商各自发展多样化的Unix系统,导致各 Unix系统彼此互不兼容;
因此美国NIST/CSL 便在1988 年,召集各家Unix厂商、使用者与 Unix组织,
共同制定Portable操作系统的标准接口「IEEE 1003.1」,也就是POSIX。POSIX
的全名是Portable Operation System Interface,主要的内容是对程序的撰写制
定一套标准的格式,例如针对:C programming interface、Library 的system 
calls、Files、Process 和Terminal I/O…等的程序写法予以规范,使遵守此规
范的应用程序源代码具备portability 的能力,并在Unix产品做测验和认证,使
各Unix平台规格兼容统一。程序设计师只要遵守 POSIX规定写程序,那么不管
在那个 Unix平台所撰写的源代码,都可以很容易地移植到其它的 Unix平台上。
 
 
□  分裂的 1979年-最后一个真正的 Unix 

  1979年发布的第七版,在许多 Unix 玩家的心目中是「最后一个真正的 Unix」,也是「空前绝后的一个 Unix」。这个版本包括一个完整的K&R C 语言和Bourne Shell;而另人惊讶的是,Unix 第七版的kernel 竟只有 40 Kbytes!  
  后来Unix第七版又被移植到VAX上,称为「32V」。由于 Unix 轻薄短小,许多人加入Unix的研发工作,如伊利诺大学(University of Illinois)、哈佛大学(Harvard University)、DEC…等,其中以柏克莱大学(UC Berkeley)的成果影响最深远,柏克莱大学 (UC Berkeley)的Bill Joy 和 Ozalp Baboglu 以「32V」为基础,加入虚拟内存、需求分页及分页替换等重要功能后,发表3 BSD Unix。因为它具有大型的内存管理机制,因而获得 DARPA(美国国防部高等防卫研究所)的支持。 
 
  3BSD Unix除了增加32位的虚拟内存功能之外,也加入许多公用程序(如:vi 编辑器…等),并把现在必备的操作接口C Shell加到系统中。BSD因此得以迅速的发展,而成为另一种风格的Unix。到了4.2 BSD时,它已能支持LAN(如Ethernet 和Token Ring)及 WAN(如 NSFNET)。  
 
  可惜AT&T 最后竟使出杀手绝招,一状告到法院,说BSD剽窃AT&T的原始码,而终结了颇受好评的BSD 系统。而AT&T本身则因反拖拉斯法被拆解成几个子公司,使其可以正大光明的为Unix商品化,全心全意的发展整个操作系统。 
 
  由于Unix是由C语言写成的,只要稍微修改源代码,便可在不同的硬件架构上面执行。因此,很多商业公司及学术机构均加入这个操作系统的研发,各个不同版本的Unix也开始蓬勃发展,例如 AT&T的System V、加州 BSD版、IBM 的AIX…等。 
 
□  1984年-麻省理工学院(MIT)的阿西娜计划(Project Athena) 
 
  有鉴于图形使用者接口(Graphical User Interface;GUI)的需求日益加重,1984年,麻省理工学院(MIT)发展一个可以让窗口接口适应多平台环境的雅典娜计划(Project Athena),并与其它协力厂商发表了 X Window System。1988年,非营利性质的XFree86组织成立,所谓的XFree86其实是X Window System与Free及X86系统架构的整合名称。而这个XFree86 的GUI 界面,更在1994年Linux的核心1.0版释出时,整合于Linux 操作系统中。 
 
□  1984年-GNU(GNU is Not Unix)计划:未完成的 kernel 

  由于AT&T 的态度,让 Unix在商业应用及改良上出现许多问题,而且不能自由修改及散布更好的Unix操作系统。这些商业软件的种种限制,让许多 Unix爱好者及软件开发者感到相当的忧心;著名的Richard M. Stallman先生正是其中一名。他认为,Unix是一个相当好的操作系统,如果大家都能够将自己所学贡献出来,那么这个系统将会更加的优异! 
 
  Stallman 强调,软件的开发应该要有Open Source 的概念,让大家都能够分享别人的结果,并将自己的心得贡献出来,让软件 趋向 更好、更实用。藉由Open Source 的想法,开发的程序将有很多人可以帮忙检验,使得Unix社群更加的茁壮。 
 
  为了自己的理想,Stallman 在1984年实际创立GNU(GNU is Not Unix)。GNU计划开发一套与Unix向上兼容,名为「GNU」的自由软件系统。并在1985年成立自由软件基金会(Free Software Foundation;FSF),创作了许多「自由软件」供大众使用。 
 
  Stallman 开发GNU 操作系统相关组件时,他最主要的关切点,便是要确保他和同伴所开发的程序代码可以自由散布,所以他起草一份保护自由软件的版权声明文件-「GNU/GPL(GNU General Public License)」,或是更简短的称为GPL。  
 
  GPL是一种旨在保护而不在限制使用者权利的软件授权方式。与一般软件授权方式最大的不同点,在于使用GPL当作软件的授权条件时,必须允许使用者拥有自由修改软件的权利,同时也可允许使用者自由散布修改后(或没修改过)的软件,但使用者必须要继续遵守GPL授权。「GNU/GPL(GNU General Public License)」全文可参考 http://www.gnu.org/copyleft/gpl.html,中译版本的网页请见http://www.slat.org/project/legal/GNU_GPL_Chinese。 
 
  GNU程序计划开发出不少惊人的软件,尤其是 GCC。什么是GCC?就是GNU的C语言编译器(GUN C Compiler;GCC)。GCC语言编译器对推广「GNU」计划,着实有莫大的帮助。 
 
  另外两个大计划,当属Shell程序及C语言函式库(C library)的创作了!Shell程序提供操作系统基本的接口,Stallman 曾说:「要键入指令,首先要有Shell程序」。GNU的Shell程序叫bash,这是Bourne Again Shell 的缩写,同样也是对Unix开了个小玩笑,因为 Unix的Shell 程序叫Bourne Shell。 
 
  C语言函数库(C library)则是让一大堆程序可以调用及共享的程序代码,它可以大幅缩小使用者开发程序的大小及时间。C语言函数库(C library)、bash还有许多Unix操作系统的组件,都在 1990 年左右完成,但仍少了最重要的程序-kernel(核心)。Kernel是操作系统最底层的东西,掌管整个硬件资源的工作状态,除了控制系统硬件的资源,也负责管理计算机软件程序的执行,可说是介于硬件和使用者间的接口,提供使用者使用系统所需的服务。硬件、kernel、Shell、C 语言编译器彼此间的关系可参考图1-2。当年因为种种原因,Stallman一直未完成kernel 的开发,最后由Linus Torvalds 所开发的 kernel-Linux弥补了这个缺憾。 
 

图1-2:操作系统简图
 
□  1991年-UNIX商标数度易主,Linux即将崛起! 
 
  1991年4 月,AT&T 成立子公司Unix System Lab oratories(USL),自此,UNIX 这个商标便由USL所拥有。 
 
  1993年,网络巨人Novell出奇不意的买下 USL,并破天荒的把 UNIX商标让渡给 X / Open,Unix的未来正如他的过去,充满了璀璨而令人目不暇给的光芒。至于Unix未来的统一大业,谁也不敢预言,毕竟有了过去的纷扰与风雨,也才有今天成熟又好用的Unix。 
 
  其实,Unix的故事仍旧延续着…许多网站也为这段历史留下记录。图1-3列出一个详细记录Unix历史的网站(http://www.levenez.com/unix/),这个网站忠实记载着1969~2005 年Unix发展的大事,而且还有 PDF 档案可供下载。网站的首页陈列每个时期Unix的历史,也代表着无数工程师的心血与努力。 
 

图1-3:介绍Unix历史的网站(http://www.levenez.com/unix)


图1-4:各种Unix-Like 操作系统发展的年代
 
注:Linux、IBM AIX、Sun Solaris、FreeBSD、BSD、Sun Unix、SCO Unix、
HP Unix…等,都是由同一个祖先「Unix」衍生而来。所以这些操作系统称为
Unix-Like 的操作系统。 

 
  回顾Unix历史,最主要有两大流派:那就是AT&T 的System V 与 BSD(Berkeley Software Distribution);SVR4 则是两大流派融合后的产物。底下列出这两大派系的主要版本与版本特色: 
 
□  System V的主要版本:  
 
○ System III(1981):AT&T 第一个拿来营利的 Unix。
 ΔFIFOs(named pipes)。 
○ System V(1983):
 ΔIPC package(shm,msg,sem)。 
○ SVR2(1984):
 ΔShell函数(sh)。
 ΔSVID(System V Interface Definition)。 
○ SVR3(1986):   
 ΔSTREAMS、poll()、TLI(网络软件)。    
 ΔRFS。   
 Δ共享链接库(shared librarys)。   
 ΔSVID 2。   
 Δdemand paging(如果硬件有支持的话)。 
○ SVR3.2(1987):   
 Δ并入Xenix(Intel 80386)。   
 Δ网络。 
○ SVR4(1988):融合了System V、BSD、SunOS,是各种 Unix 的主流。    
 Δ取自SVR3 者:系统管理、Terminal接口、打印机、RFS、STREAMS、uucp 。   
 Δ取自BSD 者:FFS、TCP/IP、sockets、select()、csh。   
 Δ取自SunOS者:NFS、OpenLook GUI、X11/NeWS、共享链接库、具
 Δ有内存映对档案的虚拟内存子系统(virtual memory subsystem with memory-mapped files)。    
 Δksh。   
 ΔANSIC。   
 Δ国际化(8-bit clean)。  
 ΔABI(Application Binary Interface - routines instead of traps)。   
 ΔPOSIX、X/Open、SVID3。 
○ SVR4.1(1992):   
 Δ异步 I/O(取自SunOS)。 
○ SVR4.2(1992):based on SVR4.1ES   
 ΔVeritas FS、ACLs。 
 
□    BSD的主要版本 

  BSD(Berkeley Software Distribution)多半采用在 VAX、RISC…等各式工作站。与System V比起来,BSD 的变动比较快,而且学术研究的味道比较浓厚。许多对 Unix的加强改进都是由 BSD先做出来的,Unix之所以能够流行,BSD居功阙伟! 
○ 2.xBSD(1979):供PDP-11 使用。    
 Δcsh。  
○ 3BSD(1980):    
 Δ虚拟内存。  
○ 4.0BSD(1980):   
 Δtermcap、curses。   
 Δvi。  
○ 4.1BSD(1981):后来AT&T CRG皆以此为版本。   
 Δjob 控制。    
 Δautomatic kernel config。   
 Δvfork()。 
○ 4.2BSD(1983):    
 ΔTCP/IP、sockets、ethernet。   
 ΔUFS:长档名,symbolic links。    
 Δ新的 reliable signals(SVR3 采用了 4.1 的 reliable signals)。    
 Δselect()。 
○ 4.3BSD(1986)。 
○ 4.3 Tahoe(1988):4.3BSD 附加对Tahoe(一款32位的超级迷你电脑)的支援。    
 ΔFat FFS 。   
 Δ新的TCP 算法。 
○ 4.3 Reno(1990)for VAX、Tahoe、 HP 9000/300:    
 Δ大部份的 P1003.1。    
 ΔNFS(from Sun)。   
 ΔMFS(内存文件系统)。    
 ΔOSI:TP4、CLNP、ISODE's FTAM、VT and X.500、SLIP。    
 ΔKerberos 。 
○ Net1与Net2(June 1991):   
 Δ4.4BSD(alpha June 1992) for HP 9000/300、Sparc、386、DEC。  
 
  而与System V针锋相对的Open Software Foundation,于1991 年底推出了 OSF/1;OSF/1需要SVR2 授权,符合SVID 2、SVID。 
 
二、Linux 的由来 

  由于版权问题,Unix 的源代码不再适用于教学,1987 年Andrew Tanenbaum 遂写了MINIX作为教学的工具;MINIX的意思为 mini-Unix,它是一个简化的操作系统,适合入门者学习。因为简单,开始时获得众人的青睐,但好景不长,主要还是因为过于简单的设计反而不切实用。  
 
  1991年,芬兰赫尔辛基大学的学生Linus Torvalds,由于在使用MINIX时对其提供的功能不甚满意,自行发展操作系统(那时,Linus Torvalds才25岁)。Linus Torvalds利用USENET NEWS对全世界的MINIX使用者发表文章,大意是声明自己正在发展一套「免费」的操作系统,专供386或486 AT 兼容计算机使用,希望贡献给所有MINIX的同好,并强调这套系统算然有一点像MINIX,但是完全没有使用MINIX的源代码,所以没有版权上的问题。这就是Linux的开端-kernel 0.01(图1-5)。 

图1-5:Linus Torvalds的Linux 宣言
 
  Linus 所开发的这个「hobby」是基于Unix系统发展出来的,并且使其可以在Intel主导的x86的系统下执行(当初的个人计算机系统为 386与486架构)。原本这套系统命名为「freax」,后来被称为「Linus's Unix」,简称为 Linux。Linus 将这套系统放到全芬兰最大的 FTP服务器,建了一个 Linux 的子目录,允许人们自由使用(under GNU Public License)。同年10月,Linus 正式推出 Linux 0.02 版,并在Internet中广邀高手加入Linux 的发展工作,更欢迎把MINIX上免费程序移植到Linux中,因此研究成果很快就散布到世界各个角落。 
 
  之后的发展更是快速,几乎一两个礼拜就有新版或修正版的出现,时至今日,kernel的版本已经出到2.6X。Linux的发展不像传统的软件工程,它完全是透过网络,集合世界各地的高手而成的一套操作系统,在这里我们也可以见识到网络快速传播的威力。 
 
  至于Linux 为什么可以如此「火」,笔者将其归纳为下列几点: 
 
□  Linux是个完全免费的 Unix 
 
  Linux是个完全免费的 Unix!藉由许多人的修改与加强,如今 Linux除了可以在原先设计的Intel x86 上执行,它也被移植到 Alpha、Sun Sparc、Motorola 68K、MIPS、 PowerPC…等平台上。  
 
□  Linux虽是Unix的翻版,但并未用Unix的源代码 
 
  虽然Linux撷取许多Unix的构想,并实作Unix的API(像是POSIX和Single Unix Specification 所定义的标准),但它却不 Unix系统直接修改 Unix的源代码,所以不受当年AT&T的版权所限。它采用和 Unix系统不同的实作方式,但却不背离Unix的整体设计目标,也不破坏其应用界面。 
 
  由于Linux 提供和Unix类似的接口,因此,在资源的抽象化及资源共享的型式上就必须和Unix相同,而实作这些接口时所使用的数据结构及算法,则和Unix有所不同。  
 
□  Linux是多人多任务的操作系统 
 
  Linux可以同时允许多人上线工作,并且合理地分配资源给不同的使用者。Linux也是一个多任务的操作系统,许多程序可以一次读到内存内,操作系统执行某个程序一段时间后,就会切换去执行另一个程序。所以内存是被「空间」分割成数个区块,每个区块称为 memory partition,内含一个随时可以执行的程式。CPU 则是被「时间」分割,每段时间执行一个在记忆区块内的程序,时间到了便切换到另一支程序。在Intel x86 平台上,CPU 每秒约切换100次,在 Alpha 平台则切换约1024次;这些切换次数可依需要而修改。大致而言,降低切换次数会使I/O(如键盘、鼠标…等)的反应变慢,但应用程序执行的效率会提高;相反地,如果提高切换次数,则会使程序的执行变慢,因为更多的 CPU 时间被用来切换程序。  
 
□  集成式的核心(monolithic kernel)是最适合的技术 
 
  Linux核心和传统的 Unix一样,是属于集成式的操作系统核心(monolithic kernel),和目前流行的微核心(microkernel)不同。它们将行程管理、内存管理和文件系统全包在一起,成为一个单一的可执行文件;而外围硬件装置管理则另外分开,成为一组驱动程序,每一个驱动程序的目的是控制某一类型的硬件装置(例如控制软盘机)。这种设计是为了降低核心更动的频率,不必为了新硬件装置更改核心,而且驱动程序也比较好写。但是 Linux 核心的进步非常迅速,这种设计反而不利于核心的实验更新,为了克服这个缺点,Linux 提出模块 (module)机制,它和核心的接口要比传统 Unix的驱动程序来的有弹性,可以用来提供新功能给核心,当然也适用于驱动程序。
 
□  硬件需求较低且运行稳定 
 
  Linux只要一般普通的个人计算机就可以安装;既然是Unix-Like 的操作系统,当然也继承了Unix稳定与高效的特点! 

三、百家争鸣 Linux Distribution 

  其实Linux 就本质而言,只是操作系统的核心(kernel),但一个强大的操作系统若缺乏应用程序的搭配,就显得用途不大了。所以一些商业公司或是非营利性的工作团队,便将Linux核心、核心工具与相关的软件集合起来,加入自己公司或团队创意的系统管理模块与工具,释出一套可以完整安装的操作系统,这个完整的Linux操作系统,我们就称为「Distribution」,或者是中文所谓的「发行套件」(图1-6)。 
 
  读者得注意,不要把Distribution 的发行版本编号当成是Linux核心的版本编号,例如在SuSE Linux Enterprise Server 9的发行版本中,数字9是Distribution 的版本编号,而其Linux核心则是2.6.x的版本。 

图1-6:Linux kernel 和Distribution关系图
 
  发展Linux 的公司实在太多了,例如有名的 Red Hat、SuSE、OpenLinux、Mandrake、及Debian…等。很多人担心,如此一来,每个Distribution 是否有很大的差异呢?其实不需要担心!由于各个Distribution 都是架构在Linux核心的基础,来发展属于自己公司风格的Distribution,而且大家都遵守 Linux Standard Base(LSB)的规范,各个Distribution 其实是差不多的!反正用到的都是Linux 核心啊!只是各个Distribution里面所使用的套件可能并不完全相同而已。 
 
  Linux Distribution 的数目非常多,若读者想得知各个 Linux Distribution 的功能及热门程度,可到http://www.distrowatch.com/查询。另外,想下载多种LinuxDistribution,http://www.linuxiso.org 这个网站也提供了丰富的资源。  
 

图1-7:http://www.distrowatch.com 中,各Distribution 的热门程度比较
 

转载自:http://www.lotsir.net/Blog/default.asp?id=494


葉明有感: 
做任何事情,要跨出第一步是最难的。笔者非常喜欢Nike的广告词「Just Do it」!
希望看到这句话时,读者巳成功的跨出第一步!最后,笔者将一句相当不错的

话,送给各位读者互勉。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值