1.1 认识Linux
图1-1 林纳斯·托瓦兹
Linux是一种类Unix(like-Unix)的计算机操作系统,最早由Linus Torvalds(林纳斯•托瓦兹,如图1-1所示)开发的,当时他就读于芬兰赫尔辛基大学计算机系。他设计的初衷是想开发一个能代替Minix的操作系统,并使该系统可运行在基于386、486或奔腾处理器的个人计算机上,且具有Unix操作系统的全部功能。
1.1.1 Linux系统的起源
Linux的诞生可以追溯到1991年,当Linus还是芬兰赫尔辛基大学的一名学生时,他对当时为教学而设计的Minix操作系统提供的功能不满意,于是决定编写比Minix更强大的操作系统来取代Minix。有了这个伟大的想法后,Linus开始通过自己的工作来进行试验,他以Minix为基础来开发新的系统。由于Linus经常要用他的终端仿真器去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他又不得不编写一个磁盘驱动程序,同时还要编写相应的文件系统。这样又增加了任务转换功能、以及文件系统和设备驱动程序,于是几个月后Linux就诞生了。Linux操作系统刚开始时被林纳斯•托瓦兹取名为FREAX,其英文含义是怪诞的、怪物、异想天开。但在他将新的系统上传到FTP服务器上时,管理员Ari Lemke很不喜欢这个名称,即取Linus的谐音Linux作为该操作系统的目录,遂称为Linux系统。
要介绍Linux的历史就不得不提及Unix。1965年,在美国国防部高级研究计划署ARPA的支持下,麻省理工学院、贝尔实验室和通用电气公司决定开发一种“公用计算服务系统”,希望能够同时支持整个波士顿所有的分时用户,该系统称作MULTICS(MULTiplexed Information and Computing Service)。MULTICS被认为是Unix操作系统的鼻祖,它是麻省理工学院、贝尔实验室和通用电气公司的一家合资企业开发的操作系统。MULTICS的研制难度超出了所有人的预料,尽管如此,经过多年的努力,最终MULTICS还是成功地投入应用了。其引入的许多现代操作系统领域的概念雏形,对随后的操作系统,特别是Unix的成功有着巨大的影响。
Unix的开发始于移植精简的MULTICS版本,从而开发出一个运行于PDP-7小型计算机上的操作系统,并且让这个新操作系统能支持一种新的文件系统,即Unix文件系统的第一个版本。由Ken Thompson开发的Unix操作系统在1970年被移植到PDP-11上,经修改后能支持更多的用户,这就是第1版的Unix。1973年发布的Unix第4版由Ken Thompson和Dennis Ritchie用C语言重写了内核,让操作系统脱离纯汇编语言环境,打开了操作系统可移植的大门。20世纪80年代出现了个人计算机,而工作站当时只用在企业和大学中。大量Unix变体衍生而来,这些变体包括Berkeley Unix (BSD)、AT&T Unix System III和SystemV,其中BSD是由加利福尼亚大学伯克利分校开发的。每个变体又会演变出其他系统,如NetBSD和OpenBSD(BSD的变体)以及AIX(IBM的System V变体)。事实上,Unix的所有商用变体都来源于System V或BSD。
不过,因为Unix最终演变为一个商业化的操作系统,而购买Unix的价格令人望而却步,的确不是一般用户可以买得起的,只有那些负担得起许可费的企业才能用。这限制了它的应用范围,也为Linux的孕育创造了条件。
Linux是一个免费开放源代码的类Unix操作系统,由来自世界各地的爱好者开发和维护,是目前世界上使用最多的类Unix操作系统。Linux是在GNU公共许可权限下免费获得的,是一套遵从POSIX(可移植操作系统环境)规范的操作系统,它兼容于Unix System V以及BSD Unix操作系统。BSD Unix和Unix System V是Unix操作系统的两大主流,以后的Unix系统都是这两种系统的衍生产品。目前对于System V系统而言,把软件程序源代码拿到Linux环境下重新编译之后就可以运行,而对于BSD Unix系统,它的可执行文件可以直接在Linux环境下运行。要记住的是,Linux源代码不源于任何版本的Unix,即Linux并非Unix,而仅是模仿Unix的用户界面和功能,是一个类似于Unix的产品。自Linux诞生以来,凭借其稳定、安全、高性能和高扩展性等优点,得到广大用户的欢迎,成为目前最为流行的操作系统之一。
Linux以它的高效和灵活性著称。Linux模块化的设计结构,使得它既能在价格昂贵的工作站上运行,也能在廉价的PC机上实现全部的Unix特性,具有支持多任务、多用户的能力。Linux操作系统软件包不仅包括完整的Linux操作系统,而且还包括了文本编辑器、高级语言编译器等应用软件。它还包括带有多个窗口管理器的X-Windows图形用户界面,如同微软公司的Windows系统一样,允许用户使用窗口、图标和菜单对系统进行操作。
GNU计划,又称革奴计划(GNU是“GNU's Not Unix”的递归缩写),是由Richard Stallman在1983年9月27日公开发起的,它的目标是创建一套完全自由的操作系统。为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款、GNU通用公共许可证(GNU General Public License,GPL),即“反版权”(或称Copyleft)。
提到Linux就不得不说一说“Tux”,它是一只企鹅的名字,全称“Tuxedo”,是Linux的标志,如图1-2所示。这个企鹅图案在最佳Linux图标竞赛中被选中。Tux的设计者是Larry Ewing,他于1996年,利用GIMP软件设计出了这个企鹅图案。Tux已经成为Linux和开源社区的象征。
图1-2 Tux是Linux的标志
1.1.2 Linux的主要特点
Linux的核心思想有两点:第一,一切对象都视作文件;第二,每个软件都有确定的用途。这也就是说系统中的所有对象,包括命令、硬件和软件、操作系统、进程等,对于操作系统内核而言,都被视为各种类型的文件。
Linux最大的优势就在于其作为服务器的强大功能,它健壮和稳定的网络功能是众多用户选择它的根本原因。作为网络操作系统,Linux有诸多特点,主要有如下几个。
1.多用户、多任务式管理
Linux是一个抢占式、多任务、多用户操作系统,具有优异的内存和多任务管理能力,不仅可让用户同时执行数十个应用程序,还允许远程用户联机登录并运行程序。既然是多用户、多任务系统,对于用户账号的管理自然不在话下,包括用户权限、磁盘空间限制等,都有完善的工具可以使用。
根据硬件和计算机所执行任务的不同,Linux操作系统可支持一个到一千个以上的用户,其中每个用户可同时运行不同的程序集合。若多个用户同时使用一台计算机,那么平均到每个用户身上的费用要比一个用户单独使用这台计算机的费用低,因为单个用户通常不能充分利用计算机所提供的全部资源。例如,任何人都不可能同时做到:使打印机一直处于打印状态;使系统内存完全被占用;使磁盘一直忙于读写操作;使Internet连接一直处于使用状态;使终端同时处于忙碌状态等。而多用户操作系统则允许多个用户近乎同时使用所有的系统资源。这样,系统资源可被最大程度地利用,相应地,每个用户的花费就将减到最小。这正是多用户操作系统的根本目的所在。
Linux是一个完全受保护的多任务操作系统,它允许每个用户同时运行多个任务。各进程间可相互通信,但每个进程是受到完全保护的,即不会受到其他进程的干扰,就如内核不会受到其他任何进程干扰一样。用户在集中精力于当前屏幕所显示任务的同时,在后台还可运行其他任务,而且还可以在这些任务之间来回切换。如果运行的是X Window系统,那么同一屏幕上的不同窗口可运行不同的程序,并且可监视它们。这一功能提高了用户的工作效率。
2.图形集成界面
很多人认为只有微软的Windows系列才拥有GUI(Graphical User Interface,即图形用户界面),其实,现在想找到“完全没有图形用户界面”的操作系统还真是困难。大多数操作系统都拥有图形界面,如比较有名的操作系统FreeBSD、Solaris和SCO Unix等,都拥有各自的图形用户界面。Linux配置有特殊的图形用户界面X Window系统,这是Unix系统的标准图形界面,X Window系统提供多种窗口管理程序(Window Manager),结合对象集成环境,让用户能以灵活的方式来管理窗口和使用软件。随着Linux版本的升级,越来越多的Linux程序都提供了窗口界面。
X Window系统是1984年由麻省理工学院的研究人员开发的,这为Linux的图形用户界面奠定了基础。对于支持X Window系统的终端或者工作站显示器,用户可以通过屏幕上的多个窗口实现与计算机的交互,也可以显示图形信息或者使用专门的应用程序来画图、监视进程和预览格式化的输出。X Window系统为开发基于图形的应用程序提供标准接口,以完成与硬件无关的应用,所以对于支持X Window的各种系统通常被简称为“X”。
在X的系统架构中,窗口管理器用于控制窗口的位置和外观,这类似于微软的Windows系统或者苹果公司的Macintosh系统的界面。窗口管理器可能只是个框架,不同的X用户界面可以有很大的差异,然而绝大多数的用户在使用X时,多是用已经打包的桌面环境,这种桌面环境不仅包含窗口管理器,还具备各种应用程序以及风格一致的界面,目前在Linux平台下最流行的桌面环境是GNOME和KDE。在这种情况下,窗口管理器往往作为运行在桌面管理器下的程序,主要负责窗口的打开和关闭;程序的启动和运行;对鼠标进行设置,使系统根据点击方式和位置来完成不同的工作。窗口管理器还可实现用户界面的个性化显示。微软公司的Windows只允许改变窗口关键元素的颜色,而X的窗口管理器允许用户改变窗口的整个外观和感觉,如通过修改窗口的边框、按钮和滚动条来改变窗口的外观和工作方式;还允许建立虚拟桌面和创建菜单等。
3.广泛的协议支持
Linux内核支持多种通信协议,基本上主要的通信协议都会支持,以下列举部分协议。
TCP/IP通信协议。
IPX/SPX通信协议。
AppleTalk通信协议。
X.25通信协议。
Frame-relay通信协议。
ISDN通信协议。
PPP、SLIP和PLIP等通信协议。
ATM通信协议。
4.提供完善的网络功能
Linux沿袭Unix系统使用TCP/IP作为主要的网络通信协议,内建了FTP、TELNET、Mail和Apache等各种功能,再加上其稳定性高,因此许多ISP(Internet Service Provider)都采用Linux架设Mail Server、HTTP Server和FTP Server等服务器。它可提供对以下服务的支持。
支持FTP服务和客户端。
支持电子邮件服务和客户端程序。
支持DNS和DHCP服务。
支持网络信息服务(NIS)。
支持认证服务。
5.支持多种应用程序及开发工具
由于Linux非常稳定,因此也成为一个优秀的开发平台。程序设计师最关心的是如何在Linux中开发软件。目前,运行在Unix操作系统下的工具大部分已经被很好地移植到Linux操作系统上,包括几乎所有GNU的软件和库以及多种不同来源的X客户端软件。所谓移植通常指直接在Linux系统中编译源程序而不需修改,或只需进行很小的修改,这得益于Linux系统完全遵循POSIX标准。在Linux下已经有越来越多的客户端和服务器端的应用软件。典型的应用如下。
语言及编程环境 C、C++、Java、Perl和Fortran等。
图形环境 GNOME、KDE、GIMP、WindowMaker和IceWM等。
编辑器 Xemacs、Vim、Gedit和pico等。
Shells bash、tcsh、ash和csh等。
文字处理软件 OpenOffice、Kword和abiWord等。
数据库 MySQL、PostgreSQL和Oracle等。
6.子程序升级便捷
由于Linux是免费的操作系统,所以世界上很多支持自由软件的人士通过不懈的努力来使Linux日趋完美,功能更加完善,因此其版本升级很快。互联网上有很多Linux网站提供Linux的各种服务,如子程序升级,使越来越多的人逐渐喜欢上了Linux。现在很多公司的服务器都用Linux作为操作系统,一方面是因为Linux功能强大,性能非常稳定;另一方面也是因为不会因版权问题引起纠纷。
7.文件系统下良好的兼容性
Linux可与当前主要的网络操作系统保持良好的兼容性,“文件与打印共享”可兼容的环境有Apple、Windows、Novell和Unix等。
8.具有内核编程接口
Linux内核是Linux操作系统的核心,负责分配计算机资源和调度用户作业,尽可能使每个作业都能平等地使用系统资源,如对CPU的访问,对磁盘、DVD、CD-ROM存储器、打印机和磁带驱动器等外围设备的使用等。应用程序通过系统调用与内核交互。程序员可使用一个系统调用实现与多种设备的交互。例如,系统调用write只有一个,但它可向多个设备实现写操作。当某个程序发出write请求时,内核将根据程序的上下文把请求传递给相应的设备。这种灵活性使得一些旧版本的工具能够适用于新出现的设备,并且在不重写程序的情况下,可以将程序较容易地移植到后续版本的操作系统中,较好地支持向前兼容。