HISTORY AND STANDARDS
(译者:鱼时代 校对:fgn)
Linux 是UNIX操作系统家族中的一员,在计算机出现以来,UNXI已经有很长的历史了。在这一章中的第一部分将对Unix的历史做一个简短的介绍。我们会从UNIX系统和C语言的起源讲起,接着会思考当下的两个关键因数,他们导致了如今的Linux系统的出现: UNIX最显著的一个特征是它的发展是不被单一的供应商或组织所控制的,而是由许多属于商业和非商业的用户组所组成,他们致力与对它的不断改进。这样的历史结果导致了许多的革新性的特点加入到UNIX中去了,但也有负面的后果,随着时间的推移,UNIX实现不同。这样编写的应用程序在所有UNIX实现变得越来越困难。这导致了推动标准化的UNIX实现,我们在本章的第二部分讨论。
FreeBSD)取得了这个品牌。
经常说诸如“Linux,像其他UNIX实现。”
1.1 A Brief History of UNIX and C
1.2 A Brief History of Linux
Linux是常用这个词来指整个类unix操作系统Linux内核的一部分。然而,这是一种误称,因为许多的关键组件包含在一个典型的商业Linux发行版实际上来自Linux早期的项目。
1.2.1 The GNU Project
1984年,理查德·斯托曼,一位在麻省理工学院工作的异常有才华的程序员,开始工作在创建一个“免费”UNIX实现。斯托曼的前景是一个道德和自由被定义在法律意义上,而不是金融意义(见http://www.gnu.org/philosophy/free-sw.html)。然而,法律自由,斯托曼描述了隐式结果,软件,如操作系统可以在没有或极低的成本。
斯托尔曼阻滞了法律限制放在计算机厂商专有的操作系统。这些限制意味着购买计算机软件一般无法看到软件的源代码。他们当然不可能复制,改变,或重新分配。他指出,这样一个框架鼓励程序员互相竞争和囤积的工作,而不是合作和分享它。
1985年,斯托曼创立了自由软件基金会(FSF),一个非营利组织支持GNU项目以及开发的免费软件。
劳伦特,2004]和[罗森,2005]。)
在越来越多的知名项目由GNU项目Emacs文本编辑器,GCC(最初GNU C编译器,但现在改名为GNU compiler collection,包括C编译器,c++,和其他语言),bash shell,glibc(GNU C库)。
(在撰写本文时,工作继续赫德,目前只运行x86-32架构。)
因为这本书主要关心的是Linux内核的API,我们通常使用术语Linux。
1.2.2 The Linux Kernel 在1991年,Linus Torvals,一个在赫尔辛基大学读书的芬兰学生,想给自己编写一个在英特尔80386个人电脑运行的操作系统。在他的研究中,Torvalds开始接触到Minix(一个由Andrew Tanenbaum,一个荷兰的教授在1980年代中期编写的一个类UNIX的操作系统内核开发的系统,它开发了Minix并在课堂上使用,这个内核能在386的系统上运行)。然而,由于其主要目的是作为一个教学工具,它被设计成在很大程度上独立于硬件架构,并没有充分利用386处理器的能力。
因此Torvalds开始一个项目,minix Usenet新闻组:
Do you pine for the nice days of Minix-1.1, when men were men
and wrote their own device drivers? Are you without a nice
project and just dying to cut your teeth on a OS you can try to
modify for your needs? Are you finding it frustrating when
everything works on Minix? No more all-nighters to get a nifty
program working? Then this post might be just for you. As I
mentioned a month ago, I’m working on a free version of a
Minix-look-alike for AT-386 computers. It has finally reached the
stage where it’s even usable (though may not be depending on
what you want), and I am willing to put out the sources for wider
distribution. It is just version 0.02 . . . but I’ve successfully run
bash, gcc, gnu-make, gnu-sed, compress, etc. under it.
后一个由来已久的传统的UNIX克隆的名字以字母X,Linux内核(最终)洗礼。最初,Linux是置于一个更严格的许可,但Torvalds很快可以遵循GNU GPL。
2.5开发内核工作始于2001年11月,并导致Linux 2.6的发布,2003年12月。
An aside: the BSDs(一个旁支:BSDs)
值得注意的是,另一个免费的UNIX已经用于x86-32在1990年代初。Bill 和Lynne Jolitz 开发了端口已经成熟的x86-32 BSD系统,称为386 / BSD。这个端口是基于BSD Net/2发布于(1991年6月)。4.3 bsd版本的源代码,所有剩余的专有AT&T源代码被取代或,在六个源代码文件的情况下不能平凡地重写,删除。x86-32 Jolitzes移植Net/2代码,重写了失踪的源文件,第一个版本(版本0.0)386年2月386 / BSD。经过初始波的成功和受欢迎程度,386 / BSD滞后由于各种原因。面对越来越大的补丁,两种开发小组很快出现,创建自己的基于386 / BSD版本:NetBSD,强调多种硬件平台可移植性,FreeBSD,强调性能和现代BSD是最广范使用的。OpenBSD强调安全。在2003年代中期,一个新的BSD,DragonFly BSD出现从FreeBSD分裂后4. x。DragonFly BSD采用不同的方法从FreeBSD(5. x)对设计对称多处理(SMP)架构。
BSDi分布的二进制代码和源代码以995美元(美元),并建议潜在客户使用他们的电话号码1 - 800 - - - - unix。
法院最终驳回了所有但USL的两个主张,加利福尼亚大学的反对和反诉USL随之而来,在大学声称USL没有给由于信贷使用BSD代码在系统V。
正如[McKusick et al .,1996)所指出的,虽然这引起了一些延迟BSD衍生品的发展,它也有积极的影响,这些系统抓取的三年大学的计算机系统开发工作的研究小组从Net/2的释放。
Linux kernel version numbers
像大多数自由软件项目一样,Linux之前也尝试release-early,经常发布的模型,所以新内核修改频繁出现(有时甚至每天)。随着Linux用户基数的增加,释放模型适应减少中断现有用户。代表一个主要的版本,主要版本中一个小版本,和z小版本的修订(小的改进和错误修正)。
z开发内核分支导致2.4稳定内核分支。
定期有一些讨论微调这个模型,但必要的细节保持如下:
- 发布周期通常长约三个月。
- 如果这些修复有足够高的优先级,和补丁被认为很简单“显然”正确,然后,而不是等到下一个(2.6.z)释放,它们被应用来创建一个发布的形式(2.6.z.r),r是一个序列号对一个小修改(2.6.z)的内核。
- 额外的责任转移到分销供应商确保内核提供了一个稳定的分布。
在许多情况下,手册页注意精确开发内核的特定功能或更改出现。
和第一次出现在稳定的内核版本(2.6.0)。
这允许安装系统继续使用2.4内核,而不是被迫升级到一个新内核系列(可能导致重要的工作在某些情况下)。
Ports to other hardware architectures(对其他硬件架构的端口)
在初始开发Linux,有效实现80386在英特尔是主要目标,而不是可移植性到其他处理器架构。硬件架构的列表,Linux已经移植继续增长,包括x86 - 64、摩托罗拉/ IBM PowerPC和PowerPC64,Sun SPARC和SPARC64(UltraSPARC),MIPS,手臂(Acorn),IBM zSeries(原名System / 390),英特尔ia - 64(安腾;请参阅[Mosberger & Eranian,2002]),日立SuperH,68000年惠普PA-RISC,和摩托罗拉。
Linux distributions(Linux发行版)
因此,Linux发行商的市场打开,谁创建包(分布)自动化安装过程的大部分时间里,创建一个文件系统和安装所需的内核和其他软件。
如今,许多发行公司也雇佣程序员积极促进现有的自由软件项目或启动新项目。
1.3 Standardization
1.3.1 The C Programming Language
1.3.2 The First POSIX Standards
1.3.3 X/Open Company and The Open Group
1.3.4 SUSv3 and POSIX.1-2001
1.3.5 SUSv4 and POSIX.1-2008
1.3.6 UNIX Standards Timeline
1.3.7 Implementation Standards
1.3.8 Linux, Standards, and the Linux Standard Base
1.4 Summary
这个发行版包括源代码,并成为非常受欢迎的在大学,因为它提供了一种廉价的操作系统可以由计算机科学研究和修改代码的学者和学生。
这个发行版成为学术界和广泛形成几个商业实现的基础。
这导致另一个主要的UNIX变体,System V,这也形成了几个商业实现的基础。
许多程序员这么做,随着时间的推移,Linux是扩展和移植到各种各样的硬件架构。
2008年,那么广泛标准的修订完成后,产生POSIX 1003.1 -2008和SUSv4标准相结合。