📄 linux 2.6 内核的精彩世界.doc
字号:
</style>
<body bgcolor=white background="image/bg.gif" lang=ZH-CN link=blue vlink=blue
style='tab-interval:21.0pt' leftmargin=0 topmargin=0>
<div class=Section1>
<div align=center>
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
style='mso-cellspacing:0cm;background:white;mso-padding-alt:0cm 0cm 0cm 0cm'>
<tr style='mso-yfti-irow:0;mso-yfti-lastrow:yes;height:203.25pt'>
<td width=645 valign=top style='width:483.95pt;padding:0cm 0cm 0cm 0cm;
height:203.25pt'>
<p class=MsoNormal><span lang=EN-US> <o:p></o:p></span></p>
<table class=MsoNormalTable border=0 cellpadding=0 width="100%"
style='width:100.0%;mso-cellspacing:1.5pt' background="image/point.gif">
<tr style='mso-yfti-irow:0;mso-yfti-lastrow:yes;height:26.25pt'>
<td style='padding:.75pt .75pt .75pt .75pt;height:26.25pt'>
<p class=MsoNormal align=center style='text-align:center'><strong><span
lang=EN-US style='font-family:宋体;mso-bidi-font-family:宋体;color:black'>Linux
2.6 内核的精彩世界</span></strong> </p>
</td>
</tr>
</table>
<p class=MsoNormal><span lang=EN-US style='display:none;mso-hide:all'><o:p> </o:p></span></p>
<div align=center>
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width="95%"
style='width:95.0%;mso-cellspacing:0cm;mso-padding-alt:0cm 0cm 0cm 0cm'>
<tr style='mso-yfti-irow:0;mso-yfti-lastrow:yes;height:285.0pt'>
<td valign=top style='padding:0cm 0cm 0cm 0cm;height:285.0pt'>
<p class=MsoNormal style='margin-bottom:12.0pt'><span lang=EN-US
style='color:#594802'>Linux 内核 2.6 版的开发已经接近尾声,2.6 测试版发布已经二个月了,正式版预计明年年初发布。作为一个主要发布版本,2.6
相对于 2.4 有很大的改动;它引入了许多新的特性,同样也去除很多过时的特性。 <br>
<br>
它在哪些方面有大的改动?它对 Linux 的开发人员以及其他层面的 Linux 用户可能有什么样的影响?阅读本文,您将得到答案。--译者 <br>
<br>
尽管我们第一次启动 Linux 2.4 似乎只是昨天的事,时间已经流走,内核开发团队的 2.6 版内核开发工作已经接近完成了。本文将试图描述 2.6 内核中的许多新特性(侧重
i386 平台的 Linux)。和封闭源码的软件的预发布不一样的是,这里所描述的所有特性当前都是 2.5 版内核开发树中可用的(其中一些的 bug 少一些,另一些
bug 多一些)。(按照 Linux 的传统,偶数版本的内核是稳定的,奇数版本的只是开发用的)。也就是说,这里所描述的一些特性在实际的 2.6 版本中仍可能被去除或标志为
"experimental" (试验性)。然而内核当前处于特性冻结(feature-freeze)时期,最终的发行版本应该不大可能过于偏离这里的描述。同时也应该清楚这里描述的一些
"新" 特性在第一次出现在 2.6 系列内核后,可能被向后移植到了官方的或者发行版供应商的 2.4 版内核之中。 <br>
<br>
或许使得这篇文章更为晦涩的是,即将到来的内核的版本号至今仍未确定。最可能使用的版本号是 2.6,但是一些人提议版本号可以使用 3.0,因为这个版本中包含了
NUMA 以及无 MMU 系统的支持。为论述方便,本文将一直使用 2.6 作为即将到来的内核的版本号。 <br>
<br>
您正在阅读的是本文档(《Linux 2.6 内核的精彩世界》)非正式版的第一版,完稿于 2003 年 7 月 13 日,基于 2.5.75 开发版内核。随着
Linux 内核最后工作的完成,这份文档将发布其他非正式版,但是这份文档的正式版直到 2.6 的最后发布才宣告完成。由于本文是非正式版的第一版,其中可能有错误或者疏漏;如果您发现了它们,请告诉我,我将很高兴地去修正它们。
<br>
<br>
到目前为止的故事... <br>
Linux 内核始于 1991 年由 Linus Torvalds 为他的 386 开发的一个类 Minix 的操作系统。Linus 初始曾想命名为这个系统为
Freax,但很幸运的是最后他最后没有那样做。Linux 1.0 的官方版发行于 1994 年 3 月,包含了 386 的官方支持,仅支持单cpu系统。Linux
1.2 发行于 1995 年 3 月,它是第一个包含多平台(Alpha,Sparc,Mips等)支持的官方版本。Linux 2.0 发行于 1996 年
6 月,包含很多新的平台支持,但是最重要的是,它是第一个支持 SMP(对称多处理器)体系的内核版本。Linux 2.2 在 1999 年 1 月到来,它带来了
SMP 系统上性能的极大提升,同时支持更多的硬件。最后,Linux 2.4 于 2001 年 1 月发布,它进一步地提升了 SMP 系统的扩展性,同时它也集成了很多用于支持桌面系统的特性:USB,PC卡(PCMCIA)的支持,内置的即插即用,等等。Linux
2.6 不仅包含了这些特性,同时也是一个无论对相当大的系统还是相当小的系统(PDA 等)的支持都有很大提升的"大跨越"。 <br>
<br>
多种平台支持 <br>
能够支持相当广泛的硬件和平台,是采用 Linux 作为内核的操作系统(比如 GNU 操作系统, 系统和环境常常是和 Linux 一块分发。Linux 一般不被认为是独立的操作系统,只是操作系统的内核。)的优势之一。Linux
自 1.2 版就开始包含对新的处理器类型和特性的支持,最新的 Linux 2.6 内核发布版本也不例外。这种趋势不会直接影响到 Linux 在
Intel 平台下的使用,同时使得 Linux 能在尽可能大的范围内被使用,这一点非常重要。 <br>
<br>
小规模- 嵌入式系统中的 Linux <br>
<br>
Linux 2.6 扩展多平台支持的一个主要途径就是把 uCLinux 的大部并入了主流内核(mainstream kernel)。uCLinux (可以发音为
"you-see- Linux ",但更正确的拼写,首字母应该式希腊字母"mu")是将 Linux 应用在微控制器平台的项目。很多年来,这个
Linux 分支为许多嵌入式芯片提供了支持,把它更多的集成到主流内核中是一件非常有意义的事。 <br>
<br>
不像通常的 Linux 移植版本,这里描述的嵌入式移植版由于硬件限制和通常的 Linux 相比,不具有所有类似的特性。主要的区别在于:这些移植版是针对于没有内存管理单元(MMU)的处理器的(Intel
的 CPU 从 386 开始就有 MMU 了)。缺少 MMU 的支持,运行真正的多任务系统时,任务之间没有内存保护机制(因此任何程序都可以使得其他程序崩溃),一些有关进程派生的系统调用也无法实现。正是因为没有内存保护机制(或者说,没有任何安全性可言),它们不适用于多用户系统。
<br>
<br>
在对嵌入式处理器支持上,Linux 2.6有四个主要的新进步。首先是对 Motorola 的新型嵌入式 m68k 系列处理器移植。这些被命名为
Dragonball 或是 ColdFire 的处理器可以在 Motorola,Lineo,Arcturus 或是其他厂商生产的系统或是评估板上找到。大多数
Linux 用户应该对这些处理器相当熟悉,因为从 Palm 1000 到最新的 Palm III,他们一直是 Palm Pilots 的心脏。不幸的是,对早期没有
MMU 的 m68k 处理器(比如早期苹果机上使用的 68000 系列)还没有支持。最新支持的嵌入式平台还包括日立(Hitachi)的 H8/300 系列(不包含
H8S,但可能会尽快地集成进来)以及 NEC v850 处理器。 <br>
<br>
无论怎么强调 Linux 2.6 旨在支持无 MMU 系统的主要体系结构变化,都不为过分。所有 Linux 的前期版本,不论直接或是间接,都起源于
Linus 最初在 Intel 80386 上的工作,局限性是固有的。沿着这个方向(对无 MMU 系统的支持),将来也许会有更多的其他早期的硬件被支持(事实上,已经有关于此目的的项目启动)。
<br>
<br>
最新的 Linux 版本包含了对 Axis 通信公司的 ETAX CRIS("Code Reduced Instruction
Set")处理器的支持(更确切地说,支持 ETRAX 100LX 及更新的产品),它从技术的角度而言不是 uCLinux 合并的一部分(因为它包含
MMU 单元)。实际上对这款处理器的支持在 2.4 开发周期就已经有了,但它在 2.4.0 以后才被引入,所以现在应该提到它。它是主要用于网络设备的嵌入式处理器。与此相关的
ETRAX 100,是得到 uCLinux 支持的无 MMU 处理器,但是在主流的 Linux 内核中相关支持却没有集成进来。 <br>
<br>
Opteron 支持-消费级的 64 位 Linux <br>
<br>
另一个在 2.4.x 开发环节就已经并入但这里仍然值得提及的是对 AMD Opteron 芯片(基于 AMD 64 体系结构)的支持。Opteron 向后与
Intel-clone 的处理器兼容,并且,甚至可能得到微软的支持。是它还是 Intel 的 Itanium 家族的某一成员成为 64 位消费级产品的事实标准现在还很难下定论。
<br>
<br>
尽管 2.4 系列内核的后期版本已经可以在该芯片上运行,但作为产品应用仍受到了很大限制。对高端用户来说,最严重的问题是,每个应用程序的 RAM 的使用都被限制在
512MB 以内。另一方面,新内核对在该平台上运行 x86(32位)的程序的支持得到了改进。 <br>
<br>
子体系结构(Subarchitecture)支持 <br>
<br>
Linux 2.6 除了对许多新的处理器体系结构外,还包含了一个称为子体系结构(Subarchitecture)的新概念。以前,Linux 通常假设处理器和其他硬件是配套的。也就是说,i386
系列处理器只会在 PC/AT 服务器上使用。这条针对 i386 的假设在 Linux 2.4 中就被打破,因为 i386 的额外支持使其可以在 SGI
的视频工作站(Visual Workstation)中使用。(事实上,在其他非 i386 体系结构上,这个假设早被打破了。比如,m68k 很早就支持
Amiga,Michintosh 等平台。) Linux 2.6 对于此最大的变化就是,让这个特性以及概念成为标准,以便所有的体系结构都可以用相似而健全的方法来处理,以便更清晰地划分模块。
<br>
<br>
标准的确立使得 i386 可以运用于两个新的平台。第一个是 NCR 的 Voyager 体系。这是一个对称多处理器(SMP)系统(在 Intel 的
MP 规范标准确定之前就已经开发出来了),它支持多达 32 个 486-686 的处理器配置。实际采取这种体系结构的产品处理器的配置数目要相对少一些,而且目前并不是所有的型号都得到了
Linux 的支持(最早的就不支持)。第二种得到最新支持的体系结构是更为广泛使用的由 NEC 开发的 PC-9800 平台,它曾是日本市场占统治地位的PC平台,一直到最近几年。最初的
PC-9800 装载的是 8086 处理器,最终发展到奔腾级处理器和 SMP 支持。(当然,Linux 对它的支持局限在 386 以上。)尽管在美国它完全不为人所知,微软的
Windows 95 之前的版本曾移植到这个平台上。该平台由于生产商对标准 PC 的偏爱,生产已经中止。 <br>
<br>
Linux 对差异细微的硬件类型支持的形式化,使得操作系统能更容易的移植到其他平台上,比如移植到专为存储设计的硬件或者是使用在工业领域的主流处理器。需要澄清的是,子体系结构也不是任何时候都管用的,它能够发挥作用是因为这些可移植的系统非常底层构件(比如
IRQ 路由)有或多或少的不同。比起在 X-box 上运行 Linux 的差别来说,驱动程序等相对小的差别还不足以把它们从传统的 i386 系统中分开。Linux
对 X-box 的支持,就不是子体系结构的问题。 <br>
<br>
大规模 - 非一致存储访问体系结构(NUMA)和大型机 <br>
<br>
除了以上所提及的新硬件类型的支持之外,新的 Linux 内核发行版也包含了对大型服务器(一些运行 i386 处理器,也有些运行其他处理器)更多的支持。对
Linux 来说,这样的特性是新近加入的,还有许多优化工作需要完成。这是一个 Linux 发展相当迅速的领域,我们能够预计在不久的将来,Linux 将成为此领域的有力竞争者。
<br>
<br>
在此方面最大的改变就是 Linux 对 NUMA 服务器的最新支持。NUMA(非一致存储访问)在多进程世界里是超越 SMP 以及提升多处理器系统效率的一个进步。SMP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -