购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 从 UNIX到 Linux

UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中,UNIX诞生于 20世纪 60年代末,Windows诞生于 20世纪 80年代中期,Linux诞生于 20世纪 90年代初,可以说 UNIX是操作系统中的“老大哥”。

1.2.1 UNIX的坎坷历史

UNIX操作系统由肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)发明。它的部分技术来源可追溯到从 1965年开始的 Multics工程计划,该计划由贝尔实验室、美国麻省理工学院和通用电气公司联合发起,目标是开发一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统。

说明: 分时操作系统使一台计算机可以同时为多个用户服务,连接计算机的终端用户交互式发出命令,操作系统采用时间片轮转的方式处理用户的服务请求,并在终端上显示结果(操作系统将 CPU的时间划分成若干个片段,称为时间片)。操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片。

可惜,由于 Multics 工程计划所追求的目标太庞大、太复杂,以至于它的开发人员都不知道要做成什么样子,最终以失败收场。

以肯·汤普森为首的贝尔实验室研究人员吸取了 Multics 工程计划失败的经验教训,于 1969年实现了一种分时操作系统的雏形,1970年该系统正式取名为 UNIX。想一下英文中的前缀 Multi和 Uni,就明白了 UNIX的隐意。Multi是大的意思,大而繁杂;而 Uni是小的意思,小而精巧。这是 UNIX开发者的设计初衷,这个理念一直影响至今。

有意思的是,肯·汤普森当年开发 UNIX 的初衷是运行他编写的一款计算机游戏《Space Travel》,这款游戏模拟太阳系天体运动,由玩家驾驶飞船、观赏景色并尝试在各种行星和月亮上登陆。他先后在多个系统上试验,但运行效果不甚理想,于是决定自己开发一个操作系统,就这样,UNIX诞生了。

自1970年后,UNIX系统在贝尔实验室内部的程序员之间逐渐流行起来。1972年,肯·汤普森的同事丹尼斯·里奇发明了传说中的 C语言,这是一种适合编写系统软件的高级语言,它的诞生是 UNIX系统发展过程中的一个重要里程碑,它宣告了在操作系统的开发中,汇编语言不再是主宰。到了1973年,UNIX系统的绝大部分源代码都用 C语言进行了重写,这为提高 UNIX系统的可移植性打下了基础(之前操作系统多采用汇编语言编写,对硬件的依赖性强),也为提高系统软件的开发效率创造了条件。可以说,UNIX系统与 C语言是一对孪生兄弟,具有密不可分的关系。

20世纪 70年代初,计算机界还有一项伟大的发明——TCP/IP,这是当年美国国防部接手 ARPAnet后所开发的网络协议。美国国防部把 TCP/IP与 UNIX系统、C语言捆绑在一起,由 AT&T发行给美国各个大学非商业的许可证,这为 UNIX系统、C语言、TCP/IP的发展拉开了序幕,它们分别在操作系统、编程语言、网络协议这三个领域影响至今。肯·汤普森和丹尼斯·里奇因在计算机领域做出的杰出贡献,于 1983年获得了计算机科学的最高奖——图灵奖。

随后出现了各种版本的 UNIX系统,目前常见的有 Sun Solaris、FreeBSD、IBM AIX、HP-UX等。

我们重点介绍一下 Solaris,它是 UNIX系统的一个重要分支。Solaris除可以在 SPARC CPU平台上运行,还可以在 x86 CPU平台上运行。在服务器市场上,Sun的硬件平台具有高可用性和高可靠性,在市场上处于支配地位。对于难以接触到 Sun SPARC架构计算机的用户来说,可以通过使用 Solaris x86来体验世界知名大厂的商业 UNIX风采。当然,Solaris x86也可以用于实际生产应用的服务器,在遵守 Sun的有关许可条款的情况下,Solaris x86可以免费用于学习研究或商业应用。

FreeBSD源于美国加利福尼亚大学伯克利分校开发的 UNIX版本,它由来自世界各地的志愿者开发和维护,为不同架构的计算机系统提供了不同程度的支持。FreeBSD 在BSD许可协议下发布,允许任何人在保留版权和许可协议信息的前提下随意使用和发行,并不限制将 FreeBSD的代码在另一个协议下发行,因此商业公司可以自由地将 FreeBSD代码融入到它们的产品中。苹果公司的 OS X就是基于 FreeBSD的操作系统。

FreeBSD与 Linux的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的不错选择;但其对硬件的支持没有 Linux完备,所以并不适合作为桌面系统。

其他 UNIX版本因应用范围相对有限,在此不做过多介绍。

1.2.2 Linux的那些往事

Linux 内核最初是由李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 UNIX操作系统 Minix太难用了,于是决定自己开发一个操作系统。第一个版本于 1991年 9月发布,当时仅有 10 000行代码。

李纳斯·托瓦兹没有保留 Linux源代码的版权,公开了代码,并邀请他人一起完善Linux。与 Windows及其他有专利权的操作系统不同,Linux开放源代码,任何人都可以免费使用它。

据估计,现在只有 2%的 Linux核心代码是由李纳斯·托瓦兹自己编写的,虽然他仍然拥有 Linux内核(操作系统的核心部分),并且保留了选择新代码和需要合并的新方法的最终裁定权。现在大家所使用的 Linux,编者更倾向于说是由李纳斯·托瓦兹和后来陆续加入的众多 Linux爱好者共同开发完成的。

李纳斯·托瓦兹无疑是这个世界上最伟大的程序员之一,何况,他还建立了全世界最大的程序员交友社区 GitHub(开源代码库及版本控制系统)。

关于 Linux Logo的由来是一个很有意思的话题,它是一只企鹅(如图 1-1所示)。

图1-1 Linux Logo

为什么选择企鹅,而不选择狮子、老虎或小白兔?有人说因为李纳斯·托瓦兹是芬兰人,所以选择企鹅;有人说因为其他动物图案都被用光了,李纳斯·托瓦兹只好选择企鹅。

编者更愿意相信以下说法:

企鹅是南极洲的标志性动物,根据国际公约,南极洲不属于世界上的任何国家,任何国家都无权将南极洲纳入其版图。Linux 选择企鹅图案作为 Logo,其含义是:开放源代码的 Linux为全人类共同所有,任何公司无权将其私有。

1.2.3 UNIX与Linux的亲密关系

二者的关系不是“大哥”和“小弟”,“UNIX 是 Linux 的父亲”这个说法更恰当。之所以要介绍它们的关系,是因为要告诉读者,在学习的时候,其实 Linux与 UNIX有很多的共通之处,简单地说,如果你已经熟练掌握了 Linux,那么再上手使用 UNIX 会非常容易。

二者也有两个大的区别:其一,UNIX 系统大多是与硬件配套的,也就是说,大多数 UNIX系统如 AIX、HP-UX等是无法安装在 x86服务器和个人计算机上的,而 Linux则可以运行在多种硬件平台上;其二,UNIX 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。

Linux 受到广大计算机爱好者的喜爱,主要原因有两个:一是它属于开源软件,用户不用支付任何费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿使用,无约束地继续传播;二是它具有 UNIX的全部功能,任何使用 UNIX操作系统或想要学习 UNIX操作系统的人都可以从 Linux中获益。

开源软件是不同于商业软件的一种模式,从字面上理解,就是开放源代码,大家不用担心里面有什么秘密,这会带来软件的革新和安全。

另外,开源其实并不等同于免费,而是一种新的软件盈利模式。目前很多软件都是开源软件,对计算机行业与互联网影响深远。

开源软件本身的模式、概念比较晦涩,本书旨在指导读者应用 Linux,大家简要理解即可。

近年来,Linux 已经青出于蓝而胜于蓝,以超常的速度发展,从一个“丑小鸭”变成了一个拥有庞大用户群的、真正优秀的、值得信赖的操作系统。历史的车轮让 Linux成为了 UNIX最优秀的传承者。

1.2.4 UNIX/Linux系统结构

UNIX/Linux系统可以粗糙地抽象为 3个层次(所谓粗糙,就是不够细致、精准,但是便于初学者抓住重点理解),如图 1-2所示。底层是 UNIX/Linux操作系统,一般称为内核层(Kernel);中间层是 Shell层,即命令解释层;高层则是应用层。

图1-2 UNIX/Linux系统结构层次示意图

1.内核层

内核层是 UNIX/Linux 系统的核心和基础,它直接附着在硬件平台上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。

2.Shell层

Shell层是与用户直接交互的界面。用户可以在提示符下输入命令行,由 Shell解释执行并输出相应结果或有关信息,所以我们也把 Shell称为命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。

3.应用层

应用层提供基于 X Window协议的图形环境。X Window协议定义了一个系统所必须具备的功能(如同 TCP/IP是一个协议,定义软件所应具备的功能),任何系统能满足此协议及符合 X协会其他的规范,便可称为 X Window。

现在大多数的UNIX系统上(包括Solaris、HP-UX、AIX等)都可以运行CDE(Common Desktop Environment,通用桌面环境,是运行于 UNIX的商业桌面环境)的用户界面;而在 Linux上广泛应用的有 GNOME(如图 1-3所示)、KDE等。

图1-3 GNOME图形界面

X Window 与微软的 Windows 图形环境有很大的区别:UNIX/Linux 系统与 X Window没有必然捆绑的关系,也就是说,UNIX/Linux可以安装 X Window,也可以不安装;而微软的 Windows图形环境与内核捆绑密切。UNIX/Linux系统不依赖图形环境,依然可以通过命令行完成 100%的功能,而且因为不使用图形环境还会节省大量的系统资源。

作为服务器部署,绝大多数 Linux并不安装或并不启用图形环境,本书讲解的也基本上是 Linux命令行下的操作。 8dfdrI72PCMT35rhFjWyUtOAAqQ4Y2D4LdG2tKtNEyKTLdrFjW63MWXsDoEbbhUg

点击中间区域
呼出菜单
上一章
目录
下一章
×