Linux 核心--1.前言( 二 )



我第一次接触Linux在1994年下半年当我拜访Jim Paradis时,当时他正在致力于将Linux移植到Alpha AXP处理器系统上 。从1984年开始,我曾经在DEC公司任职,主要工作是网络与通讯 。1992年我开始为新成立的Digital Semiconductor分部工作 。此分部的任务是全面进入商用芯片市场并销售芯片,特别是Alpha AXP系列处理器以及DEC以外的Alpha AXP系统板 。当首次听到Linux时我便立刻意识到了这是一个有趣的机会 。Jim的狂热是鼓惑人心的,我也开始帮他一起工作 。在工作中,我越来越喜欢这个操作系统及创造它的工程师团体 。

Alpha AXP仅仅是Linux可以运行的多种平台中的一个 。大多数Linux核心工作在基于Intel处理器 的系统上,但非Intel系统的Linux用户也越来越多 。它们是Alpha AXP, ARM, MIPS, Sparc与Power PC 。虽然我可以根据上叙任何一种平台来编写本书的内容,但是我的技术知识与背景让我主要根据Alpha AXP处理器和ARM处理器来编写 。这是本书有时使用非Intel硬件来描叙一些重要观点 。值得注意的是,不管运行在哪种平台上,95%的Linux核心代码都是相同的 。同样,本书95%的内容是关于Linux 内核的机器无关部分的讨论 。

本书对读者的知识与经验没有任何要求 。我相信对于某一事物的兴趣是鼓励自学的必要因素 。不过对于计算机,或者PC和C程序语言的了解将有助于读者从有关材料中获益 。

本书的组织
本书并不是特意一本Linux的内部手册 。相反它是对操作系统的介绍,同时以Linux作为示例 。书中每一章遵循“从共性到特性”的原则 。它们将首先给出核心子系统的概叙,然后进行尽可能的详细描叙 。我不会用routine_X()调用routine_Y()来增加bar数据结构中foo域的值这种方式来描叙核心算法 。你自己可以通过阅读代码发现它 。每当需要理解一段代码时,我总是将其数据结构画出来 。这样我发现了许多相关的核心数据结构以及它们之间的关系 。每一章都是非常独立的,就象Linux核心子系统一样 。当然有时它们还是有联系的,比如说,如果你没有理解虚拟内存工作原理就无法描叙进程 。硬件基本概念一章对现代PC做了简要介绍 。操作系统必须与硬件系统紧密结合在一起协同工作 。操作系统需要一些只能够由硬件提供的服务 。为了全面理解Linux,你必须了解有关硬件的基础知识 。软件基本概念一章介绍了软件基本原理与C程序语言 。讨论了建立Linux这样的操作系统的工具并且给出了操作系统的目标与功能的概叙 。内存管理这章描叙了Linux如何处理物理内存以及虚拟存储技术 。进程管理描叙了进程的概念以及Linux核心是如何创建、管理与删除系统中的进程 。进程间及进程与核心间通讯以协调它们的活动 。Linux支持大量进程间通讯(IPC)机制 。信号与管道是 其中的两种,Linux同时还支持系统V IPC机制 。这些进程间通讯机制在IPC一章中描叙 。外部设备互连(PCI)标准已经成为PC上低价位高数传率的总线标准 。PCI一章将描叙Linux核心是如何初始化并使用PCI总线及设备的 。中断及中断处理一章将着重于Linux核心对中断的处理 。虽然处理中断有通用的机制与接口,但某些细节是与硬件及CPU体系结构相关的 。Linux的一个长处是其对现代PC的硬件设备强有力的支持 。设备驱动程序一章将描叙Linux核心是如何控制系统中的物理设备 。文件系统一章描叙了Linux核心是如何维护它所支持的文件系统中的文件 。同时还描叙了虚拟文件系统(VFS)及Linux核心的每种文件系统是如何得到支持 。网络与Linux几乎是同义的 。在某种意义上Linux是WWW时代互连网的产物 。其开发者通过Web来交换信息及代码 。网络一章描叙了Linux是如何支持TCP/IP这些网络协议 。核心机制一章主要讨论能使Linux核心其他部分有效工作而由核心所提供的一些通用任务与机制 。动态模块一章描叙Linux核心是如何仅在需要时动态加载某些模块,比如文件系统 。处理器一章给出了目前Linux可以在其上运行的一些处理器的简要介绍 。资源一章则提供了有关Linux核心资源的有用信息 。

推荐阅读