Linux内核剖析(一)Linux的历史

Unix操作系统


Unix的由来


汤普逊里奇最早是在贝尔实验室开发Unix的,此后的10年,Unix在学术机构和大型企业中得到了广泛的应用,当时的UNIX拥有者AT&T公司以低廉甚至免费的许可将Unix源码授权给学术机构做研究或教学之用,许多机构在此源码基础上加以扩充和改进,形成了所谓的“Unix变种”,这些变种反过来也促进了Unix的发展,其中最著名的变种之一是由加州大学柏克莱分校开发的BSD产品。

后来AT&T意识到了Unix的商业价值,不再将Unix源码授权给学术机构,并对之前的Unix及其变种声明了版权权利。变种BSD Unix在Unix的历史发展中具有相当大的影响力,被很多商业厂家采用,成为很多商用Unix的基础。BSD使用主版本加次版本的方法标识,如4.2BSD,4.3BSD,在原始版本的基础上还有派生版本,这些版本通常有自己的名字,如4.3BSD-Net/1,4.3BSD-Net/2等。其不断增大的影响力终于引起了AT&T的关注,于是开始了一场旷日持久的版权官司,这场官司一直打到AT&T将自己的Unix系统实验室卖掉,新接手的Novell公司采取了一种比较开明的做法,允许柏克莱分校自由发布自己的BSD,但是前提是必须将来自于AT&T的代码完全删除,于是诞生了4.4 BSD Lite版,由于这个版本不存在法律问题,4.4BSD Lite成为了现代BSD系统的基础版本。尽管后来,非商业版的Unix系统又经过了很多演变,但其最终都是创建在BSD版本上(Linux除外)。所以从这个角度上,4.4 BSD又是所有自由版本Unix的基础,它们和System V及Linux等共同构成Unix操作系统这片璀璨的星空。

BSD在发展中也逐渐派生出3个主要的分支:FreeBSD、OpenBSD和NetBSD。

此后的几十年中,Unix仍在不断变化,其版权所有者不断变更,授权者的数量也在增加。Unix的版权曾经为AT&T所有,之后Novell拥有了Unix,再之后Novell又将版权出售给了SCO,但不包括知识产权和专利权(这一事实双方尚存在争议)。有很多大公司在取得了Unix的授权之后,开发了自己的Unix产品,比如IBM的AIX、HP的HP-UX、SUN的Solaris和SGI的IRIX。

Unix因为其安全可靠,高效强大的特点在服务器领域得到了广泛的应用。直到GNU/Linux流行开始前,Unix也是科学计算、大型机、超级电脑等所用操作系统的主流。

UNIX的完整历史


初创期

Unix的诞生和Multics(Multiplexed Information and Computing System)是有一定渊源的。Multics是由麻省理工学院,AT&T贝尔实验室和通用电气合作进行的操作系统项目,被设计运行在GE-645大型主机上,但是由于整个目标过于庞大,糅合了太多的特性,Multics虽然发布了一些产品,但是性能都很低,最终以失败而告终。

AT&T最终撤出了投入Multics项目的资源,其中一位开发者──肯·汤普逊则继续为GE-645开发软件,并最终编写了一个太空旅行游戏。经过实际运行后,他发现游戏速度很慢而且耗费昂贵——每次运行会花费75美元。

在丹尼斯·里奇的帮助下,汤普逊用PDP-7的汇编语言重写了这个游戏,并使其在DEC PDP-7上运行起来。这次经历加上Multics项目的经验,促使汤普逊开始了一个DEC PDP-7上的新操作系统项目。汤普逊和里奇领导一组开发者,开发了一个新的多任务操作系统。这个系统包括命令解释器和一些实用程序,Multics是“MULTiplexed Information and Computing System”的缩写,在1970年时,那部PDP-7却只能支持两个用户,当时,Brian Kernighan就开玩笑地戏称他们的系统其实是:“UNiplexed Information and Computing System”,缩写为“UNICS”。于是这个项目被称为UnICS( Uniplexed Information and Computing System)。后来,大家取其谐音这个名字被改为UNIX。

发展期

最初的Unix是用汇编语言编写的,一些应用是由叫做B语言的解释型语言和汇编语言混合编写的。B语言在进行系统编程时不够强大,所以汤普逊和里奇对其进行了改造,并与1971年共同发明了C语言。1973年汤普逊和里奇用C语言重写了Unix。在当时,为了实现最高效率,系统程序都是由汇编语言编写,所以汤普逊和里奇此举是极具大胆创新和革命意义的。用C语言编写的Unix代码简洁紧凑、易移植、易读、易修改,为此后Unix的发展奠定了坚实基础。

1974年,汤普逊和里奇合作在ACM通信上发表了一篇关于UNIX的文章,这是UNIX第一次出现在贝尔实验室以外。此后UNIX被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。

1975年,UNIX发布了4、5、6三个版本。1978年,已经有大约600台计算机在运行UNIX。1979年,版本7发布,这是最后一个广泛发布的研究型UNIX版本。20世纪80年代相继发布的8、9、10版本只授权给了少数大学。此后这个方向上的研究导致了九号计划的出现,这是一个新的分布式操作系统。

1982年,AT&T基于版本7开发了UNIX System Ⅲ的第一个版本,这是一个商业版本仅供出售。为了解决混乱的UNIX版本情况,AT&T综合了其他大学和公司开发的各种UNIX,开发了UNIX System V Release 1。

这个新的UNIX商业发布版本不再包含源代码,所以加州大学柏克莱分校继续开发BSD UNIX,作为UNIX System III和V的替代选择。BSD对UNIX最重要的贡献之一是TCP/IP。BSD有8个主要的发行版中包含了TCP/IP:4.1c、4.2、4.3、4.3-Tahoe、4.3-Reno、Net2、4.4以及4.4-lite。这些发布版中的TCP/IP代码几乎是现在所有系统中TCP/IP实现的前辈,包括AT&T System V UNIX和Microsoft Windows。

其他一些公司也开始为其自己的小型机或工作站提供商业版本的UNIX系统,有些选择System V作为基础版本,有些则选择了BSD。BSD的一名主要开发者,比尔·乔伊,在BSD基础上开发了SunOS,并最终创办了太阳计算机系统公司。

1991年,一群BSD开发者(Donn Seeley、Mike Karels、Bill Jolitz和Trent Hein)离开了加州大学,创办了Berkeley Software Design, Inc (BSDI)。BSDI是第一家在便宜常见的Intel平台上提供全功能商业BSD UNIX的厂商。后来Bill Jolitz离开了BSDI,开始了386BSD的工作。386BSD被认为是FreeBSD、OpenBSD和NetBSD、DragonFlyBSD的先辈。

AT&T继续为UNIX System V增加了文件锁定,系统管理,作业控制,流和远程文件系统。1987到1989年,AT&T决定将Xenix(微软开发的一个x86-pc上的UNIX版本),BSD,SunOS和System V融合为System V Release 4(SVR4)。这个新发布版将多种特性融为一体,结束了混乱的竞争局面。

1993年以后,大多数商业UNIX发行商都基于SVR4开发自己的UNIX变体了。

现况

UNIX System V Release 4发布后不久,AT&T就将其所有UNIX权利出售给了Novell。Novell期望以此来对抗微软的Windows NT,但其核心市场受到了严重伤害,最终Novell将SVR4的权利出售给了X/OPEN Consortium,后者是定义UNIX标准的产业团体。最后X/OPEN和OSF/1合并,创建了Open Group。Open Group定义的多个标准定义着什么是以及什么不是UNIX。

实际的UNIX代码则辗转到了Santa Cruz Operation,这家公司后来出售给了Caldera Systems。Caldera原来也出售Linux系统,交易完成后,新公司又被重命名为SCO Group。

部门的解散

根据一项报道指出,当年负责研发UNIX与后续维护工作的贝尔实验室1127部门已于2005年8月正式声明解散。肯·汤普逊已退休,现居加州;丹尼斯·里奇调到别的部门;而Douglas McIlroy则在达特茅斯学院担任教授。

Unix的文化

UNIX is not just an operating system, but a way of life.(UNIX不仅仅是一个操作系统,更是一种生活方式。) 经过几十年的发展,UNIX在技术上日臻成熟的过程中,她独特的设计哲学和美学也深深地吸引了一大批技术人员,他们在维护、开发、使用UNIX的同时,UNIX也影响了他们的思考方式和看待世界的角度。这些人自然而然地形成了一个社团。

UNIX重要的设计原则:

简洁至上

提供机制而非策略
  • 1
  • 2
  • 3

理查德·斯托曼和他的自由软件计划(GNU)


在1983年,理查德·斯托曼创建了以创建一个自由软件,类Unix,与POSIX兼容的操作系统为目标的GNU计划。作为这个计划其中的一部分,他又写了GNU通用公共许可证(GPL)。20世纪90年代初,已经有足够的软件去创建一个完整的操作系统。但因为在1987年时,理查德·斯托曼决定以Mach微内核进行开发,认为可以借此加速操作系统的开发,但因为一直不确定卡内基梅隆大学何时要将核心源代码发布,造成项目三年进展缓慢。GNU的内核,GNU Mach和GNU Hurd没能够充分吸引开发者,这导致了GNU的未能完成。

在20世纪80年代还有另外一个关于自由操作系统的项目,伯克利软件套件。这是由UC Berkeley从AT&T的第六版Unix开发而来的。因为它包含了AT&T所拥有的的Unix代码,所以AT&T在20世纪90年代初对加利福尼亚大学提起了法律诉讼。这严重限制了BSD的发展与应用。

MINIX是安德鲁·斯图尔特·塔能鲍姆在1987年发布一个用于教学的微内核架构的类Unix系统。虽然系统的源代码容易得到,但是对源代码的修改与再发布却受到了限制。另外,MINIX的16位的设计与当时日渐便宜及受欢迎的、个人电脑的Intel 80386架构兼容得不好。

这些因素使得Torvalds开始了他的项目。他曾说过,如果那时候有可用的GNU或者386BSD内核的话,他很可能就不会去写他自己的内核了

Linux操作系统


Linux的诞生


1991年,在赫尔辛基,Linus Torvalds开始那个后面成为了Linux内核的项目。最初它只一个Torvalds用来访问大学里的大型的Unix服务器的虚拟终端。他专门写了一个用于他当时正在用的硬件的,与操作系统无关的程序,因为他要用他那用80386处理器的新PC机的功能。开发是在Minix上,用至今仍为首选的编译器——GCC——来完成的。
Linus Torvalds

Torvalds在他的书只为欢乐中说过,他最后才意识到自己写了一个操作系统内核。1991年8月25日,他在发布到新闻组“comp.os.minix.”的Usenet上发布了这个系统:

“   使用minix操作系统的各位,大家好!
我正在为386(486)AT clones写一个(自由的)操作系统(只是爱好而已,不会和GNU一样成为广泛且专业的操作系统)。这个计划从4月份开始酝酿,现在已做好准备。我希望得到人们关于minix优缺点的任何反馈意见,因为我的操作系统和它有类似的方面(因为可行性方面的原因,两者的文件系统物理布局相同)。 我刚刚把bash(1.08)和gcc(1.40)移植到了系统上,而且看来运行得很好。这意味着我可以在几个月内我就可以把它变得有实用性了。我想知道大家想要些什么特色。欢迎提任何的建议,但是我不保证我会实现你的建议:-)

Linus (torvalds@kruuna.helsinki.fi)

另:是的,它没有包含任何minix的代码;它的文件系统还是一个多线程的。它没有可移植性(它利用了386的任务调度算法等),而且它很可能永远只会支持AT的硬盘(我只有这种硬盘:-( )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

名称的由来


Linus Torvalds本要把他的发时叫做Freax——“fread”,“free”和“x”(暗指Unix)的合成词。在开发系统的前半年里,他把文件以文件名“Freax”存储。Torvalds考虑过Linux这个名字,但是因为觉得它过于自我本位而放弃了使用它[6]。

为便于开发,在1991年9月,他把那些文件上传到了赫尔辛基工业大学(HUT)的FTP服务器(ftp.funet.fi)。Torvalds在HUT负责管理那个服务器的同事Ari Lemmke,觉得“Freax”这个名字不是很好,就在不咨询Torvalds的情况下,把项目的名字改成了“Linux”。但是之后,Torvalds也同意“Linux”这个名字了:“经过多次讨论,他承认Linux这个名字更好。在0.01版本Linux的源代码的makefile里仍然使用‘Freax’这个名字,在之后‘Linux’这个名字才被使用。所以,Linux这个名字并不是预先想好的,只是它被广泛接受了而已”。

关于GNU/Linux命名方式的争议


“Linux”这个名称一开始只被Torvalds用于Linux内核。但是这个内核却常和其他软件一起使用,尤其是GNU计划的软件。这很快就成为最受欢迎的GNU软件。1994年六月,在GNU的期刊中,Linux被称作“自由Unix克隆版”,Debian计划也开始把它的产品叫做“Debian GNU/Linux”。1996年5月,Richard Stallman发布了编辑器Emacs的19.31版本,其中系统的名称从Linux变成了Lignux。这种拼法为的是明确指出GNU和Linux的结合。但是这不久就被“GNU/Linux”所代替了。

对这个名称,不同人有不同的反应。GNU和Debian项目使用那个名字,但是,多数开发者仍然简单地用“Linux”来指代它们的结合。

官方吉祥物


Tux
Tux
1996年,Torvalds为Linux选定了企鹅作为它的吉祥物。Larry Ewing提供了吉祥物的初稿。现在正在使用的著名的吉祥物就是基于这份初稿的。James Hughes根据“Torvalds’s Unix”为它取了名字Tux。

新的发展


内核

除了Torvalds,还有许多知名的如阿兰考克斯Alan Cox和马塞洛托萨蒂Marcelo TosattiLinux内核维护者。 Cox维护2.2版的内核直到2003年底,同样, Tosatti维护2.4版的内核直到2006年年中,程序员Andrew Morton 带动了于2003年12月18日发布的首个稳定版本-2.6版内核的开发和维护。而旧版本也还在持续地改进中。

Linux在多方面成功应用,其主要原因在于它是自由软件和它的软件的稳定性、安全性和可扩展性,以及因此而带有的可维护性。虽然确实存在着漏洞,例如vmsplice() exploit,但是这些漏洞会很快被修复[来源请求]。

社区

关于Linux的大部分工作都是由社区完成的:世界各地使用Linux的程序员都把建议的改进发给维护员。很多公司还不但参与内核的开发,还参与了一些随Linux一起发布的辅助软件的编写。

Linux的版本当中,既有像Debian那样由自发组织发布的,又有像openSUSE和Fedora那样直接和一些公司相关的。为了交换意见,各个项目的成员常在各种会议交流会上会面。其中最大的交流会是在德国(目前是柏林)举行的LinuxTag。每年有大约10,000人聚集在一起讨论Linux以及与Linux相关的项目。

开源发展实验室和Linux基金会

开源码发展实验室(Open Source Development Lab)创立于2000年。它是一个独立的非营利性组织。它的目标是优化Linux以应用于数据中心和运营商的领域。它是Linus Torvalds和Andrew Morton工作的赞助来源。2006年年中,Morton去了Google(Google也是使用Linux内核的);Torvalds全职为OSDL开发Linux内核。非商业性运营机制的资金主要来源于Red Hat,Novell,三菱,英特尔, IBM ,戴尔和惠普等几家大公司。

2007年1月22日,OSDL和自由标准组织合并为Linux基金会,把它们的工作焦点集中在改进GNU/Linux以与Windows竞争。

相关公司

虽然是开源项目,但是还是有一些公司从中获取了利益。这些公司大多也是开源发展实验室的成员。它们在Linux的改进与开发中投入了许多资源以使其能够适应不同领域的应用。其中包括驱动程序捐赠的硬件,对开发Linux软件的人员现金的捐赠,以及对Linux程序员的雇用。例如IBM和HP,它们首先在它们的服务器上使用了Linux;又如Red Hat,它维护着它自已的版本。同样,Trolltech通过对Qt的开发和把它GPL许可化,以及启用一些X和KDE开发人员来支持Linux。前者更使得开发KDE成为了可能。

关于Linux的争论

Linux自出现以来就已经引起了反复的争议。

“Linux已经过时”

塔能鲍姆-托瓦兹辩论
1992年,著名的计算机科学家,Minix和微核心的作者,安德鲁·斯图尔特·塔能鲍姆在新闻组comp.os.minix上写了一篇题为《Linux已经过时》的文章。这篇文章标志着对Linux内核的著名的大讨论的开始。其中对Linux的批评主要是:

该内核是宏内核的,因此它是过时的;
因使用Intel 386处理器而带来的不可移植性。“写一个与某特定硬件,特别是像Intel这种奇怪的硬件相关的操作系统,在根本上就是错误的。”;
没有个人严格控制源代码;
Linux使用了一系列无用的特色(他认为多线程的文件系统只会使用系统性能低下)。
事实证明,塔能鲍姆认为Linux会在几年之内就会过时并被GNU Hurd取替(他认为GNU Hurd更为现代化)的看法是错误的。Linux已经被移植到所有主流的平台,而且它开放的开发模式引领了一种杰出的开发步伐。相反,GNU Hurd还没有拥有可作为产品服务器的稳定性水平]。
  • 1
  • 2
  • 3
  • 4
  • 5

反对开源文件的出版物

来自微软的竞争
虽然Torvalds说过微软感到的来自Linux的威胁与他无关,但是微软和Linux阵营在1997年到2001年间还是有着很多敌对的情况。这种情况在1998年Eric S. Raymond发表《万圣节文件》的时候变得明显起来。这里由一位微软工程师写的关于寻求解决自由软件对微软的威胁的策略的文章。

SCO-Linux争议

2003年3月,SCO Group指责IBM把UNIX的代码移植到Linux侵犯了他们的版权。SCO声称它们拥有代码的版权并IBM提起了诉讼。Red Hat又提起了反诉讼,因此SCO又提起了其他相关的诉讼。在这些诉讼进行的同时,SCO开始把Linux的许可权卖给那些不愿意冒受SCO投诉的险的用户。因为Novell也声称拥有UNIX的版权,所以它又对SCO提起了诉讼。接着SCO便声明破产了。

名称的商标

Linux是Linus Torvalds的注册商标。

商标权
在1994和1995年,有多个来自不同国家的人想把Linux注册为商标,从而一些Linux公司可以从中收取特许使用金。很多Linux的开发人员和用户都不同意此举。Torvalds在Linux国际的帮助下得到了Linux这个商标,然后他把这个商标转让给了Linux国际。对这个商标的保护后来就由一个专门的基金会——非营利性的Linux标识协会——来管理。2000年,Linus Torvalds指定了分配许可权的基本规则。这意味着任何要想以Linux的名义发布产品和服务的人,都要拥有许可证。而许可证要通过购买获得。

大事年表

1983:Richard Stallman创建了以创建一个自由的操作系统为目标的GNU计划。
1989:Richard Stallman撰写了第一版的GNU GPL。
1991:Linux内核在8月25日由21岁的芬兰学生Linus Benedict Torvalds公开发布。
1992:在GNU GPL下Linux内核被重新授权使用,产生了第一个“Linux发行版本”。
1993:超过100个开发者致力于Linux内核开发。在他们的努力下,内核逐渐适应了GNU的环境,这个为Linux创造了巨大的应用空间的广阔环境。Slackware首次发布。后来在同一年,Debian项目设立,现已成为最大的社区发布项目。
1994: 3月, Torvalds认为内核的所有组件已经完全成熟,他放出了Linux的1.0版本。XFree86项目组提供了一个图形化用户界面(GUI).同年Red Hat公司 和SUSE 发行了他们各自的Linux 1.0分发版本。
1995: Linux被移植到DEC Alpha和Sun公司的SPARC平台上,而在接下来的几年里它又被广泛地移植到更多的平台上。
1996: Linux内核2.0版本发布。此时内核已经支持多处理器,因而成为各大公司的绝佳选择。
1998:很多大公司,诸如IBM, Compaq ,Oracle表示支持Linux系统。另外,一部分程序员开始了图形化用户界面KDE的开发。
1999:一些程序员开始致力于开发图形化环境GNOME,它可以替代依靠Qt工具包才能工作的KDE。在这一年里IBM宣布了一项支持Linux的浩大的工程。
2004: XFree86小组分裂,同现有的X Windows标准组织 共同成立X.Org基金会,促使了X Window ServerLinux版本极其快速而迅猛的发展。

年鉴


20世纪60年代,MIT开发分时操作系统(Compatible TIme-Sharing System),支持30台终端访问主机;主机负责运算,而终端负责输入输出;

1965年,Bell实验室、MIT、GE(通用电气公司)准备开发Multics系统,为了同时支持300个终端访问主机,但是1969年失败了;
刚开始并没有鼠标、键盘,输入设备只有卡片机,因此如果要测试某个程序,则需要将读卡纸插入卡片机,如果有错误,还需要重新来过;
Multics:Multiplexed Information and Computing Service

1969年,Ken Thompson(C语言之父)利用汇编语言开发了FIle Server System(Unics,即Unix的原型)
因为汇编语言对于硬件的依赖性,因此只能针对特定硬件;
只是为了移植一款“太空旅游”的游戏;

1973年,Dennis Ritchie和Ken Thompson发明了C语言,而后写出了Unix的内核
将B语言改成C语言,由此产生了C语言之父;
90%的代码是C语言写的,10%的代码用汇编写的,因此移植时只要修改那10%的代码即可;

1977年,Berkeley大学的Bill Joy针对他的机器修改Unix源码,称为BSD(Berkeley Software Distribution)
Bill Joy是Sun公司的创始人;
1979年,Unix发布System V,用于个人计算机;
1984年,因为Unix规定:“不能对学生提供源码”,Tanenbaum老师自己编写兼容于Unix的Minix,用于教学;
1984年,Stallman开始GNU(GNU’s Not Unix)项目,创办FSF(Free Software Foundation)基金会;
产品:GCC、Emacs、Bash Shell、GLIBC;
倡导“自由软件”;
GNU的软件缺乏一个开放的平台运行,只能在Unix上运行;
自由软件指用户可以对软件做任何修改,甚至再发行,但是始终要挂着GPL的版权;
自由软件是可以卖的,但是不能只卖软件,而是卖服务、手册等;
1985年,为了避免GNU开发的自由软件被其他人用作专利软件,因此创建GPL(General Public License)版权声明;
1988年,MIT为了开发GUI,成立了XFree86的组织;
1991年,芬兰赫尔辛基大学的研究生Linus Torvalds基于gcc、bash开发了针对386机器的Lniux内核;
1994年,Torvalds发布Linux-v1.0;
1996年,Torvalds发布Linux-v2.0,确定了Linux的吉祥物:企鹅;

Unix/Linux发展图解


linux
Unix/Linux发展图解
更详细

posted on 2018-05-04 16:13  AlanTu  阅读(4817)  评论(0编辑  收藏  举报

导航