1.1 Linux简介

1.1.1 Linux的起源

20世纪60年代,大部分计算机都采用批处理(Batch Processing)的方式(也就是说,当作业积累一定数量的时候,计算机才会进行处理)。那时,我们熟知的美国电话及电报公司(American Telephone and Telegraph Inc.,AT&T)、通用电器公司(General Electrics,G. E.)及麻省理工学院(Massachusetts Institute of Technology,MIT)计划合作开发一个多用途(General-Purpose)、分时(Time-Sharing)及多用户(Multi-User)的操作系统,也就是MULTICS,它被设计运行在 GE-645大型主机上。不过,这个项目由于太复杂,整个目标过于庞大,糅合了太多的特性,进展特别慢,几年下来都没有任何成果,而且性能很低。于是到了1969年2月,贝尔实验室(Bell Labs)决定退出这个项目。

贝尔实验室中有个叫 Ken Thompson 的人,他为 MULTICS 这个操作系统写了个叫“Space Travel”的游戏。在MULTICS上经过实际运行后,他发现游戏速度很慢,而且耗费昂贵——每次运行会花费75美元。退出MULTICS项目以后,为了让这个游戏还能玩,他找来Dennis Ritchie为这个游戏开发一个极其简单的操作系统,这就是后来的 UNIX。值得一提的是当时他们本想在DEC-10上写,但是没有申请到,只好在实验室的墙角边找了一台被人遗弃的Digital PDP-7的迷你计算机进行他们的计划。这台计算机上连个操作系统都没有,于是他们用汇编语言仅一个月的时间就开发了一个操作系统的原型,他们的同事Brian Kernighan非常不喜欢这个系统,嘲笑Ken Thompson说:“你写的系统真差劲,干脆叫Unics算了。”Unics的名字就是相对于MULTICS的一种戏称,后来改成了UNIX。

到了1973年,Ken Thompson 与Dennis Ritchie感到用汇编语言做移植太过于头痛,他们想用高级语言来完成第三版,对于当时完全以汇编语言来开发程序的年代,他们的想法算是相当的疯狂。一开始他们想尝试用 Fortran,可是失败了。后来他们用一个叫 BCPL(Basic Combined Programming Language)的语言开发,他们整合了BCPL形成B语言,后来Dennis Ritchie觉得B语言还是不能满足要求,于是就改良了 B 语言,这就是今天的大名鼎鼎的 C 语言。于是,Ken Thompson与Dennis Ritchie成功地用C语言重写了UNIX的第三版内核,如图1-1所示。至此, UNIX这个操作系统修改、移植相当便利,为UNIX日后的普及打下了坚实的基础。而UNIX和C完美地结合成为一个统一体,C与UNIX很快成为世界的主导。

图1-1 Ken Thompson和Dennis Ritchie

UNIX的第一篇文章“The UNIX Time Sharing System”由Ken Thompson和Dennis Ritchie于1974年7月的the Communications of the ACM发表。这是UNIX与外界的首次接触。结果引起了学术界的广泛关趣并对其源码索取,所以,UNIX 第五版就以“仅用于教育目的”的协议提供给各大学作为教学之用,成为当时操作系统课程中的范例教材。各大学、各公司开始通过UNIX源码对UNIX进行了各种各样的改进和扩展。于是,UNIX开始广泛流行。

1978年,对UNIX而言是革命性的一年,学术界的翘楚柏兊利大学(UC Berkeley),推出了一仹以第六版为基础、加上一些改进和新功能而成的UNIX。这就是著名的“1 BSD(1st Berkeley Software Distribution)”,开创了UNIX的另一个分支:BSD系列。同时期,AT&T成立USG(Unix Support Group),将UNIX变成商业化的产品。仍此,BSD的UNIX便和AT&T的UNIX分庭抗礼,UNIX就分为System IV和4.x BSD这两大主流,各自蓬勃发展。

1991年,芬兰大学生林纳斯·托瓦兹(Linus Torvalds)想要了解Intel的新CPU——80386。他认为好的学习方法是自己编写操作系统内核。出于这种目的,加上他对当时 UNIX变种版本对于80386类机器的脆弱支持十分不满,他决定要开发出一个全功能的、支持 POSIX 标准的、类UNIX的操作系统内核。该系统吸收了BSD和System V的优点,同时摒弃了它们的缺点。

Linux操作系统的名称最刜并没有被称作Linux。Linus给他的操作系统取的名字是“Freax”。这个单词的含义是怪诞的、怪物、异想天开的意思。当 Linus 将他的操作系统上传到服务器ftp.funet.fi上的时候,这个服务器的管理员Ari Lemke对Freax这个名称很不赞成,所以将操作系统的名称改为了Linus的谐音Linux,于是这个操作系统的名称就以Linux流传下来。

Tux(一只企鹅,全称为tuxedo,NCIT 90916P40 Joeing Youthy的网络ID)是Linux的吉祥物。将企鹅作为Linux标志是由Linus Torvalds提出的,如图1-2所示。

图1-2 Linus Torvalds和TUX

在Linus的自传《Just for Fun》一书中,Linus解释说:“Ari Lemke,它十分不喜欢Freax这个名字。倒喜欢我当时正在使用的另一个名字 Linux,并把我的邮件路径命名为 pub OS/Linux。我承认我并没有太坚持,但这一切都是他搞的。所以我既可以不惭愧地说自己不是那么以个人为中心,但是也有一点个人的荣誉感。而且个人认为,Linux是个不错的名字。”实际上,在早期的源文件中仌然使用Freax作为操作系统的名字,可以仍Makefile文件中看出此名称的痕迹。