当前位置:Linux教程 - Linux - Linux核心 之 (前言)

Linux核心 之 (前言)



         \"First, they ignored us; then they laughed at us; then they fighted us; then we win.\" --From 1st Linux Conference


    --------------------------------------------------------------------------------

    原著:David A Rusling

    编译: 胡宁宁 毕昕 仲盛 赵振平 周笑波 李群 汲化

    --------------------------------------------------------------------------------

    译者的话:


    历尽半年多,《Linux 核心》终于和大家见面了.作为译者,心中非常高兴。 基于Linux 核心2.0.33, 本书介绍了Linux核心是如何工作的。它不是一本关于核心的手册,而是描述了Linux核心中使用的原理,机制和Linux为什么使用这些原理和机制。希望本书能给读者带来些益处。


    编译本书的过程中,我们没有局限于原作者的内容,加入了一些译者自己的理解。由于我们的专业和英语水平有限,疏漏之处在所难免。敬请读者谅解并望指出。请给我们发 Email或在我们的BBS上留下您的意见。谢谢。


    本书版权属于GPL性质。故读者可以在非赢利的目的下随便拷贝和传播。但请表明出处,以尊重我们一字一字的劳动。


    我们下一步将在明年5/20时推出《Linux 核心源码分析》,基于核心2.3.16。源码分析的基础上,我们将试图清晰地将Linux核心的工作流程展现给读者.为进入Linux的系统(或/和)应用程序开发打下一个基础。


    谢谢,

    译者全体敬上


    12/1/1999

    前言

    --------------------------------------------------------------------------------


    Linux是Internet的产物,从属于一个学生(Linus Torvalds)的个人爱好演变成为一
    个当今最流行的免费操作系统。对许多人而言,Linux是乎是个迷。 一个免费的东
    西怎么会有价值?在一个被一群软件巨头统治的(系统)软件王国里,一个由一些电
    脑hackers编写的操作系统如何能够参与竞争?一个由不同的国家许多不同的人编写
    的软件如何能够保持其稳定性和高效性?这里的答案是Linux具有非常好的可靠性,
    高效性和竞争能力。许多大学和研究机构都在用Linux来作计算。许多人们已在其
    PC上安装了Linux。绝大多数公司都或多或少地在使用Linux。Linux被广泛地用来浏
    览web站点,文件处理,发送email ,玩计算机游戏。Linux绝不是一个计算机界的
    玩具,而是一个由全世界的爱好者开发的非常完善的,专业化的操作系统。

    Linux 的源头可以追溯到Unix 家族。1969年,贝尔实验室的研究人员Ken Thompson其
    开始在一台空闲的PDP-7机器上实验其多用户,多任务的操作系统(multi-user, multi-tasking
    operating system) 。不久Dennis Richie和其他两位同事加入了他的行列。他们与
    实验室中的其他同事一道开发出了最早期的Unix版本。Richie在早期的项目MULTICS
    中发挥了很大的作用。Unix其实是MULTICS的双关语。早期的Unix是用汇编写的。第
    3版时采用了C语言。C语言是Richie设计并编写的,以用来作为编写操作系统设计的
    语言。用C改写过的Unix使得Unix可以被移植PDP-11/45 和DIGITAL 11/70 计算机上。
    Unix移植到DIGITAL 11/70是一个历史性的转折,使得Unix正式从实验室走向大型机
    计算环境。很快,绝大多数的计算机制造商都发布了其相应的Unix版本。

    Linux诞生的原因极其简单。Linus Torvalds,Linux的作者和主要管理者,当时穷
    的只能够付的起Minix。Minix是一个非常简单,Unix风格的,被广泛用在教学上的
    操作系统。Linus对Minix的功能不是很满意(译者注:不知Andrew Tanenbaum看见这
    句话会有何感想。“后生可畏?”。有兴趣的读者可以访问Andrew的主页.)
    决定自己动手编写一个软件。因为在学校里每天用的都是Unix, 所以他选择将Unix作
    为他的软件的模型.最开始的工作是在一台Intel 386 的PC机上。他的进展很迅速。
    Linus对他所做的事情充满了兴趣,并通过刚刚出现的,还局限在学术领域的计算机网络,
    将已有的代码共享给其他的学生。 其他的人看见了Linus的软件并开始加入开发的行列。
    不同的人由于在使用Linux时碰到不同的问题,所以这个软件也就不断地被更新和完善。
    不久之后,Linux就成为一个完整的操作系统了。值得注意的是Linux中没有任何Unix代码,
    而是根据POSIX标准重新编写的Linux中使用了许多在Cambridge, Massachusetts的Free
    Software Foundation的提供GNU软件。


    多数人仅把Linux 当做一个简单的工具来使用。也有许多用户在Linux进行应用程序
    的开发。只有很少数的人敢于为Linux写设备驱动程序和核心的patches(译者注:这
    个词不太好翻译)。 Linus Torvalds接受来自任何人和地方的关于核心的补充和修改。
    这似乎有点象无政府主义。当Linus严把质量关并由他自己将新的代码加入核心。当
    然,在任何时候,从事Linux核心开发的人员毕竟是只有一少部份人。

    大多数Linux用户似乎不关心这个操作系统是如何构造和运行的。这不是个明智的决
    定因为学习Linux是更多理解一个操作系统功能的有利途径。Linux不仅仅是设计的
    很好,更重要的是其源代码是公开的。这是因为虽然作者拥有这个软件的版权,但
    在Free Software Foundation\"s GNU Public License的基础上,源代码是可以免费
    获取的。对刚接触源码的人,起初会觉得迷惑当看见一些叫做kernel,mm,和net的
    子目录。它们含有些什么?这些代码是如何工作的?为了解决上述问题,我们需要
    的是对整个Linux的结构有个总体的了解。这也正是本书的目的:提供一个关于Linux核
    心如何工作的清楚的画面,从而使得当你在运行一些应用程序时,你可以明白操作
    系统核心处正在发生着什么(译者注:这一点是为什么要鼓励应用程序开发者了解操
    作系统的结构。例如,不理解操作系统的调度,很难想象一个应用程序开发者可以
    编出一个高效的多线程并发程序)。

    (此处译者略去原作者的自我介绍,有兴趣的读者可以访问其site)

    这本书讲述的是Alpha AXP-based Linux版本(译者注:这是因为作者在写此书时在
    Digital公司(后来被Compag吞并;著名的Alta Vista seearch engine出自Digital)任
    职。然而95%的Linux核心源代码是与具体的硬件平台无关的。换而言之,本书95%的
    内容是讲述与硬件无关的Linux核心。

    关于读者

    本书不要求读者必须具备任何知识和经验的前提。我们假设读者会在需要时补充相
    关的知识。具备一定的计算机知识和C语言功底将帮助读者更好地理解本书。

    本书的组织

    本书并不是关于Linux内部的手册。它是关于通常意义上的操作系统,特别是对于Linux的
    介绍。每一章节按照从”普通到特殊“的规则来布局。首先在具体介绍细节之前,
    我们给出一个对核心子系统的综述。

    关于核心的具体算法被特意地略去。有兴趣的读者可以参阅具体的源代码。本书将
    重点放在核心数据结构和其之间的关系上。

    本书每一章都相对独立,就象每一个Linux子系统完成相对独立的功能一样。当然章
    节之间也是相关联的。例如,你不能很好地描述一个进程如果不理解虚拟内存是如
    何工作的。

    硬件基础章节给出一个对当代PC的简要介绍。一个操作系统必须工作在一个硬件基
    础上。操作系统中的某些功能是与硬件相关的。为了理解Linux操作系统,读者需要
    具备一定的底层硬件知识。

    软件基础章节介绍了基本的软件知识原理并论及了汇编和C语言。它们都是编写一个
    操作系统不可缺少的工具。另外本章给出了对操作系统的功能和目标的一个综述。


    内存管理章节描述了Linux如何管理系统中的物理和虚拟内存。

    进程章节描述了什么是一个进程,Linux核心如何创见,管理和删除系统中的进程。


    进程之间,进程与核心之间通过通讯来调整/安排它们的行为。Linux支持很多种进
    程间通讯--IPC(Inter-Process Communication)机制。信号与管道是其中的两种Linux还
    支持System V IPC机制。关于IPC机制的内容在IPC章节描述。

    PCI标准是一个高效的PC总线。PCI章节讲述了Linux核心如何初始化合使用PCI总线
    和系统中的PCI 设备。

    中断和中断处理章节探讨了Linux核心如何处理中断。尽管操作系统核心里提供一些
    通用的机制和接口来处理中断,一些关于中断处理的细节是与硬件体系结构有关的。


    Linux的优点之一是它支持许多硬件设备。设备驱动程序章节描述了Linux核心如何
    控制系统中的物理设备。

    文件系统章节讲述了Linux核心如何维护其文件系统中的文件,描述了虚拟文件系统
    (Virtual File System)和如何支持Linux核心中的真正文件系统。

    网络与Linux是一对同义词。从某种真实的意义上讲,Linux是Internet或World Wide
    Web (WWW)的产物。Linux的开发和使用 者通过web来交换信息和代码 。Linux=通常
    被用来支持机构的网络需求。网络章节描述了Linux如何支持TCP/IP协议族。

    核心机制章节探讨了Linux核心需要支持/完成的一些通用任务和机制,以用来使得
    核心其他部份有效地工作在一起。

    模块章节讲述了Linux如何动态地装载功能模块,例如文件系统。

    源代码章节描述了对应于特定的核心功能的Linux核心源代码地址。读者可以依据本
    章的介绍来开始阅读源代码。

    本书的约定

    serif font 用户必须输入的命令或文本。

    Type font 数据结构和数据结构中的域。

    本书中所引用的源程序都基于相对路径/usr/src/linux。如foo/bar.c,则其实际的
    路径是/usr/src/linux/foo/bar.c。

    商标

    Caldera, OpenLinux and the ``C\"\" logo are trademarks of Caldera, Inc.
    Caldera OpenDOS 1997 Caldera, Inc.
    DEC is a trademark of Digital Equipment Corporation.
    DIGITAL is a trademark of Digital Equipment Corporation.
    Linux is a trademark of Linus Torvalds.
    Motif is a trademark of The Open System Foundation, Inc.
    MSDOS is a trademark of Microsoft Corporation.
    Red Hat, glint and the Red Hat logo are trademarks of Red Hat Software,
    Inc.
    UNIX is a registered trademark of X/Open.
    XFree86 is a trademark of XFree86 Project, Inc.
    X Window System is a trademark of the X Consortium and the Massachusetts
    Institute of Technology.

    感谢

    I must thank the many people who have been kind enough to take the time
    to e-mail me with comments about this book. I have attempted to incorporated
    those comments in each new version that I have produced. Special thanks
    must go to John Rigby and Michael Bauer who gave me full, detailed review
    notes of the whole book. Not an easy task.


    发布人:netbull 来自:Linuxeden