程序员人生 网站导航

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

栏目:综合技术时间:2015-04-25 09:34:03

Unix操作系统


Unix的由来


汤普逊里奇最早是在贝尔实验室开发Unix的,尔后的10年,Unix在学术机构和大型企业中得到了广泛的利用,当时的UNIX具有者AT&T公司以低廉乃至免费的许可将Unix源码授权给学术机构做研究或教学之用,许多机构在此源码基础上加以扩充和改进,构成了所谓的“Unix变种”,这些变种反过来也增进了Unix的发展,其中最著名的变种之1是由加州大学柏克莱分校开发的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的关注,因而开始了1场旷日持久的版权官司,这场官司1直打到AT&T将自己的Unix系统实验室卖掉,新接手的Novell公司采取了1种比较开明的做法,允许柏克莱分校自由发布自己的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。

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

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

UNIX的完全历史


初创期

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

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

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

发展期

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

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

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

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

这个新的UNIX商业发布版本不再包括源代码,所以加州大学柏克莱分校继续开发BSD UNIX,作为UNIX System III和V的替换选择。BSD对UNIX最重要的贡献之1是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。

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

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

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

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。

部门的解散

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

Unix的文化

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

UNIX重要的设计原则:

简洁至上 提供机制而非策略

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


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

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

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

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

Linux操作系统


Linux的诞生


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

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

“ 使用minix操作系统的各位,大家好! 我正在为386486AT clones写1个(自由的)操作系统(只是爱好而已,不会和GNU1样成为广泛且专业的操作系统)。这个计划从4月份开始酝酿,现在已做好准备。我希望得到人们关于minix优缺点的任何反馈意见,由于我的操作系统和它有类似的方面(由于可行性方面的缘由,二者的文件系统物理布局相同)。 我刚刚把bash(1.08)和gcc(1.40)移植到了系统上,而且看来运行得很好。这意味着我可以在几个月内我就能够把它变得有实用性了。我想知道大家想要些甚么特点。欢迎提任何的建议,但是我不保证我会实现你的建议:-) Linus (torvalds@kruuna.helsinki.fi) 另:是的,它没有包括任何minix的代码;它的文件系统还是1个多线程的。它没有可移植性(它利用了386的任务调度算法等),而且它极可能永久只会支持AT的硬盘(我只有这类硬盘:-( )

名称的由来


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”这个名称1开始只被Torvalds用于Linux内核。但是这个内核却常和其他软件1起使用,特别是GNU计划的软件。这很快就成为最受欢迎的GNU软件。1994年6月,在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日发布的首个稳定版本⑵.6版内核的开发和保护。而旧版本也还在延续地改进中。

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

社区

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

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

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

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

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

相干公司

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

关于Linux的争辩

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

“Linux已过时”

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

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

反对开源文件的出版物

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

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

大事年表

1983:Richard Stallman创建了以创建1个自由的操作系统为目标的GNU计划。
1989:Richard Stallman撰写了初版的GNU GPL。
1991:Linux内核在8月25日由21岁的芬兰学生Linus Benedict Torvalds公然发布。
1992:在GNU GPL下Linux内核被重新授权使用,产生了第1个“Linux发行版本”。
1993:超过100个开发者致力于Linux内核开发。在他们的努力下,内核逐步适应了GNU的环境,这个为Linux创造了巨大的利用空间的广阔环境。Slackware首次发布。后来在同1年,Debian项目设立,现已成为最大的社区发布项目。
1994: 3月, Torvalds认为内核的所有组件已完全成熟,他放出了Linux的1.0版本。XFree86项目组提供了1个图形化用户界面(GUI).同年Red Hat公司 和SUSE 发行了他们各自的Linux 1.0分发版本。
1995: Linux被移植到DEC Alpha和Sun公司的SPARC平台上,而在接下来的几年里它又被广泛地移植到更多的平台上。
1996: Linux内核2.0版本发布。此时内核已支持多处理器,因此成为各大公司的绝佳选择。
1998:很多大公司,诸如IBM, Compaq ,Oracle表示支持Linux系统。另外,1部份程序员开始了图形化用户界面KDE的开发。
1999:1些程序员开始致力于开发图形化环境GNOME,它可以替换依托Qt工具包才能工作的KDE。在这1年里IBM宣布了1项支持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的原型)
由于汇编语言对硬件的依赖性,因此只能针对特定硬件;
只是为了移植1款“太空旅游”的游戏;

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的软件缺少1个开放的平台运行,只能在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发展图解
更详细

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐