Hadoop大数据实战权威指南(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.1 Linux操作系统

3.1.1 概述

Linux出现在20世纪90年代初,一位名叫Linus Torvalds的计算机业余爱好者开发了该系统,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替Minix(是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统)的操作系统,这个操作系统可用于386、486或使用奔腾处理器的PC上,并且具有UNIX操作系统的全部功能,因而开始了Linux雏形的设计。

Linux以其高效性和灵活性著称,能够在PC上实现全部的UNIX特性,具有多任务、多用户的能力。Linux可在GNU公共许可权限下免费获得,是一个符合POSIX标准的操作系统。Linux操作系统软件包不仅包括完整的Linux操作系统,而且包括了编辑器、高级语言编译器等应用软件,它还包括带有多个窗口管理器的X-Windows图形用户界面,如同使用Windows NT一样,允许使用窗口、图标和菜单对系统进行操作。

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

简单地说,Linux是一套免费使用和自由传播的类UNIX操作系统,是一个基于POSIX与UNIX的多用户、多任务、支持多线程和多CPU的操作系统,能运行主要的UNIX工具软件、应用程序和网络协议,支持32位和64位硬件。Linux继承了UNIX以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统,主要用于Intel x86系列CPU的计算机上。Linux操作系统是由全世界成千上万的程序员设计和实现的,其目的是建立不受任何商业化软件的版权制约的、任何用户都能自由使用的UNIX兼容产品。

3.1.2 特点

Linux操作系统在短时间内得到了非常迅猛的发展,这与Linux具有的良好特性是分不开的。Linux包含了UNIX的全部功能和特性。归纳起来,Linux具有以下主要特性。

(1)开放性:开放性是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。

(2)多用户:多用户是指系统资源可以被不同用户使用,即每个用户对自己的资源(如文件、设备)有特定的权限,互不影响。Linux和UNIX都具有多用户的特性。

(3)多任务:多任务是现代计算机的一个主要特点,它是指计算机可同时执行多个程序,而且各个程序的运行是互相独立的。Linux系统调度每一个进程平等地访问CPU。由于CPU的处理速度非常快,其结果是应用程序看起来好像在并行运行。事实上,从CPU执行一个应用程序到Linux调度CPU再次执行这个程序之间只有很短的时间延迟,用户是感觉不出来的。

(4)良好的用户界面:Linux向用户提供了两种界面——用户界面和系统调用界面。Linux的传统用户界面是基于文本的命令行界面,即Shell,它既可以联机使用,又可以在文件上脱机使用。Shell有很强的程序设计能力,用户可方便地用它来编制程序,为扩充系统功能提供了更高级的手段。可编程Shell是指将多条命令组合在一起,形成一个Shell程序,这个程序可以单独运行,也可以与其他程序同时运行。

系统调用界面是在用户编程时使用的界面,用户可以在编程时直接使用系统提供的调用命令,系统通过这个界面可为用户编程提供服务。

Linux还为用户提供了图形用户界面,它利用鼠标、菜单、窗口、滚动条等,为用户呈现了一个直观、易操作、交互性强的友好图形化界面。

(5)设备独立性:设备独立性是指操作系统把所有外部设备统一当成文件来看待,安装了它们的驱动程序后,任何用户都可以像使用文件一样使用这些设备,而不必知道它们的具体存在形式。

具有设备独立性的操作系统可通过把每一个外围设备看成一个独立文件来简化增加新设备的工作。当需要增加新设备时,系统管理员就在内核中增加必要的连接。这种连接(也称为设备驱动程序)保证每次调用设备提供服务时,内核以相同的方式来处理它们。当新的或更好的外设被开发并交付给用户时,将这些设备连接到内核后,就能不受限制地立即访问它们。设备独立性的关键在于内核的适应能力,其他操作系统只允许连接一定数量或一定种类的外部设备,而设备独立性的操作系统能够连接任意种类及任意数量的设备,因为每一个设备都是通过其与内核的专用连接独立进行访问的。

Linux是具有设备独立性的操作系统,它的内核具有高度适应能力,随着更多的程序员加入Linux编程的队伍,会有更多硬件设备加入各种Linux内核和发行版本中。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部设备。

(6)丰富的网络功能:丰富的网络功能是Linux的一大特点,Linux在通信和网络功能方面优于其他操作系统。其他操作系统不具有如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些连网特性。Linux为用户提供了完善的、强大的网络功能。

支持Internet是其网络功能之一,Linux免费提供了大量支持Internet的软件,Internet是在UNIX领域中建立并繁荣起来的,在这方面使用Linux是相当方便的,用户能用Linux与世界上的其他人通过Internet网络进行通信。文件传输是其网络功能之二,用户能通过一些Linux命令完成内部信息或文件的传输。远程访问是其网络功能之三,Linux不仅允许进行文件和程序的传输,还为系统管理员和技术人员提供了访问其他系统的窗口,通过远程访问功能,技术人员能够有效地为多个系统服务,即使那些系统位于很远的地方。

(7)可靠的系统安全:Linux采取了许多安全技术措施,包括对读写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。

(8)良好的可移植性:可移植性是指将操作系统从一个平台转移到另一个平台时仍然能按其自身方式运行的能力。Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。可移植性为运行Linux的不同计算机平台与其他任何机器进行准确而有效的通信提供了手段,不需要额外增加特殊的和昂贵的通信接口。

3.1.3 Linux操作系统的组成

操作系统是一台计算机必不可少的系统软件,是整个计算机系统的灵魂。一个操作系统是一个复杂的计算机程序集,它提供操作过程的协议或行为准则。没有操作系统,计算机就无法工作,就不能解释和执行用户输入的命令或运行简单的程序。

Linux操作系统包括四个组成部分:内核、Shell、文件系统和实用工具。

1. 内核

Linux是一个整体化内核(Monolithic Kernel)操作系统。内核指的是提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件,在Linux中被称为内核,也可以称为核心。

一个内核不是一套完整的操作系统。Linux内核的主要模块(或组件)分为以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。一套基于Linux内核的完整操作系统称为Linux操作系统,或者GNU/Linux。Linux内核中的设备驱动程序可以方便地以模块化(Modularize)的形式设置,并在系统运行期间可直接装载或卸载。

2. Shell

Shell是Linux操作系统的用户界面,提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把命令送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把命令送到内核。不仅如此,Shell也有自己的编程语言,可用于命令的编辑,允许用户编写由Shell命令组成的程序。Shell的编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

Linux操作系统提供了像Windows那样可视的命令输入界面,称为X-Windows的图形用户界面(GUI),它提供了很多窗口管理器,其操作就像Windows一样,有窗口、图标和菜单,所有的操作都是通过鼠标控制的。现在比较流行的窗口管理器是KDE和GNOME。

Linux操作系统的每个用户都可以拥有自己的用户界面或Shell,用以满足专门的Shell需要。

与Linux操作系统有不同版本一样,Shell也有多种不同的版本。目前主要有下列版本的Shell:Bourne Shell,是贝尔实验室开发的;BASH,是GNU的Bourne Again Shell,是GNU操作系统上默认的Shell;Korn Shell,是Bourne Shell的发展,在大部分内容上与Bourne Shell兼容;C Shell,是Sun公司Shell的BSD版本。

3. 文件系统

文件系统是操作系统的重要组成部分,主要负责管理磁盘文件的输入输出。

文件是通过目录进行组织的,目录是文件存放在磁盘等存储设备上的组织方式,提供了管理文件的一个方便而有效的途径。用户可以设置目录和文件的权限,以便允许或拒绝其他用户对其进行访问;设置文件的共享程度,能够从一个目录切换到另一个目录。

Linux操作系统的目录采用多级树形结构,如图3-1所示。用户可以浏览整个系统,进入任何一个已授权进入的目录,访问那里的文件。

图3-1 多级树形结构

表3-1给出了Linux操作系统目录的内容与用途。

表3-1 Linux操作系统目录的内容与用途

续表

4. 常用工具

Linux操作系统的常用工具可分为三类:编辑器(用于编辑文件)、过滤器(用于接收并过滤数据)、交互程序(允许用户发送信息或接收来自其他用户的信息)。

(1)Linux操作系统的编辑器主要有gedit、ex、vi和emacs。gedit和ex是行编辑器,vi和emacs是全屏幕编辑器。

(2)Linux操作系统的过滤器(Filter)可读取从用户文件或其他地方的输入,并检查和处理数据,然后输出结果。从这个意义上说,过滤器过滤了经过它们的数据。Linux操作系统有不同类型的过滤器,一些过滤器用行编辑命令输出一个被编辑的文件,另外一些过滤器是按某个模式寻找文件并以这种模式输出部分数据的。还有一些执行字处理操作,可检测一个文件中的格式,输出一个格式化的文件。过滤器的输入可以是一个文件,也可以是用户从键盘键入的数据,还可以是另一个过滤器的输出。过滤器可以相互连接,因此,一个过滤器的输出可能是另一个过滤器的输入。在有些情况下,用户可以编写自己的过滤器程序。

(3)交互程序是用户与机器的信息接口。Linux操作系统是一个多用户系统,它必须和所有用户保持联系。信息可以由系统上的不同用户发送或接收,信息的发送有两种方式:一种方式是与其他用户一对一地连接并进行通信;另一种方式是一个用户与多个用户同时连接并进行通信,即所谓的广播式通信。