1.4 Linux概述
Linux操作系统具有许多独特而强大的功能。与其他操作系统一样,它是控制计算机的系统程序。但同时也与UNIX一样,是一个精心设计的工具程序的集合(如图1-1所示),而且提供了大量的工具使得用户可连接和使用这些工具,以构建系统和应用程序。
![]() |
| 图1-1 Linux操作系统的层次 |
1.4.1 Linux具有内核编程接口
Linux内核是Linux操作系统的核心,负责分配计算机资源和调度用户作业,尽可能使得每个作业都能平等地使用系统资源,如对CPU的访问,对磁盘、DVD、CD-ROM存储器、打印机和磁带驱动器等外围设备的使用等。应用程序通过系统调用(有着大家熟知的名称的特殊函数)与内核交互。程序员可使用一个系统调用实现与多种设备的交互。例如,系统调用write只有一个,但它可向多个设备实现写操作。当某个程序发出write请求时,内核将根据程序的上下文把请求传递给相应的设备。这种灵活性使得一些旧版本的工具能够适用于新出现的设备,并且使得在不重写程序的情况下,可以将程序较容易地移植到新操作系统下(假设新旧版本的操作系统可使用相同的系统调用)。
1.4.2 Linux支持多用户
根据硬件和计算机所执行任务的不同,Linux操作系统可支持一个到一千个以上的用户,其中的每个用户可同时运行不同的程序集合。若多个用户同时使用一台计算机,那么平均到每个用户上的费用比一个用户单独使用这台计算机的费用要低。因为单个用户通常不能充分利用计算机所提供的资源。例如任何人都不可能做到:使打印机一直处于打印状态;使系统内存完全被占用;使磁盘一直忙于读写操作;使Internet联接一直处于使用状态;使终端同时处于忙碌状态。而多用户操作系统允许多个用户可几乎同时使用所有的系统资源。这样,系统资源可最大程度地被利用,相应地,每个用户的花费就将减到最小。这正是多用户操作系统的根本目标所在。
1.4.3 Linux支持多任务
Linux是一个完全受保护的多任务操作系统,它允许每个用户同时运行多个作业。进程间可相互通信,但每个进程是受到完全保护的,即不会受到其他进程的干扰,就如内核不会受到其他任何进程干扰一样。用户在集中精力于当前屏幕所显示作业的同时,在后台还可运行其他作业,而且还可以在这些作业之间来回切换。如果运行的是X Window系统,那么同一屏幕上的不同窗口可运行不同的程序,并且可监视它们。这一功能提高了用户的工作效率。
1.4.4 Linux支持安全的分层文件系统
“文件”是指一组信息的集合。例如,备忘录或报告的文本信息、一组销售额的信息、一张图片、一首歌曲、一个可执行程序。每个文件都以一个唯一的名称存放在存储设备(如硬盘)上。Linux以目录结构的方式组织文件。这里的目录类似于文件夹、文件柜。每个目录具有一个名称,它可包含其他的文件和目录。目录按照一定的顺序组织在其他目录之下,形成了一种树状结构的组织形式。这种结构可使用户通过将相关文件放到一个目录下,实现对大量文件的管理。每个用户拥有一个主目录,根据需要可在该目录下建立更多的子目录,如图1-2所示。
![]() |
| 图1-2 Linux文件系统结构 |
标准 为了便于系统管理和软件开发,一些人通过网络组织在一起,开发了Linux文件系统标准(Filesystem Standard,FSSTND),该标准逐渐演化为文件系统层次标准(Filesystem Hierarchy Standard,FHS)。在采用这种标准之前,关键程序在Linux的不同发布版中所处的位置是不同的。现在,在装有Linux系统的计算机上,很容易就可以找到所需的标准程序。
链接 Linux文件系统提供了“链接”机制,该机制使得一个给定的文件可以通过两个或多个不同的名称访问(Windows系统中使用术语“快捷方式”来代替“链接”)。链接文件与原来的文件可在相同的目录下,也可在不同的目录下。“链接”机制使同一个文件可以出现在不同的用户目录中,这为用户间进行文件共享提供了可能。
安全 与大部分多用户操作系统类似,Linux允许用户对各自的数据进行保护,以防止其他用户的访问。Linux也允许用户通过一种简单而有效的保护措施来与其他一些用户共享被选择的数据和程序。这个安全级别可通过文件的访问权限来设定,其中文件的访问权限包括读、写和执行。最近,Linux内核已经加入了访问控制列表(Access Control List,ACL),该列表使得用户和管理者对文件访问权限可进行较细粒度的控制。
1.4.5 shell:命令解释器和编程语言
在文本环境下,shell作为命令解释器,建立了用户和操作系统之间的接口。当输入一个命令后,shell将对命令进行解释,并调用相应的程序。Linux中有许多shell,其中最常用的两个是:
● bash(Bourne Again Shell):是最初UNIX shell之一的Bourne Shell的增强版本。
● tcsh(TC Shell):作为BSD UNIX系统一部分而开发的C Shell的增强版本。
由于用户常常喜欢选择使用各种不同的shell,因此多用户操作系统在任何时候都在使用多个不同的shell。多种shell充分体现了Linux操作系统的一项重要功能——提供用户可定制界面。
shell除了具有解释键盘命令并发送到操作系统的功能外,它还是一种高级编程语言。shell命令可组织在一个文件中供以后执行,这些文件在Linux系统中称为shell脚本,在DOS和Windows系统中被称为批处理文件。这种灵活性使得用户利用相对短而简单的命令就可进行复杂操作,并且使得用户轻而易举就可创建完成复杂操作的精巧程序。
1. 文件名的生成
在输入让shell处理的命令时,可使用对shell具有特殊意义的字符来构造模式。这些特殊意义的字符称为通配符(wildcard)。这些模式为用户提供了一种简便方式,使用户不必输入完整的文件名,而只输入模式,然后由shell将模式拓展为匹配的文件名。这些模式称为模糊文件引用(Ambiguous File Reference),该引用可节省因输入长文件名或者一长串相近的文件名而耗费的精力。对于只知道文件名称的一部分或不能记起文件名精确拼写的情况,模式便非常有用。
2. 设备无关的输入和输出
重定向 设备(如打印机、终端)和磁盘文件在Linux程序中都以文件的形式出现。当向Linux操作系统发出命令时,可指示操作系统将输出发送到任何一个设备或文件,这称为输出重定向(redirection)。
类似地,通常来自键盘的程序输入可重定向为来自某个磁盘文件。输入和输出都是设备无关的,输出可被重定向到任何合适的设备,来自任何设备的输入也可被重定向。
例如,cat工具通常用于在屏幕上显示文件内容。运行cat命令可以很容易地将其输出重定向到某个磁盘文件而不是屏幕上。
3. shell函数
shell的一个非常重要的特性是它可作为一种编程语言来使用。因为shell是一个解释器,所以它不能对为它编写的程序进行编译,而是在每次从磁盘加载这些程序时,对它们进行解释。而程序的加载和解释都是非常耗时的。
针对此问题,许多shell(如Bourne Again Shell)都包含shell函数,shell把这些函数放在内存使得每次需要执行它们时,不必再从磁盘读入。shell还以一种内部格式来存放这些函数使得不必耗费大量时间来解释它们。
4. 作业控制
作业控制(Job Control)是shell的另一个特性,它允许用户同时运行多个作业,并且根据需求可将前后台的作业进行切换。当启动某个作业时,它通常是在前台运行,因此该作业是与终端相连接的。利用作业控制这一功能,可将正处于前台工作的作业切换到后台去,在后台该作业可继续运行,并且在前台可以运行或监视另一个作业。如果想关注一下某个正在后台运行的作业,那么,可将其切换到前台工作,以使其又一次与终端相连接。作业控制的这一概念起源于BSD UNIX,后来又出现在C Shell中。
1.4.6 大量有用的工具集
Linux包括几百个工具程序,这些程序通常被称为命令(command),可以提供用户普遍需要的功能。例如sort程序可以按照字母表顺序或数字顺序对列表(或者是一组列表)进行排序,这样便于根据部件号码、姓、城市名、邮政编码、电话号码、年龄、大小、成本等关键字进行排序。sort工具是一个非常重要的编程工具,也是标准Linux操作系统中的一部分。还有些工具则允许用户创建、显示、打印、复制、查找和删除文件,有些则允许用户对文本进行编辑、格式化和排版。man(即手册、指南)和info工具可提供Linux的联机文档。
1.4.7 进程间的通信
管道(pipe)和过滤器(filter) Linux允许用户在命令行上建立管道和过滤器。管道可将一个程序的输出作为另一个程序的输入。过滤器,作为管道的一种特殊形式,对输入数据流处理以得到输出数据流。过滤器可对程序的输出进行修改。过滤器的输出结果可作为另一个程序的输入。
管道和过滤器经常将多个工具连接起来以完成某个特定的任务。例如,可使用管道将cat工具的输出作为sort工具的输入(此管道可称为过滤器),同时,也可使用另一个管道再将sort的输出发送给第3个工具lpr,即将数据打印输出。这样,在一条命令行上,使用了3个工具,完成了排序和打印文件的工作。
1.4.8 系统管理
Linux系统的系统管理员通常是系统所有者和系统唯一的用户,具有很多职责,其中首要的应该是设置系统和安装软件。
一旦系统启动并运行,系统管理员应负责下载和安装软件(包括对操作系统的更新)、备份和恢复文件、管理系统设备(如打印机、终端、服务器、局域网等),也应负责为新用户建立账户(在多用户操作系统中),必要时启动和关闭系统,以及处理任何出现的问题。
| 回书目 上一节 下一节 |
|
· 第六章 你能帮我吗?.. · Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. |
· 08年5月各大网上书店及.. · 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||