1 Linux管理员手册--系统概述

本章概述Linux系统 。首先描述操作系统提供的主要服务 。然后说明实现这些服务的程序 with a considerable lack of detail 。本章的目的是理解系统整体,以后再详细说明每个部分 。
一个操作系统的不同部分
一个UNIX操作系统包括一个核心程序kernel和一些系统程序system programs 。还有一些做某件事情的应用程序application programs 。核心是操作系统的心脏。它跟踪磁盘上的文件,启动程序并运行它们,给不同的进程分配内存和其他资源,从网络接收和向网络发送包,等等 。核心很少自己干活,但它提供工具,用这些工具可以建立所有服务 。它还阻止任何人直接存取硬件,强制每个人使用它提供的工具 。这样,核心给每个用户与其他用户之间提供保护 。核心提供的工具通过系统调用system calls使用;要了解关于这的更多的信息,看手册页第二节 。
系统程序使用核心提供的工具实现操作系统要求的不同的服务 。系统程序和所有其他程序运行在核心之上,叫做用户模式user mode 。系统程序和应用程序的区别是目的:应用程序意图完成一些有用的工作(或游戏),而系统程序则为系统工作而需要 。字处理器是应用;telnet 是系统程序 。区别经常有些模糊,也许,只是为了强制分类 。
虽然编程语言不必是操作系统的一部分,操作系统也可以包括编译器及其相关的库(Linux下是gcc和C库) 。文档、有时甚至游戏,可以是操作系统的一部分 。传统上,操作系统被定义为安装磁带或磁盘上的内容;对于Linux就更不清楚,因为它分布在全世界的FTP站点上 。
核心的重要部件
Linux核心包括几个重要部分:进程管理、存储器管理、硬件设备驱动、文件系统驱动、网络管理和其他不同的部分 。图2.1显示了它们的一些 。
可能核心最重要的部分(没有它们什么也不能工作)是存储器管理和进程管理 。存储器管理负责分配进程的存储器区域和对换空间区域、核心的部件及buffer cache 。进程管理产生进程,用切换处理器上的活动进程来实现多任务 。
在最低级,核心对它支持的每种硬件包含一个硬件设备驱动 。因为世界上存在大量不同的硬件,硬件设备驱动的数量极大 。有许多不同的硬件,因此软件控制方法不同 。但其相似性可能分类驱动,支持相似的操作;每类的每个成员有相同的与核心其他部分接口,但具体实现是不同的 。例如,所有的硬盘驱动与核心其他部分接口相同,即他们都有初始化驱动器、读N扇区、写N扇区 。
核心自己提供的有些软件服务有类似的抽象属性,因此可以抽象分类 。例如,不同的网络协议已经被抽象为一个编程接口:BSD socket库 。另一个例子是虚拟文件系统virtual filesystem(VFS)层,它从文件系统操作实现中抽象出文件系统操作 。每个文件系统类型提供了每个文件系统操作的实现 。当一些实体企图使用一个文件系统时,请求通过VFS送出,它将请求发送到适当的文件系统驱动 。
UNIX系统的主要服务
本节说明一些最重要的UNIX服务,但不太详细 。以后的章节中将更详细地说明 。
init
UNIX系统里最重要的服务是由init 提供的 。init 是每个UNIX系统在核心引导最后启动的第一个进程 。init 启动后,它做不同的启动工作继续引导过程(检查和mount文件系统、启动守侯程序等)
init 做的具体事情的列表依赖于用户意愿; init 有多个启动选择 。通常提供单用户模式single user mode的概念,此时没有用户能登录,root 在控制台使用一个shell;通常的模式叫多用户模式multiuser mode 。一般说来这称为运行级run levels;单用户和多用户模式可以理解为2个运行级,还可以有其他运行级,例如,在控制台上运行X 。

推荐阅读