1、LinuxLinux基础教程(基础教程(1 1)操作系统基础操作系统基础清华大学计算机基础教育课程系列教材清华大学计算机基础教育课程系列教材 汤荷美汤荷美 董渊董渊 李莉李莉 程志锐程志锐 编著编著总总 目目 录录第第1部分部分 Linux操作系统操作系统第第1章章 操作系统概述操作系统概述第第2章章 处理机管理处理机管理第第3章章 存储管理存储管理第第4章章 调度调度第第5章章 设备设备第第6章章 文件系统文件系统第第2部分部分 操作系统命令及操作系统命令及shell编程编程第第7章章 Linux基本命令基本命令第第8章章 使用使用vi编辑文件编辑文件第第9章章 shell编程编程第第3部分
2、部分 系系 统统 管管 理理第第10章章 Linux系统软件的获取和安装系统软件的获取和安装第第11章章 账号管理账号管理第第12章章 文件系统管理文件系统管理第第13章章 TCP/IP网络管理网络管理第第14章章 备份与恢复备份与恢复第第15章章 XWindow及及Genie应用程序应用程序第第1部分部分 Linux操作系统操作系统第第1章章 操作系统概述操作系统概述1.1 操作系统简介操作系统简介1.2 操作系统接口操作系统接口1.3 操作系统功能操作系统功能1.4 操作系统结构操作系统结构1.5 Linux操作系统介绍操作系统介绍1.6 Linux的内核特征的内核特征1.7 Linux的
3、发展及展望的发展及展望1.8 小结小结 习题习题操作系统是计算机系统的基本系统软件。软件系统操作系统是计算机系统的基本系统软件。软件系统中操作系统是所有软件的核心。操作系统负责控制、中操作系统是所有软件的核心。操作系统负责控制、管理计算机的所有软件、硬件资源,是惟一直接和管理计算机的所有软件、硬件资源,是惟一直接和硬件系统打交道的软件,是整个软件系统的基础部硬件系统打交道的软件,是整个软件系统的基础部分,同时还为计算机用户提供良好的界面。因此,分,同时还为计算机用户提供良好的界面。因此,操作系统直接面对所有硬件、软件和用户,它是协操作系统直接面对所有硬件、软件和用户,它是协调计算机各组成部分之
4、间、人机之间关系的重要软调计算机各组成部分之间、人机之间关系的重要软件系统。件系统。LinuxLinux是在日益普及的是在日益普及的InternetInternet上迅速形成和不断完上迅速形成和不断完善的操作系统。善的操作系统。LinuxLinux操作系统高效、稳定,适应操作系统高效、稳定,适应多种硬件平台,而最具有魅力的是它遵循多种硬件平台,而最具有魅力的是它遵循GPLGPL(GNU GNU General Public LicenseGeneral Public License, GNUGNU通用公共许可证,通用公共许可证,见附录),整个系统的源代码可以自由获取,并且见附录),整个系统的源
5、代码可以自由获取,并且在在GPLGPL许可的范围内自由修改、传播,这就为学习、许可的范围内自由修改、传播,这就为学习、应用、开发操作系统及其他软件提供了良好的基础应用、开发操作系统及其他软件提供了良好的基础和较高的起点。和较高的起点。本章首先介绍操作系统的概念、功能及其结构,接本章首先介绍操作系统的概念、功能及其结构,接着介绍着介绍LinuxLinux系统的基本特征、发展现状,并以此系统的基本特征、发展现状,并以此为基础,讨论现代操作系统的一般特点和发展趋势。为基础,讨论现代操作系统的一般特点和发展趋势。1.1 操作系统简介操作系统简介1.1.1 操作系统概念操作系统概念一种非形式的定义如下:
6、操作系统是计算机系统中一种非形式的定义如下:操作系统是计算机系统中的一个系统软件,它是这样一些程序模块的集合的一个系统软件,它是这样一些程序模块的集合它们管理和控制计算机系统中的硬件和软件资源,它们管理和控制计算机系统中的硬件和软件资源,合理地组织计算机工作流程,以便有效地利用这些合理地组织计算机工作流程,以便有效地利用这些资源为用户提供一个功能强大、使用方便和可扩展资源为用户提供一个功能强大、使用方便和可扩展的工作环境,从而在计算机与用户之间起到接口作的工作环境,从而在计算机与用户之间起到接口作用。用。普通用户使用操作系统,是把操作系统当作一个资普通用户使用操作系统,是把操作系统当作一个资源
7、管理者,通过系统提供的系统命令和界面操作等源管理者,通过系统提供的系统命令和界面操作等工具,以某种易于理解的方式完成系统管理功能,工具,以某种易于理解的方式完成系统管理功能,有效地控制各种硬件资源,组织自己的数据,完成有效地控制各种硬件资源,组织自己的数据,完成自己的工作并和其他人共享资源。自己的工作并和其他人共享资源。对于程序员来讲,操作系统提供了一个与计算机硬对于程序员来讲,操作系统提供了一个与计算机硬件等价的扩展或虚拟的计算平台。操作系统提供给件等价的扩展或虚拟的计算平台。操作系统提供给程序员的工具除了系统命令、界面操作之外,还有程序员的工具除了系统命令、界面操作之外,还有系统调用,系统
8、调用抽象了许多硬件细节,程序可系统调用,系统调用抽象了许多硬件细节,程序可以以某种统一的方式进行数据处理,程序员可以避以以某种统一的方式进行数据处理,程序员可以避开许多具体的硬件细节,提高程序开发效率,改善开许多具体的硬件细节,提高程序开发效率,改善程序移植特性。程序移植特性。整个计算机系统可以认为是按照一定规则分层构建整个计算机系统可以认为是按照一定规则分层构建的,我们可以使用图的,我们可以使用图1.1来示意性地描述这种层次来示意性地描述这种层次结构。结构。图图1.1 计算机系统层次结构示意图计算机系统层次结构示意图1.1.2 操作系统发展简介操作系统发展简介操作系统是随着计算机硬件的发展,
9、围绕着如何提操作系统是随着计算机硬件的发展,围绕着如何提高计算机系统资源的利用率和改善用户界面的友好高计算机系统资源的利用率和改善用户界面的友好性而形成,发展和不断成熟完善的。性而形成,发展和不断成熟完善的。随着计算机硬件的发展,计算机的计算速度越来越随着计算机硬件的发展,计算机的计算速度越来越快,其高速的数据处理与低速的手工操作之间的矛快,其高速的数据处理与低速的手工操作之间的矛盾日益突出,传统的手工操作是系统的最大制约因盾日益突出,传统的手工操作是系统的最大制约因素,昂贵的计算机硬件资源得不到有效的利用。一素,昂贵的计算机硬件资源得不到有效的利用。一个重要的技术是批处理,专门的操作人员把用
10、户提个重要的技术是批处理,专门的操作人员把用户提交的任务按照一定的类别、顺序组织起来,形成作交的任务按照一定的类别、顺序组织起来,形成作业序列,这些作业成批地在专门的监督程序控制之业序列,这些作业成批地在专门的监督程序控制之下自动执行。这里的监督程序就是操作系统的雏形。下自动执行。这里的监督程序就是操作系统的雏形。最初的批处理系统中,计算机内存中仍然只有一个最初的批处理系统中,计算机内存中仍然只有一个程序在运行,总体系统的效率仍然没有发挥出来。程序在运行,总体系统的效率仍然没有发挥出来。解决这个问题的措施称为多道技术。多道程序设计解决这个问题的措施称为多道技术。多道程序设计技术使得在内存中有多
11、个程序,保证系统的处理器技术使得在内存中有多个程序,保证系统的处理器总是处于工作状态,极大地提高了系统的利用率。总是处于工作状态,极大地提高了系统的利用率。多道技术开始使用在批处理系统中,称为多道批处多道技术开始使用在批处理系统中,称为多道批处理系统,这样的系统效率高,但是,在脱机批处理理系统,这样的系统效率高,但是,在脱机批处理情况下,高效带来的问题是用户对自己作业的控制情况下,高效带来的问题是用户对自己作业的控制程度降低。针对这个问题的方案是分时技术。分时程度降低。针对这个问题的方案是分时技术。分时系统把处理机的运行时间分成时间片,按照时间片系统把处理机的运行时间分成时间片,按照时间片轮流
12、把处理机分配给每一个联机用户。由于每一个轮流把处理机分配给每一个联机用户。由于每一个时间片很短,宏观上来看,所有用户同时操作计算时间片很短,宏观上来看,所有用户同时操作计算机,各自独立控制自己的作业。机,各自独立控制自己的作业。与分时系统相对应,还有一种实时与分时系统相对应,还有一种实时(real time)(real time)操作操作系统,控制计算机对外来信息进行快速处理,要求系统,控制计算机对外来信息进行快速处理,要求系统在允许的时间范围之内做出响应。系统在允许的时间范围之内做出响应。同时具有多道批处理、分时、实时处理功能,或者同时具有多道批处理、分时、实时处理功能,或者其中两种以上功能
13、的系统,称为通用操作系统。其中两种以上功能的系统,称为通用操作系统。LinuxLinux操作系统就是具有内嵌网络功能的多用户分操作系统就是具有内嵌网络功能的多用户分时系统。它兼有多道批处理和分时处理功能,是一时系统。它兼有多道批处理和分时处理功能,是一个典型的通用处理系统。个典型的通用处理系统。一方面强调分布式计算和处理,另一方面强调物理一方面强调分布式计算和处理,另一方面强调物理上跨越不同的主机系统、逻辑上紧密耦合构成统一上跨越不同的主机系统、逻辑上紧密耦合构成统一完整的操作系统平台,这样的系统就是分布式操作完整的操作系统平台,这样的系统就是分布式操作系统系统(distributed ope
14、rating system)(distributed operating system)。这是当前。这是当前操作系统发展的一个方向。操作系统发展的一个方向。当前,计算机微型化和专业化趋势已成事实。这两当前,计算机微型化和专业化趋势已成事实。这两种发展趋势都产生了一个共同的需求,即嵌入式软种发展趋势都产生了一个共同的需求,即嵌入式软件。嵌入式软件也需要操作系统平台的支持,这样件。嵌入式软件也需要操作系统平台的支持,这样的操作系统就是嵌入式操作系统。嵌入式软件系统的操作系统就是嵌入式操作系统。嵌入式软件系统的规模小,相应地,其操作系统的规模也小。的规模小,相应地,其操作系统的规模也小。嵌入式软件的
15、应用平台之一是各种电器,这样的系嵌入式软件的应用平台之一是各种电器,这样的系统面向普通家庭和个人用户,由于快速发展的网络统面向普通家庭和个人用户,由于快速发展的网络市场,使得家用电器的市场比传统的计算机市场大市场,使得家用电器的市场比传统的计算机市场大很多。因此,嵌入式软件可能成为很多。因此,嵌入式软件可能成为2121世纪信息产业世纪信息产业的支柱之一,嵌入式操作系统也必将成为软件厂商的支柱之一,嵌入式操作系统也必将成为软件厂商争夺的焦点,成为操作系统发展的另一个热门方向。争夺的焦点,成为操作系统发展的另一个热门方向。1.2 操作系统接口操作系统接口操作系统在整个软件系统中处于中心地位,负责控
16、操作系统在整个软件系统中处于中心地位,负责控制、管理计算机的所有软件、硬件资源,它屏蔽了制、管理计算机的所有软件、硬件资源,它屏蔽了很多具体的硬件细节,对计算机用户提供统一、良很多具体的硬件细节,对计算机用户提供统一、良好的界面(或称为接口,好的界面(或称为接口,interface)。本节介绍操)。本节介绍操作系统的接口界面,下一节主要介绍操作系统的管作系统的接口界面,下一节主要介绍操作系统的管理功能。在计算机层次结构中,操作系统通过接口理功能。在计算机层次结构中,操作系统通过接口向上层用户提供各种服务,而上层用户通过操作系向上层用户提供各种服务,而上层用户通过操作系统接口来访问硬件。统接口来
17、访问硬件。操作系统提供的接口可以根据服务对象的不同而划操作系统提供的接口可以根据服务对象的不同而划分为两类:一是程序级的接口,提供给程序员使用,分为两类:一是程序级的接口,提供给程序员使用,即系统调用;二是作业级的接口,提供给用户使用,即系统调用;二是作业级的接口,提供给用户使用,即操作命令。即操作命令。1.2.1 程序员级接口程序员级接口系统调用是一组由操作系统提供的广义指令。应用系统调用是一组由操作系统提供的广义指令。应用程序通过系统调用来操纵系统内核中特定的函数程序通过系统调用来操纵系统内核中特定的函数, 当应用程序需要进行文件访问、网络传输等操作时,当应用程序需要进行文件访问、网络传输
18、等操作时,必须通过系统调用来完成。程序员在设计应用程序必须通过系统调用来完成。程序员在设计应用程序时,涉及到系统资源,都必须使用系统调用来实现,时,涉及到系统资源,都必须使用系统调用来实现,可以说,系统调用是操作系统提供给程序员的惟一可以说,系统调用是操作系统提供给程序员的惟一接口。接口。系统调用可以根据功能划分为不同的类型。熟悉系系统调用可以根据功能划分为不同的类型。熟悉系统调用是一个优秀程序员必备的条件。统调用是一个优秀程序员必备的条件。1.2.2 用户级接口用户级接口操作系统提供给用户使用的接口是操作命令,用户操作系统提供给用户使用的接口是操作命令,用户可以使用这些操作命令来组织和控制作
19、业的执行或可以使用这些操作命令来组织和控制作业的执行或者管理整个计算机系统。实际上,计算机的操作命者管理整个计算机系统。实际上,计算机的操作命令界面是在系统调用的基础上开发而成的。令界面是在系统调用的基础上开发而成的。操作系统发展的主要方向除了提高系统资源利用率操作系统发展的主要方向除了提高系统资源利用率之外,就是改善用户界面友好性。之外,就是改善用户界面友好性。图形用户界面是操纵命令界面发展的一个里程碑。图形用户界面是操纵命令界面发展的一个里程碑。图形用户界面,降低了计算机操作的门槛,千万个图形用户界面,降低了计算机操作的门槛,千万个家庭成为计算机普及的对象。家庭成为计算机普及的对象。现在流
20、行的操作系统一般都同时提供图形和文本用现在流行的操作系统一般都同时提供图形和文本用户界面。户界面。Linux系统就是如此,文本界面是系统就是如此,文本界面是shell接接口,图形界面是口,图形界面是XWindow系统。系统。1.3 操作系统功能操作系统功能多用户分时系统,按照其功能划分为处理机管理、多用户分时系统,按照其功能划分为处理机管理、存储管理、设备管理、信息管理(文件系统管理),存储管理、设备管理、信息管理(文件系统管理),对于现代流行的操作系统,还具有完整的网络管理对于现代流行的操作系统,还具有完整的网络管理功能。这些管理功能都是由操作系统内核实现的。功能。这些管理功能都是由操作系统
21、内核实现的。1.3.1 处理机管理处理机管理作业、进程需要适当的分配、调度,以便协调相互作业、进程需要适当的分配、调度,以便协调相互关系,共享有限的处理机资源,这是处理机管理的关系,共享有限的处理机资源,这是处理机管理的主要内容。主要内容。处理机管理是操作系统管理功能的关键,操作系统处理机管理是操作系统管理功能的关键,操作系统功能的一个主要指标即是提高处理机的使用率,让功能的一个主要指标即是提高处理机的使用率,让处理机尽可能处于工作状态。处理机尽可能处于工作状态。1.3.2 存储管理存储管理存储管理的目标是让有限的物理内存尽可能满足应存储管理的目标是让有限的物理内存尽可能满足应用程序对内存的需
22、求。存储管理的内容包括内存的用程序对内存的需求。存储管理的内容包括内存的扩充、分配、保护等。扩充、分配、保护等。操作系统多采用了称为操作系统多采用了称为“虚拟内存虚拟内存”的内存管理方的内存管理方式。式。内存一般采用部分分配的办法。内存一般采用部分分配的办法。通常,内存中总是同时存放了多个正在运行的程序通常,内存中总是同时存放了多个正在运行的程序实体,即进程,在运行的过程中,他们之间可能会实体,即进程,在运行的过程中,他们之间可能会使用到相同内存位置的内容,这种技术称为内存共使用到相同内存位置的内容,这种技术称为内存共享,这样,可以提高内存的利用率。但是,必须要享,这样,可以提高内存的利用率。
23、但是,必须要确保各进程所占据的内存的独立和完整性。确保各进程所占据的内存的独立和完整性。1.3.3 设备管理设备管理除了除了CPU和内存之外,计算机的其他部件都统称为和内存之外,计算机的其他部件都统称为外部设备。这些设备在操作系统的控制下协调工作,外部设备。这些设备在操作系统的控制下协调工作,共同完成信息的输入、存储和输出任务。共同完成信息的输入、存储和输出任务。操作系统要对所有的设备进行管理。一方面,让每操作系统要对所有的设备进行管理。一方面,让每一个设备尽可能发挥自己的特长,实现与一个设备尽可能发挥自己的特长,实现与CPU和内和内存的数据交换,提高外部设备的利用率。另一方面,存的数据交换,
24、提高外部设备的利用率。另一方面,隐蔽设备操作的具体细节,对用户提供一个统一、隐蔽设备操作的具体细节,对用户提供一个统一、友好的设备使用界面。友好的设备使用界面。和处理机及内存相比,外部设备的速度要慢得多,和处理机及内存相比,外部设备的速度要慢得多,而且性能差别大,类型品种多,因此,设备管理是而且性能差别大,类型品种多,因此,设备管理是一项复杂而又重要的工作。一项复杂而又重要的工作。1.3.4 文件系统文件系统操作系统在控制、管理硬件的同时,也必须管理好操作系统在控制、管理硬件的同时,也必须管理好软件资源。操作系统的文件系统就是针对计算机的软件资源。操作系统的文件系统就是针对计算机的软件资源而进
25、行的。文件系统主要提供以下服务:软件资源而进行的。文件系统主要提供以下服务:文件存取文件存取, 使每个用户能够对自己的文件进行快速的使每个用户能够对自己的文件进行快速的访问、修改和存储。访问、修改和存储。文件共享文件共享, 指提供某种手段,使存储空间只保存一个指提供某种手段,使存储空间只保存一个副本副本, 而所有授权用户能够共同访问这些文件。而所有授权用户能够共同访问这些文件。文件保护文件保护, 指提供保护系统资源防止非法使用的手段。指提供保护系统资源防止非法使用的手段。1.3.5 网络管理网络管理计算机的发展已经进入了互联网时代,现在流行的计算机的发展已经进入了互联网时代,现在流行的操作系统
26、一般都具有内嵌的网络功能,能够在内核操作系统一般都具有内嵌的网络功能,能够在内核级别控制、管理网络。级别控制、管理网络。操作系统一般都提供网络通信和网络服务等基本功操作系统一般都提供网络通信和网络服务等基本功能。内核中网络部分,主要实现网络设备控制和网能。内核中网络部分,主要实现网络设备控制和网络协议,因此,网络管理也就集中在通信这部分。络协议,因此,网络管理也就集中在通信这部分。1.4 操作系统结构操作系统结构本节简单介绍操作系统的逻辑结构,然后介绍操作本节简单介绍操作系统的逻辑结构,然后介绍操作系统发展过程中使用过的几种主要的体系结构。系统发展过程中使用过的几种主要的体系结构。1.4.1
27、操作系统的逻辑结构操作系统的逻辑结构计算机系统可以理解为是分层构造的。计算机系统可以理解为是分层构造的。从逻辑关系来理解,操作系统本身也可以用层次结从逻辑关系来理解,操作系统本身也可以用层次结构来描述。可以认为至少有构来描述。可以认为至少有4层,从上到下依次为:层,从上到下依次为:面对用户的外部接口,硬件无关的内核部分,与硬面对用户的外部接口,硬件无关的内核部分,与硬件相关的内核部分,面对硬件的外部接口。可以简件相关的内核部分,面对硬件的外部接口。可以简单地用图单地用图1.2来描述。这种层次结构可以看作是操来描述。这种层次结构可以看作是操作系统纵向的结构。作系统纵向的结构。图图1.2 操作系统
28、逻辑层次示意图操作系统逻辑层次示意图操作系统也可根据不同的管理功能划分为功能模块。操作系统也可根据不同的管理功能划分为功能模块。一种简单的理解是,操作系统本身划分为功能模块,一种简单的理解是,操作系统本身划分为功能模块,而每个模块分层构造,形成一个纵横交错的结构。而每个模块分层构造,形成一个纵横交错的结构。1.4.2 操作系统的体系结构操作系统的体系结构软件的体系结构描述系统各部分软件以及它们相互软件的体系结构描述系统各部分软件以及它们相互之间的关系之间的关系, 是软件内部结构配置的一种抽象描述。是软件内部结构配置的一种抽象描述。软件体系结构定义各部分软件系统的应用界面规范软件体系结构定义各部
29、分软件系统的应用界面规范及相互操作和数据通信的协议和限制。体系结构相及相互操作和数据通信的协议和限制。体系结构相对稳定、满足应用需求,同时具有适当的可适应性对稳定、满足应用需求,同时具有适当的可适应性和可扩充性。和可扩充性。1. 模块结构模块结构模块结构是将操作系统内核按照功能划分为一个个模块结构是将操作系统内核按照功能划分为一个个单独的模块,模块之间相对独立,只能通过预先规单独的模块,模块之间相对独立,只能通过预先规定好的接口方式来调用,它们共享数据,模块是系定好的接口方式来调用,它们共享数据,模块是系统设计和实现的基本单位。每一个模块实现一个完统设计和实现的基本单位。每一个模块实现一个完整
30、单独的功能,所有模块之间相互调用,共同构成整单独的功能,所有模块之间相互调用,共同构成一个完整的系统内核。一个完整的系统内核。模块结构最大的优点是效率高。模块结构最大的优点是效率高。模块式结构中,操作系统的逻辑层次关系具体由调模块式结构中,操作系统的逻辑层次关系具体由调用层次关系来体现。这种结构的主要问题一是全局用层次关系来体现。这种结构的主要问题一是全局函数使用多,造成访问控制困难;二是结构不够清函数使用多,造成访问控制困难;二是结构不够清晰,系统的可理解性、可维护性和可移植性都比较晰,系统的可理解性、可维护性和可移植性都比较差。差。2. 层次结构层次结构层次结构的方法把操作系统内核按照一定
31、的规则划层次结构的方法把操作系统内核按照一定的规则划分为一系列相互依赖的层次,每个层次也可以分解分为一系列相互依赖的层次,每个层次也可以分解为一系列更小的模块,模块负责完成一部分特定的为一系列更小的模块,模块负责完成一部分特定的功能,只能与相邻的层次发生直接的联系,所有这功能,只能与相邻的层次发生直接的联系,所有这些层次的组合,就实现了整个系统。些层次的组合,就实现了整个系统。实际上,层次结构可以理解为一种特殊的模块式结实际上,层次结构可以理解为一种特殊的模块式结构。构。层次结构可以大大方便系统的移植和扩充。层次结构可以大大方便系统的移植和扩充。把系统内核划分为严格的层次结构,为了满足有序把系
32、统内核划分为严格的层次结构,为了满足有序的层次调用关系,必然要牺牲部分灵活性和系统效的层次调用关系,必然要牺牲部分灵活性和系统效率。率。3. 对象结构对象结构对象也可以理解为一种特殊的模块,它是由一组数对象也可以理解为一种特殊的模块,它是由一组数据集以及定义在其上的操作集封装而成。对象结构据集以及定义在其上的操作集封装而成。对象结构方法中,操作系统内核按照内核对象实体组织,每方法中,操作系统内核按照内核对象实体组织,每个内核对象实体都有自己的数据和操作,对象之间个内核对象实体都有自己的数据和操作,对象之间通过消息传递来协调工作。通过消息传递来协调工作。对象模块具有很强的独立性,因此也具有很好的
33、复对象模块具有很强的独立性,因此也具有很好的复用性能。用性能。对象模块可以方便有效地控制内部数据的访问属性,对象模块可以方便有效地控制内部数据的访问属性,充分地隐藏信息,达到资源保护的目的。充分地隐藏信息,达到资源保护的目的。采用对象结构,系统的开发难度降低,具有良好的采用对象结构,系统的开发难度降低,具有良好的扩展性和移植性,同时有较好的安全功能。扩展性和移植性,同时有较好的安全功能。对象结构操作系统内核的一个严重问题是效率低。,对象结构操作系统内核的一个严重问题是效率低。,Linux内核基本属于模块结构,而内核基本属于模块结构,而MS-DOS系统内核系统内核采用的是层次结构,采用的是层次结
34、构,Windows NT/2000及及Solaris则则是典型的对象结构。是典型的对象结构。操作系统内核按照其运行的情况可以分为:宏内核操作系统内核按照其运行的情况可以分为:宏内核与微内核。前者也称为单内核,与微内核。前者也称为单内核,Linux系统属于单系统属于单内核类型。对象结构的系统内核通常是微内核,例内核类型。对象结构的系统内核通常是微内核,例如,如,Windows NT/2000系统就是微内核。系统就是微内核。1.5 Linux操作系统介绍操作系统介绍Linux系统有两种不同的含义。从技术角度,系统有两种不同的含义。从技术角度,Linux指的是由指的是由Linus Torvalds维
35、护的开放源代码维护的开放源代码UNIX类类操作系统的内核。然而,目前大多数人用它来表示操作系统的内核。然而,目前大多数人用它来表示以以Linux内核为基础的整个操作系统。从这种意义内核为基础的整个操作系统。从这种意义讲,讲,Linux指的是开放源代码的,包含内核、系统指的是开放源代码的,包含内核、系统工具、完整的开发环境和应用的工具、完整的开发环境和应用的UNIX类操作系统。类操作系统。1.5.1 Linux自由操作系统自由操作系统Linux是一个是一个UNIX操作系统的克隆,可以免费使用,操作系统的克隆,可以免费使用,遵循遵循GPL声明,可以自由修改和传播。声明,可以自由修改和传播。Linu
36、x包含包含了人们希望操作系统拥有的所有功能特性,这些功了人们希望操作系统拥有的所有功能特性,这些功能包括真正的多任务、虚拟内存、世界上最快的能包括真正的多任务、虚拟内存、世界上最快的TCP/IP驱动程序、共享库和多用户支持。驱动程序、共享库和多用户支持。Linux现在是个人计算机和工作站上的现在是个人计算机和工作站上的UNIX类操作类操作系统。它不仅继承了系统。它不仅继承了UNIX的特征,而且在许多方的特征,而且在许多方面超过了面超过了UNIX。作为。作为UNIX类操作系统,它具有下类操作系统,它具有下列基本特征:列基本特征: 是真正的多用户、多任务操作系统;是真正的多用户、多任务操作系统;
37、是符合是符合POSIX标准的系统;标准的系统; 提供具有内置安全措施的分层的文件系统;提供具有内置安全措施的分层的文件系统; 提供提供shell命令解释程序和编程语言;命令解释程序和编程语言; 提供强大的管理功能,包括远程管理功能;提供强大的管理功能,包括远程管理功能; 具有内核的编程接口;具有内核的编程接口; 具有图形用户接口;具有图形用户接口; 具有大量有用的实用程序和通信、联网工具;具有大量有用的实用程序和通信、联网工具; 具有面向屏幕的编缉软件。具有面向屏幕的编缉软件。大量的高级程序设计语言已移植到大量的高级程序设计语言已移植到Linux系统上,因系统上,因而它是理想的应用软件开发平台
38、,而且,在而它是理想的应用软件开发平台,而且,在Linux系统下开发的应用程序具有很好的可移植性。同时,系统下开发的应用程序具有很好的可移植性。同时,Linux还有许多独到之处:还有许多独到之处:(1) 它的源代码几乎全部都是开放的。它的源代码几乎全部都是开放的。 (2) 它可以运行在许多硬件平台上。它可以运行在许多硬件平台上。(3) 它不仅可以运行许多自由发布的应用软件,还可它不仅可以运行许多自由发布的应用软件,还可以运行许多商品化的应用软件。以运行许多商品化的应用软件。(4) 强大的网络功能。强大的网络功能。Linux系统的另一特征是它能充分发挥硬件的功能,系统的另一特征是它能充分发挥硬件
39、的功能,因而它比其他操作系统的运行效率更高。因而它比其他操作系统的运行效率更高。因此,因此,Linux将有广泛的应用前景。将有广泛的应用前景。1.5.2 UNIX、GNU与与LinuxLinux是一种类是一种类UNIX系统,二者有相当的渊源,同系统,二者有相当的渊源,同时,时,Linux遵循遵循GNU的的GPL许可证,是自由软件家许可证,是自由软件家族中的一员,因此,要了解族中的一员,因此,要了解Linux,就必须先了解,就必须先了解他们三者之间的关系。他们三者之间的关系。1. Linux与与UNIX系统系统Linux的源头要追溯到最早的的源头要追溯到最早的UNIX。UNIX系统正式发表于系统
40、正式发表于1974年年, 到到1975年的第年的第6版中,版中,引入了多道技术。引入了多道技术。1980年,年,Bell实验室公布了实验室公布了VAX11/780系统平台的系统平台的32位操作系统位操作系统UNIX32V。一个可以运行一个可以运行UNIX程序的系统就是程序的系统就是UNIX。经过多年发展,经过多年发展,UNIX从实验室走出来并成为了操作从实验室走出来并成为了操作系统的主流。直到今天,系统的主流。直到今天,UNIX系统以其稳定、高系统以其稳定、高效的性能在服务器高端市场中依然占有绝对优势。效的性能在服务器高端市场中依然占有绝对优势。很多公司也开发了用于很多公司也开发了用于PC的的
41、UNIX。UNIX是一个简单却非常优秀的操作系统模型。是一个简单却非常优秀的操作系统模型。Linux系统最初以系统最初以UNIX为原型,以实现为原型,以实现POSIX标准标准作为其目标,到作为其目标,到2000年为止,年为止,Linux核心从核心从0.01版版发展为发展为2.4版。版。Linux具有稳定高效的处理性能,拥具有稳定高效的处理性能,拥有稳定庞大的用户群体,得到众多厂商有力的支持,有稳定庞大的用户群体,得到众多厂商有力的支持,成为操作系统发展的热点。成为操作系统发展的热点。Linux在低端服务器市在低端服务器市场上已经对场上已经对Windows NT/2000造成了极大的压力。造成了
42、极大的压力。2. 自由软件运动与自由软件运动与LinuxLinux只是自由软件家族中的一员,是其中最具影响只是自由软件家族中的一员,是其中最具影响的成员之一。的成员之一。在计算机工业发展的初期,软件只是硬件的附属品。在计算机工业发展的初期,软件只是硬件的附属品。但是,公司很快认识到软件的价值,对软件实施了但是,公司很快认识到软件的价值,对软件实施了版权控制,并限制源代码的发布。版权控制,并限制源代码的发布。Richard Stallman在其他人的协作下创作了通用公共在其他人的协作下创作了通用公共许可证(许可证(General Public License,GPL)。)。GPL保保证任何人有共
43、享和修改自由软件的自由,任何人有证任何人有共享和修改自由软件的自由,任何人有权取得、修改和重新发布自由软件的源代码,并且权取得、修改和重新发布自由软件的源代码,并且规定在不增加附加费用的条件下得到源代码。规定在不增加附加费用的条件下得到源代码。3. Linux的历史的历史Linux可以说完全是一个互联网时代的产物,它是在可以说完全是一个互联网时代的产物,它是在互联网上产生、发展和不断壮大起来的。互联网上产生、发展和不断壮大起来的。Linus在自己的在自己的PC上,利用上,利用Tanenbaum教授自行设计教授自行设计的微型的微型UNIX操作系统操作系统MINIX为开发平台,开发了为开发平台,开
44、发了属于他自己的第一个程序。属于他自己的第一个程序。Linus 说刚开始的时候他根本没有想到要编写一个操说刚开始的时候他根本没有想到要编写一个操作系统内核。作系统内核。 “于是我又不得不写一个磁盘驱动于是我又不得不写一个磁盘驱动程序,然后是一个文件系统。而一旦当你有了任务程序,然后是一个文件系统。而一旦当你有了任务切换器、文件系统和设备驱动程序之后,你当然就切换器、文件系统和设备驱动程序之后,你当然就拥有了一个拥有了一个UNIX”或者至少是它的一个内核。或者至少是它的一个内核。Linux就以这样一种极其古怪但也极其自然的方式就以这样一种极其古怪但也极其自然的方式问世了。问世了。Linus并没有
45、在并没有在 MINIX 新闻组中公布它。他只是在新闻组中公布它。他只是在赫尔辛基技术大学的一台赫尔辛基技术大学的一台 FTP 服务器上发了一则服务器上发了一则消息,说用户可以下载消息,说用户可以下载Linux的公开版本。的公开版本。到到1992年年1月止,全世界大约只有月止,全世界大约只有100个左右的人在个左右的人在使用使用Linux。1993 年,年,Linus 的第一个的第一个“产品产品”版版Linux 1.0问世问世的时候,是按完全自由发行版权进行发行的。的时候,是按完全自由发行版权进行发行的。Linux与与GPL的结合,使许多软件开发人员相信这是的结合,使许多软件开发人员相信这是一个
46、有前途的项目,开始参与内核的开发工作,并一个有前途的项目,开始参与内核的开发工作,并将将GNU项目的项目的C库、库、gcc、Emacs、bash等很快移植等很快移植到到Linux内核上来。内核上来。商业软件公司的加盟也使大多数商业软件公司的加盟也使大多数 Linux 的普通用户的普通用户吃了定心丸。吃了定心丸。Linux从一开始就主要是在一些软件从一开始就主要是在一些软件行业中的高手之间流行的,并且很快就在全球范围行业中的高手之间流行的,并且很快就在全球范围内集结了一大批职业的和业余的技术专家,形成了内集结了一大批职业的和业余的技术专家,形成了一个数量庞大而且非常热心的支持者群体。他们能一个数
47、量庞大而且非常热心的支持者群体。他们能够通过网络很快地响应使用者所遇到的任何问题。够通过网络很快地响应使用者所遇到的任何问题。 1997 年,年,Linux支持者群体在众多的软件公司中一支持者群体在众多的软件公司中一举胜出,荣获了美国举胜出,荣获了美国InfoWorld杂志的最佳技杂志的最佳技术支持奖,而这一奖项原本只是为商业公司而设立术支持奖,而这一奖项原本只是为商业公司而设立的。的。Linux核心的版本发展情况见表核心的版本发展情况见表1.1。该表摘自。该表摘自参考文献参考文献2,表中最后一项,程序行数(,表中最后一项,程序行数(Lines of Code,LOC)包含了)包含了Linux
48、可应用于如可应用于如x86、PPC、SPARC等所有平台的程序代码。等所有平台的程序代码。 表表1.1 Linux核心发展情况(截止核心发展情况(截止1998年)年)年年 份份 使用者数量使用者数量 版版 本本大小(大小(LOC) 1991 1 0.01 10k 1992 1k 0.96 40k 1993 20k 0.99 100k 1994 100k 1.0 170k 1995 500k 1.2 250k 1996 1.5M 2.0 400k 1997 3.5M 2.1 800k 1998 7.5M 2.1.110 1.5M当当Linux走向成熟时,一些人开始建立软件包来简化走向成熟时,一些
49、人开始建立软件包来简化新用户安装和使用新用户安装和使用Linux的方法。这些软件包称为的方法。这些软件包称为Linux发布或发布或Linux发行版本。在早期众多的发行版本。在早期众多的Linux发行版本中,最有影响的要数发行版本中,最有影响的要数Slackware发布。发布。Linux文档项目(文档项目(LDP)是围绕)是围绕Slackware发布写成发布写成的。目前,的。目前,Red Hat发行版本的安装更容易,应用发行版本的安装更容易,应用软件更多,已成为最流行的软件更多,已成为最流行的Linux发行版本,发行版本,2000年秋天已经发行了年秋天已经发行了7.0版本;而版本;而Calder
50、a则致力于则致力于Linux的商业应用,它的发展速度也很快。中文化的商业应用,它的发展速度也很快。中文化的的Linux发行版本也有很多,国内自主建立的如发行版本也有很多,国内自主建立的如BluePoint Linux、Flag Linux、 Xterm Linux以及以及美国的美国的XLinux、TurboLinux等。等。每种发行版本都有各自的优点和弱点,但它们都提每种发行版本都有各自的优点和弱点,但它们都提供相对完整的应用软件及帮助文档,都使用相同的供相对完整的应用软件及帮助文档,都使用相同的内核和开发工具,大家都使用同一个名称内核和开发工具,大家都使用同一个名称Linux系统。系统。1.