Linux核心

上传人:jiups****uk12 文档编号:39994004 上传时间:2018-05-22 格式:DOC 页数:177 大小:622.50KB
返回 下载 相关 举报
Linux核心_第1页
第1页 / 共177页
Linux核心_第2页
第2页 / 共177页
Linux核心_第3页
第3页 / 共177页
Linux核心_第4页
第4页 / 共177页
Linux核心_第5页
第5页 / 共177页
点击查看更多>>
资源描述

《Linux核心》由会员分享,可在线阅读,更多相关《Linux核心(177页珍藏版)》请在金锄头文库上搜索。

1、1Linux 核心核心原著原著: : DavidDavid A A RuslingRusling前言前言 Linux 是互连网上的独特现象。虽然它是由学生的业余爱好发展而来,但是现在它已经成为 最为流行的免费操作系统。对很多人来说,Linux 是一个谜。免费的东西怎么会变得如此有 价值?在这个由少数软件公司统治的世界,由一帮 HACKER 们编写的东西是怎样与那些公司的 产品竞争的? 这些软件是如何分发给分布在世界各个角落,希望得到稳定产品的人们的?事 实上 Linux 的确稳定而富有竞争力。许多大学与研究机构都使用 Linux 完成他们的日常计算 任务。人们在家用 PC 上使用 Linux,

2、许多公司也在使用它-尽管他们并不总是乐意承认这点。 Linux 主要用来浏览 WEB,管理 WEB 站点,撰写与发送 EMAIL,以及玩游戏。Linux 绝对不是 玩具而是具有专业水平的操作系统,它的爱好者遍及世界。Linux 的源头要追溯到最古老的 UNIX。1969 年,Bell 实验室的 Ken Thompson 开始利用一台 闲置的 PDP-7 计算机开发了一种多用户,多任务操作系统。很快,Dennis Richie 加入了这 个项目,在他们共同努力下诞生了最早的 UNIX。Richie 受一个更早的项目MULTICS 的启 发,将此操作系统命名为 Unix。早期 UNIX 是用汇编语

3、言编写的,但其第三个版本用一种崭 新的编程语言 C 重新设计了。C 是 Richie 设计出来并用于编写操作系统的程序语言。通过这 次重新编写,Unix 得以移植到更为强大的 DEC PDP-11/45 与 11/70 计算机上运行。后来发生 的一切,正如他们所说,已经成为历史。Unix 从实验室走出来并成为了操作系统的主流,现 在几乎每个主要的计算机厂商都有其自有版本的 Unix.Linux 起源于一个学生的简单需求。Linus Torvalds,Linux 的作者与主要维护者,在其上大 学时所买得起的唯一软件是 Minix. Minix 是一个类似 Unix,被广泛用来辅助教学的简单操 作

4、系统。Linus 对 Minix 不是很满意,于是决定自己编写软件。他以学生时代熟悉的 Unix 作 为原型, 在一台 Intel 386 PC 上开始了他的工作。他的进展很快,受工作成绩的鼓舞,他 将这项成果通过互连网与其他同学共享,主要用于学术领域。有人看到了这个软件并开始分 发。每当出现新问题时,有人会立刻找到解决办法并加入其中,很快的, Linux 成为了一个 操作系统。值得注意的是 Linux 并没有包括 Unix 源码。它是按照公开的 POSIX 标准重新编写 的。Linux 大量使用了由麻省剑桥免费软件基金的 GNU 软件,同时 Linux 自身也是用它们构 造而成。许多人将 L

5、inux 视作简单工具并将其放入 CDROM 中来分发。很多 Linux 使用者使用它来编写 应用程序或者运行别人编写的应用程序。这些人热切的阅读 HOWTO 手册,当系统的一部分被 正确的设置时,他们总是激动不已,失败时则沮丧气馁。只有少部分人敢于编写设备驱动程 序并将核心的补丁提供给 Linus Torvalds,Linus Torvalds 从每个志愿者那里接收补充代码 与对核心的修改代码。这种情形听起来象非常混乱,但 Linus 进行了非常严格的质量控制并由他负责将所有的新代 码加入核心。只有少部分人对 Linux 核心贡献了源代码。 大多数 Linux 的使用者并不关心 系统是如何工

6、作,或者如何组合在一起的。这种情况令人惋惜,因为阅读 Linux 源代码提供2了一个学习操作系统的绝好机会。这不仅仅因为它写得好,还因为它的源码是可以免费得到 的。因为虽然作者们对其软件保留版权,但是在免费软件基金的 GNU 公开授权下源代码是可 以自由分发的。第一眼看去,源码是非常复杂的。但是通过进一步观察你可以发现源码目录 中包含有 Kernel,mm 以及 net 的目录, 不过要想知道这些目录中包含了那些代码以及代码是 如何工作的就需要对 Linux 的总体结构与目标有较深入的理解。简而言之,这也是本书所希 望达到的目标,为读者提供一个 Linux 如何工作清晰的印象。当你将文件从一个

7、目录拷到另 一个目录或者阅读电子邮件时,不妨在脑海中勾勒一下系统中正在发生什么事情,我还清楚 的记得当我感到第一次认识到操作系统真的在工作时的兴奋。这种兴奋正是我想将它带给本 书的读者的。我第一次接触 Linux 在 1994 年下半年当我拜访 Jim Paradis 时,当时他正在致力于将 Linux 移植到 Alpha AXP 处理器系统上。从 1984 年开始,我曾经在 DEC 公司任职,主要工作是网络 与通讯。1992 年我开始为新成立的 Digital Semiconductor 分部工作。此分部的任务是全面 进入商用芯片市场并销售芯片,特别是 Alpha AXP 系列处理器以及 D

8、EC 以外的 Alpha AXP 系 统板。当首次听到 Linux 时我便立刻意识到了这是一个有趣的机会。Jim 的狂热是鼓惑人心 的,我也开始帮他一起工作。在工作中,我越来越喜欢这个操作系统及创造它的工程师团体。Alpha AXP 仅仅是 Linux 可以运行的多种平台中的一个。大多数 Linux 核心工作在基于 Intel 处理器 的系统上,但非 Intel 系统的 Linux 用户也越来越多。它们是 Alpha AXP, ARM, MIPS, Sparc 与 Power PC。 虽然我可以根据上叙任何一种平台来编写本书的内容,但是我的 技术知识与背景让我主要根据 Alpha AXP 处理

9、器和 ARM 处理器来编写。这是本书有时使用非 Intel 硬件来描叙一些重要观点。值得注意的是,不管运行在哪种平台上,95%的 Linux 核心 代码都是相同的。同样,本书 95%的内容是关于 Linux 内核的机器无关部分的讨论。本书对读者的知识与经验没有任何要求。我相信对于某一事物的兴趣是鼓励自学的必要因素。 不过对于计算机,或者 PC 和 C 程序语言的了解将有助于读者从有关材料中获益。本书的组织本书的组织本书并不是特意一本 Linux 的内部手册。相反它是对操作系统的介绍,同时以 Linux 作为示 例。书中每一章遵循“从共性到特性”的原则。它们将首先给出核心子系统的概叙,然后进 行

10、尽可能的详细描叙。 我不会用 routine_X()调用 routine_Y()来增加 bar 数据结构中 foo 域的值这种方式来描叙核心算法。 你自己可以通过阅读代码发现它。每当需要理解一段代码 时,我总是将其数据结构画出来。这样我发现了许多相关的核心数据结构以及它们之间的关 系。 每一章都是非常独立的,就象 Linux 核心子系统一样。当然有时它们还是有联系的,比 如说,如果你没有理解虚拟内存工作原理就无法描叙进程。 硬件基本概念一章对现代 PC 做 了简要介绍。操作系统必须与硬件系统紧密结合在一起协同工作。操作系统需要一些只能够 由硬件提供的服务。为了全面理解 Linux,你必须了解有

11、关硬件的基础知识。 软件基本概念 一章介绍了软件基本原理与 C 程序语言。讨论了建立 Linux 这样的操作系统的工具并且给出 了操作系统的目标与功能的概叙。 内存管理这章描叙了 Linux 如何处理物理内存以及虚拟存 储技术。 进程管理描叙了进程的概念以及 Linux 核心是如何创建、管理与删除系统中的进程。进程间及进程与核心间通讯以协调它们的活动。Linux 支持大量进程间通讯(IPC)机制。 信号与管道是 其中的两种,Linux 同时还支持系统 V IPC 机制。这些进程间通讯机制在 IPC3一章中描叙。 外部设备互连(PCI)标准已经成为 PC 上低价位高数传率的总线标准。PCI 一

12、章将描叙 Linux 核心是如何初始化并使用 PCI 总线及设备的。 中断及中断处理一章将着重于 Linux 核心对中断的处理。虽然处理中断有通用的机制与接口,但某些细节是与硬件及 CPU 体系结构相关的。 Linux 的一个长处是其对现代 PC 的硬件设备强有力的支持。设备驱动程 序一章将描叙 Linux 核心是如何控制系统中的物理设备。 文件系统一章描叙了 Linux 核心是 如何维护它所支持的文件系统中的文件。同时还描叙了虚拟文件系统(VFS)及 Linux 核心的 每种文件系统是如何得到支持。 网络与 Linux 几乎是同义的。在某种意义上 Linux 是 WWW 时 代互连网的产物。

13、其开发者通过 Web 来交换信息及代码。网络一章描叙了 Linux 是如何支持 TCP/IP 这些网络协议。 核心机制一章主要讨论能使 Linux 核心其他部分有效工作而由核心 所提供的一些通用任务与机制。 动态模块一章描叙 Linux 核心是如何仅在需要时动态加载某 些模块,比如文件系统。 处理器一章给出了目前 Linux 可以在其上运行的一些处理器的简要 介绍。 资源一章则提供了有关 Linux 核心资源的有用信息。 第一章第一章 硬件基础硬件基础操作系统必须与基本硬件系统密切协作。它需要那些仅仅能够由硬件提供的服务。为了全面 理解 Linux 操作系统,你必须要懂得一些有关硬件的知识。本

14、章将对硬件:现代 PC 做一个简 要的介绍。 当 1975 年一月的“Popular Electronics“杂志以 Altair 8080 的图片作为封面时, 一场革命开始了。 家用电器爱好者能独立组装出来的 Altair 8080,当时价格仅仅为 397 美 圆。这种带有 256 字节内存的 8080 处理器还没有显示器与键盘,以今天的标准来看,它是微 不足道的。它的创造者, Ed Roberts,发明了“personal computer“来描叙他的新发明。但 现在 PC 这一术语已被用来称呼那些自己就可以携带的计算机。在这个定义上,非常强劲的计 算机如 Alpha AXP 也可称为 P

15、C。 狂热的 HACKER 们看到了 Altair 的巨大潜力,于是他们开 始为它编写软件和设计硬件。对早期的先驱来说这意味者某种自由;一种从顽固的超级批处 理主机中解放出来的自由。滚滚而来的财富让许多着迷于此(一台可以放在厨房餐桌上的计 算机)的大学生纷纷退学。许多五花八门的硬件开始出现,软件 HACKER 们忙着为这些新机 器编写软件。有意思的是 IBM 首先坚定的进行现代 PC 的设计和制造并于 1982 年推出产品。 该产品的构造是:8080 CPU、64K 字节主存、两个软盘驱动器以及 25 行 80 列的彩色 CGA 显 示器。虽然以现在观点看那些都不是多么先进的东西但当时销售情况

16、却很好。紧接着,1983 年,带有昂贵的 10MB 硬盘驱动器的 IBM PC-XT 出现了。在 IBM PC 体系结构成为事实上的标 准不久之后,大量仿制者如 COMPAQ 公司出现了。由于这种事实标准的存在,多个硬件公司在 这一快速增长的市场上进行了激烈竞争。 但用户却从低价中获益。许多早期 PC 中的结构特 征还保留在现代 PC 系统中。比如 Intel 公司最先进的 Pentium Pro 处理器还保留着 Intel 8086 的寻址模式。当 Linus Torvalds 开始写 Linux 时,他选择了当时最广泛使用同时价格 合理的 Intel 80386 PC。 图 1.1 典型的 PC 主板示意图。 从 PC 的外部来看,最引人注目的 是机箱,键盘,鼠标以及显示器。在机箱前部有一些按钮,一个微型显示器显示着一些数字, 此外还有一个软驱。今天的大多数机器还包含一个 CD ROM,另外,如果想保护你的数据,还 可以添加一个磁带机作为备份用。这些设备统称为外部设备。 尽管 CPU 是系统的总管,但是4它仅仅是一个智能设备。所有的这些外设控制器都具有某种层度的智

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号