您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

Linux 2.6内核的大方天下(一)

发布日期:2011-05-17

    Linux内核2.6版的开辟已经靠近尾声,2.6测试版颁发已经二个月了,正式版预计来岁年初颁发。作为一个紧张颁发版本,2.6相敷衍2.4有很大的窜改;它引入了很多新的特性,同样也去除很多逾期的特性。它在哪些方面有大的窜改?它对Linux的开辟职员以及其他层面的Linux用户大概有什么样的影响?阅读本文,您将得到答案。--译者 

    只管我们第一次启动Linux 2.4宛如只是昨天的事,时间已经流走,内核开辟团队的2.6版内核开辟变乱已经靠近完成了。本文将试图形貌2.6内核中的很多新特性(侧重i386平台的Linux)。和封闭源码的软件的预颁发不一样的是,这里所形貌的全部特性当前都是2.5版内核开辟树中可用的(此中一些的bug少一些,另一些bug多一些)。(根据Linux的传统,偶数版本的内核是稳固的,奇数版本的只是开辟用的)。也便是说,这里所形貌的一些特性在实际的2.6版本中仍大概被去除或标记为"experimental"(试验性)。然而内核当前处于特性冻结(feature-freeze)时期,终极的发行版本应该不大大概过于偏离这里的形貌。同时也应该明白这里形貌的一些"新"特性在第一次出如今2.6系列内核后,大概被向后移植到了官方的大概发行版提供商的2.4版内核之中。
大概使得这篇文章更为晦涩的是,即将到来的内核的版本号至今仍未确定。最大概利用的版本号是2.6,但是一些人提倡版本号可以利用3.0,由于这个版本中包括了NUMA以及无MMU体系的支持。为叙述方便,本文将不绝利用2.6作为即将到来的内核的版本号。 

    您正在阅读的是本文档(《Linux 2.6内核的大方天下》)非正式版的初版,脱稿于2003年7月13日,基于2.5.75开辟版内核。随着Linux内核着末变乱的完成,这份文档将颁发其他非正式版,但是这份文档的正式版直到2.6的着末颁发才宣告完成。由于本文好坏正式版的初版,此中大概有错误大概疏漏;要是您发明白它们,请报告我,我将很开心地去修正它们。 


    到如今为止的故事... 

    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等)的支持都有很大提拔的"大高出"。 


   
多种平台支持 

    可以大概支持相称广泛的硬件沉寂台,是采取Linux作为内核的利用体系(比如 GNU利用体系, 体系和环境通常是和Linux一块分发。Linux一样通常不被以为是独立的利用体系,只是利用体系的内核。)的上风之一。Linux自1.2版就开始包括对新的处理惩罚处罚器典范和特性的支持,最新的Linux 2.6内核颁发版本也不例外。这种趋势不会直接影响到Linux在Intel平台下的利用,同时使得Linux能在尽大概大的范畴内被利用,这一点非常告急。 


    小范畴 - 嵌入式体系中的Linux 

    Linux 2.6 扩展多平台支持的一个紧张途径便是把uClinux的大部并入了主流内核(mainstream kernel)。uCLinux(可以发音为"you-see-Linux",但改正确的拼写,首字母应该式希腊字母"mu")是将Linux应用在微控制器平台的项目。很多年来,这个Linux分支为很多嵌入式芯片提供了支持,把它更多的集成到主流内核中是一件非常存心义的事。 

    不像通常的Linux移植版本,这里形貌的嵌入式移植版由于硬件限定和通常的Linux相比,不具有全部雷同的特性。紧张的区别在于:这些移植版是针敷衍没有内存办理单位(MMU)的处理惩罚处罚器的(Intel的CPU从386开始就有MMU了)。缺少MMU的支持,运行真正的多任务体系时,任务之间没有内存掩护机制(因此恣意步调都可以使得其他步调瓦解),一些有关进程派生的体系调用也无法实现。正是由于没有内存掩护机制(大概说,没有恣意沉寂性可言),它们不实用于多用户体系。 

    在对嵌入式处理惩罚处罚器支持上,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处理惩罚处罚器。 

    无论怎么夸大Linux 2.6旨在支持无MMU体系的紧张体系布局变革,都不为太过。全部Linux的前期版本,不论直接或是间接,都开端于Linus最初在Intel 80386上的变乱,范畴性是固有的。沿着这个方向(对无MMU体系的支持),将来大概会有更多的其他早期的硬件被支持(原形上,已经有关于此目标的项目启动)。但是,不像为当代的以及仍在生产中的嵌入式处理惩罚处罚器的提供支持,对早期的硬件的支持被更多地以为是基于某种喜好,并且敷衍终极用户而言很大概是无用的(因此在以后的Linux的官方颁发版本大概不会将其包括在内)。 

    最新的Linux版本包括了对Axis通讯公司的ETAX CRIS("Code Reduced Instruction Set")处理惩罚处罚器的支持(更确切地说,支持ETRAX 100LX及更新的产品),它从技能的角度而言不是uCLinux归并的一部分(由于它包括MMU单位)。实际上对这款处理惩罚处罚器的支持在2.4开辟周期就已经有了,但它在2.4.0以后才被引入,以是如今应该提到它。它是紧张用于网络配置的嵌入式处理惩罚处罚器。与此干系的ETRAX 100,是得到uClinux支持的无MMU处理惩罚处罚器,但是在主流的Linux内核中干系支持却没有集成进来。 


   
Opteron支持 - 斲丧级的64位Linux 

    另一个在2.4.x开辟关键就已经并入但这里仍旧值得提及的是对AMD Opteron芯片(基于AMD64体系布局)的支持。Opteron向后与Intel-clone的处理惩罚处罚器兼容,并且,以致大概得到微软的支持。是它还是Intel的Itanium家属的某一成员成为64位斲丧级产品的原形标准如今还很难下定论。 

    只管2.4系列内核的后期版本已经可以在该芯片上运行,但作为产品应用仍受到了很大限定。对高端用户来说,最告急的标题是,每个应用步调的RAM的利用都被限定在512MB以内。另一方面,新内查对在该平台上运行x86(32位)的步调的支持得到了改革。 


    子体系布局(Subarchitecture)支持 

    Linux 2.6除了对很多新的处理惩罚处罚器体系布局外,还包括了一个称为子体系布局(Subarchitecture)的新见解。已往,Linux通常假设处理惩罚处罚器和其他硬件是配套的。也便是说,i386系列处理惩罚处罚器只会在PC/AT办事器上利用。这条针对i386的假设在Linux 2.4中就被突破,由于i386的分外支持使其可以在SGI的视频变乱站(Visual Workstation)中利用。(原形上,在其他非i386体系布局上,这个假设早被突破了。比如,m68k很早就支持Amiga,Michintosh等平台。)Linux 2.6敷衍此最大的变革便是,让这个特性以及见解成为标准,以便全部的体系布局都可以用相似而健全的要领来处理惩罚处罚,以便更明白地分别模块。 

    标准的创建使得i386可以运用于两个新的平台。第一个是NCR的Voyager体系。这是一个对称多处理惩罚处罚器(SMP)体系(在Intel的MP典范标精确定之前就已经开辟出来了),它支持多达32个486-686的处理惩罚处罚器配置。实际采取这种体系布局的产品处理惩罚处罚器的配置数量要相对少一些,并且如今并不是全部的型号都得到了Linux的支持(最早的就不支持)。第二种得到最新支持的体系布局是更为广泛利用的由NEC开辟的PC-9800平台,它曾这天本市场占统治职位地方的PC平台,不绝到近来几年。最初的PC-9800装载的是8086处理惩罚处罚器,终极生长到奔驰级处理惩罚处罚器和SMP支持。(固然,Linux对它的支持范畴在386以上。)只管在美国它完全不为人所知,微软的Windows 95之前的版本曾移植到这个平台上。该平台由于生产商对标准PC的偏爱,生产已经停止。 

    Linux对差别渺小的硬件典范支持的情势化,使得利用体系能更容易的移植到其他平台上,比如移植到专为存储筹划的硬件大概是利用在财产范畴的主流处理惩罚处罚器。须要澄清的是,子体系布局也不是恣意时间都管用的,它可以大概发挥作用是由于这些可移植的体系非常底层构件(比如IRQ路由)有或多或少的差别。比起在X-box上运行Linux的差别来说,驱动步调等相对小的差别还不敷以把它们从传统的i386体系中退出。Linux对X-box的支持,就不是子体系布局的标题。 


    大范畴 - 非划一存储访问体系布局(NUMA)和大型机 

    除了以上所提及的新硬件典范的支持之外,新的Linux内核发行版也包括了对大型办事器(一些运行i386处理惩罚处罚器,也有些运行其他处理惩罚处罚器)更多的支持。对Linux来说,如许的特性是新近参加的,另有很多优化变乱须要完成。这是一个Linux生长相称敏捷的范畴,我们可以大概预计在不久的将来,Linux将成为此范畴的有力竞争者。
在此方面最大的变革便是Linux对NUMA办事器的最新支持。NUMA(非划一存储访问)在多进程天下里是逾越SMP以及提拔多处理惩罚处罚器体系屈从的一个进步。SMP体系的筹划上有着很多和映射单处理惩罚处罚器体系雷同的范畴性。此中最大的筹划范畴之一便是体系中只有唯一的一块内存区,全部的处理惩罚处罚器对它都划一地对它举行访问。在多处理惩罚处罚器体系里,如许会在同一条内存总线上的多处理惩罚处罚器之间引起相称高的竞争,导致性能瓶颈。NUMA办事器,通过引入了以下的理念办理了这个标题:敷衍某个特定的处理惩罚处罚器,一些内存比其他一些的更为靠近(close)。可以如许大抵地假想(同时技能上也不会有告急错误),你的体系有很多包括了处理惩罚处罚器、内存以及其他元件(比如I/O扩展卡)。体系中有很多如许的卡,它们可以相互通讯;显而易见,相对其他卡上的内存,每块卡上的处理惩罚处罚器能更快的访问本地内存(本身的卡上内存)。从很多角度上看,NUMA体系布局便是一个精密耦合的集群特例。 

    为了给NUMA主机提供精良的支持,Linux非常须要在很多方面举行调解,以使新模型更具屈从。起首,创建了一个内部拓扑API,以使内核知道处理惩罚处罚器和内存以及其他IO配置间的相互干系。有了内部拓扑API的支持,Linux的进程调理器可以明白这些干系,并且会实行优化任务以到达最佳的本地资源利用。别的,很多NUMA主机在各个节点(nodes)的线性内存地区之间存在空洞(holes)。新内核已经可以大概公平的处理惩罚处罚这种不连续环境。内核另有很多其他使得Linux可以支持高端(high-end)主机的变革,这也是内核生长的一个明白方向。再过一年,我们可以等待Linux在高端机型上屈从以及其他方面的进步。 


    深入Linux 

    除了横向支持越来越多的硬件,Linux 2.6还在已支持的平台上根据硬件的性能提拔举行了改革。这些针对特定CPU的优化包括:Transmeta的Crusoe系列,Intel’s Pentium 4 Xeon、Pentium 3-M、Pentium 4-M 和AMD移动处理惩罚处罚器。新版本Linux还办理了某些Athlon处理惩罚处罚器自身的bug导致的标题。Linux 2.6还办理了在某些多于16个处理惩罚处罚器的体系启动时偶然偶尔偶然偶尔会挂起的标题,只管这个bug不会影响大多数用户的正常利用。 

    超线程 

    在Linux 2.6中不算稀罕,内核在2.4.17颁发中就已经开始包括对Intel P4处理惩罚处罚器的超线程(Hyperthreading)的支持(在这里提及它,一是由于它并没有包括在2.4最初的颁发中,二是自那以后内核又有了很大的变革)。超线程使得单个的处理惩罚处罚器可以伪装成利用体系看来二个或更多的多个处理惩罚处罚器。最令人冲动的是,Linux是第一个把超线程特性引入市场的利用体系,只管早在一年前Intel就颁发了兼容的处理惩罚处罚器。有听说说,微软在对支持超线程的CPU按一个CPU还是按两个CPU收取授权费(license)的标题上拿不定主意。Linux的开放模型(以及没有基于cpu的授权)使得Linux利用体系第一个支持这个新特性。显然,一个处理惩罚处罚器就算扮作两个处理惩罚处罚器变乱,它还是一个处理惩罚处罚器,性能并不克不及因此增长很多。2.5中调理器和其他一些部分在有了新的优化,使得处理惩罚处罚器的超线程可以真正的发挥作用。要是是在2.4下参加超线程支持,结果就不肯定了,偶然偶尔性能还会降落。 

    容量 -- 可扩展性的渴望 

    除了对NUMA的支持,Linux 2.6在处于食品链顶真个Intel办事器方面,也有一些变动。最告急的便是对Intel的物理地点扩展(PAE)的完全支持,使得较新的32位的x86体系可以访问高达64GB的内存,但仅仅限于页面映射模式。别的,通过加强对高级可编程克制控制器(APIC)的支持,多处理惩罚处罚器体系之上的IRQ均衡(balancing)大大提拔。 

    在很多其他方面,内部限定在大概的地方都有所放松。Linux体系上用户和用户组的数量从65000越升到了超过跨过40亿(实际便是16位到32位的变革)。这使得Linux在之前大概逾越限定的大型文件和认证办事器上越发实用。雷同的,进程标识号(PID)的数量也从32000升到10亿。这个变革,与其他PID子体系优化一起,将进步在非常繁忙或是长期变乱的体系上的应用步调的启动性能。只管同时打开的文件最大数量并没有增长,但是Linux 2.6不会再恳求你预先设置限定值;限定值会随着体系的运行主动调解。着末,Linux 2.6包括了改革的64位的块配置支持(固然块配置本身应当支持64位模式),纵然是在i386如许的32位平台。如许一来,文件体系的存储上限可达 2TB。 

    内核交互性以及相应性 

    Linux 2.6中一个受存眷的内核便是使得体系敷衍桌面用户以及其他一些须要对变乱举行高度人为控制的应用具有更具相应性(responsitive)。这此中各个差别的目标体系具有很差别的寻衅,但内核中包括了很多变革,使得它们同时受益。 

    2.6中一个必须明白的紧张内部变革是如今内核自身是可抢占的。在全部之前的Linux版本中,当体系运行内核的相做变乱时,它不克不及被打断(在多处理惩罚处罚器体系中,基于各cpu的角度这也是创建的)。Linux 2.6中,内核如今容许自身在实行任务时被打断,如许用户任务可以连续运行纵然内核正在做一些巨大的变乱。(为了克制明显这大概带来的竞争环境,内核中含有一些具有锁的代码段,运行于如许的代码段的时间,内核不克不及被打断。)这个变革的紧张好处是体系的可交互性(比如,敷衍桌面用户)大大提拔,体系敷衍用户输入如许的变乱以为起来快多了。 

    其他使得Linux成为一个越发具有相应性体系的变革是并入对新的"futexes"("Fast User-Space Mutexes")的支持,这项支持发挥作用须要用户步调的支持(利用futex实现互斥)。Futexes是一种序列化(serialize)变乱使得它们不会相互辩论的机制。与传统的多数的线程库锁支持的mutex利用差别,这是部分基于内核的(partially kernel based),同时它也支持设置优先级使得高优先级的应用或线程优先得到竞争的资源。通过利用一个步调去指定一个等待的任务比其他的更告急,它带来了大概是一个应用的时序--关键地区更佳的相应性。 

    Linux的I/O子体系也经历的很大的修改,使得它在种种变乱负荷下都更具相应性。这个变革包括I/O 调理子体系--决定何时、哪一进程去读一个配置的内核代码的完全重写。重写的I/O层如今可以更好地包管没有进程过永劫间地停顿在I/O等待上,同时不排挤已往的优化变乱使得读等恳求以最有效的序次利用硬件的优化变乱。
只管及时利用体系(RTOS)的开辟者可以从这些变革中受益,Linux 2.6将不会成为一个及时内核。然而,这些以及其他干系的背景变乱使得将Linux变革为RTOS成为大概。为用户或开辟者提供如许的支持的外部patch(尚未归并到官方的内核版本)已经出现了。 


   
模块子体系 - 配置驱动步调 

    在 Linux 2.6的开辟进程中,模块子体系是另一有巨大改革的部分。很多代码被重写,以进步稳固性,并使体系越发透明。除了这些明显的表层的变革之外,另有更多背后的内核怎样对待以及利用模块的变革。
起首,Linux 2.6中内核驱动步调最显而易见的(固然并没有太大作用)的变革是文件扩展名变革了。".ko"(kernel object,内核目标文件)代替了".o"(这是一目标文件的常见扩展名,通常在步调编译时期,链接天生可实行应用步调之前创建)。与其说这使得模块并不是真正的中间文件这一点更为明白,还不如说这仅仅是一个装饰性(cosmetic)的窜改。 

    完完全全实质性的改革在于消除存在于很多内核版本中的竞态的多方面变乱。标题标关键在于,要是卸载孕育产生在模块查抄并确认没有别的的配置正在利用它之后,利用一个正在被卸载的模块来启动配置是有大概的。新的内核模块代码应使得这一条件更难被触发。更进一步,如今大抵地完全克制模块卸载也是有大概的。
越发透明是新的模块子体系另一特性。在此之前,险些全部的 Linux版本中,模块是富裕智能的,它们可以通过扫描总线探求它辨认(recognized)的配置ID号,检测到它所可以大概支持的配置(比如PCI,ISA PnP以及PC卡)。Linux 2.6标准化了这种支持,使之对内核来说外部化,外部步调以及模块加载器刚强一个特定的模块可以支持哪些配置将更为容易。这将容许种种硬件办理步调(比如 Redhat的kudzu)对硬件作出智能化的刚强,纵然他们本身对本身所处理惩罚处罚的硬件配置并不熟习。要是你的知识逾越了当前版本的驱动步调,你可以(通过新的 sys文件体系中的一个接口)欺凌一个驱动步调变乱于某一特定的配置,纵然驱动步调并不知道本身可以支持该配置。 


    其他改革 

    除了上述的很多变革之外,另有很多其他可以提拔体系性能的遍及性的变革。这此中包括更多的去除了"Big kernel Lock"(早期Linux用于支持SMP体系时所采取的非细粒度锁),以及针对文件体系预读、回写和小文件利用的优化等。 

    Linux 2.6还办理了一个更为深刻的稳固性标题:内核将不会分派多于体系中RAM(加swap)数量的内存。此前,Linux在一些纵然体系内存耗尽的环境下,仍旧容许malloc利用分派内存告成。过量分派(overcommitment)逻辑得到修改,使得这种环境如今不再大概出现。(固然,要是你耗尽了体系的RAM,纵然没有逾越最大可用数量--你须要担心更更告急的标题。) 

    Linux总是一个开放标准的支持者。内核内部的大变革之一便是Linux的线程框架被重写,以使NPTL(Native POSIX Thread Library)可以运行于其上。敷衍运行负荷綦重沉重的线程应用的Pentium Pro以及更先辈的处理惩罚处罚器而言,这是一个紧张的性能提拔;它也是企业级应用中的很多高端系同不绝以来所等待的。(实际上,RedHat已经将它向后移植到了Linux 2.4,从RedHat 9.0中开始包括)线程框架的变革包括LInux线程空间中的很多新的见解,包括线程组、线程各自的本地存储区、POSIX风格派头风格派头信号以及其他变革。紧张的缺点之一是依赖于老式的Linux-isms而没有依照POSIX标准的应用步调(比如Sun Java)将不克不及运行在支持新式线程的体系之上。鉴于利用新的线程模型利弘大于弊,很明显,新的内核颁发不久,最为告急的那些应用都将会支持这个变革。 

    着末,2.6可以支持编译时封闭内查对存储互换(swap)的支持,只管敷衍绝大多数Linux之上的应用而言,没有直接的长处。这使得Linux可以在相对小的内存足迹(footprint)内运行,敷衍不大大概利用互换配置的嵌入式体系大概也是有益的。 


    同一配置模型 

    作为利用体系中的一个相对独立的组件,配置模型敷衍那些被筹划运行于用于多种硬件之上的利用体系而言是至关告急的。大抵地说,配置模型是内核中的底子步伐,用于检测和决定体系中全部可选模块的资源利用。全部的利用体系(包括各版本的Linux)都固有一些配置的见解。老版本的Linux(2.2或更早)仅利用一种直接的要领利用配置。体系为差别种类的硬件总线提供驱动步调,百般百般的配置驱动步调知道怎样探测它们所支持的配置总线以探求映射的硬件配置。这种体系非常疏散,种种百般的总线提供很多互不兼容的API,用于处理惩罚处罚种种差别的利用。Linux 2.4通过利用一组通用接口将PCI,PC卡以及ISA PnP 整合到一个单一的配置布局中,完成了构建同一配置模型的第一步。Linux 2.6更进一阵势推进了这方面的开心,力求在整个别系的范畴内,内核以一种新的同一的视角对待它所依赖的硬件。 


    内核东西抽象 

    新配置模型底子的内核是一个全部底层配置典范都需利用的新的面向东西的接口。这个内核配置东西布局(称为"kobject")包括用于引用计数和利用子配置的全部接口。底层配置(比喻体系总线)利用这一大众接口层,向内核以及用户空间提供同一的体系视图。如今,全部这些都被放在了中间位置,这使得Linux可以利用这些信息作很多有效的事。 

    在内核中完备地生存这些新的信息,使得Linux可以更好的支持那些须要有深入的硬件知识的体系。一个明显的例子便是电源办理。近几年新出现的电源办理标准是ACPI。ACPI,即高级电源配置办理界面,最早是在Linux 2.4中有支持。差别于APM(高级电源办理),拥有这种接口的体系在变革电源状态时须要分别关照每一个兼容的配置。新的内核体系容许子体系跟踪须要举行电源状态转换的配置。另一个例子是支持热插拔的总线。呆板启动后依然可以添加配置的本领在如今看来显得很平常,但Linux直到2.2版本才提供干系支持。到了Linux 2.4,这种支持得到进一步的加强,范畴也扩大到可热插拔的PCI、PC卡、USB以及Firewire配置。通过从底子上消除热插拔配置和传统配置的差别,新内核的会合化配置体系扩展了这一支持。当你启动谋略机的时间,配置检测例程将"插入"体系中的配置。无论在体系启动时,或是启动以后,体系发明体系中的某个配置时,都市相应创建一个雷同的内核东西,这就使得处理惩罚处罚可插拔配置的底层布局大抵化了。 


    sys文件体系 

    最明显的用户可见的变革大概是新的sysfs文件体系的出现,它集成了下面3种文件体系的信息:针对进程信息的proc文件体系、针对配置的devfs文件体系以及针对伪终真个devpts文件体系。该文件体系(摆设在/sys目次)是内核看到的配置树的一个直观反响。内核通过精密相助的内核东西(kernel object)子体系来创建这个信息:当一个内核东西被创建的时间,映射的文件和目次也被创建。(须要的话,也有大概一个内核东西被创建的时间并不在sysfs文件体系中有记录。) 

    既然每个配置(大概说内核东西)在sysfs中都有唯一映射的目次布局,那么下一步可以把配置的属性(配置名,电源模式,克制处理惩罚处罚等)信息输出到这个目次树中以供体系办理员读写。相应的,很多跟配置干系的/proc/sys的用法已经大概将要移到/sys目次下。 


    内核硬件支持 

    随着Linux的这些年的生长并垂垂进入主盛行列,从内核所支持的配置典范来看,每一次的内核颁发,都像是一次跳跃:支持新兴的技能(2.4的USB),支持陈腐一些的传统技能(2.2的MCA)。生长到Linux2.6,不被Linux支持的配置已经相称少了。PC机上的主流硬件没被支持的很少。正是由于这个缘故因由,多数(显然不是全部)关于硬件支持方面的改革(包括上面所说的配置模型)围绕对已有支持的加强。 


   
内部配置总线 

    位于体系底层的总线险些与处理惩罚处罚器同样告急;这些总线就像胶合剂,将体系的各个部件连到一起。在PC天下中,这些总线不绝是不可或缺的,无论是老的ISA(在最初的IBM PC机中可以找到)总线,还是如今的外部串口以及无线(wireless)总线。一旦新的总线及配置变成盛行的斲丧产品,Linux总是能以很快的速率去适应它;而敷衍不很盛行的配置,环境则差很多。 

    一个能阐发这一环境的例子便是ISA总线的PnP(即插即用)特性,Linux直到2.4版本才支持ISA总线的即插即用扩展,比其他盛行的贸易利用体系要晚很多(在内核支持ISA PnP之前,你大概可以委曲利用一些用户态的实用步调使它变乱)。Linux 2.6对这个子体系做了一个告急的改革,使它更美满、更好地集成于新的配置模型之中。新特性包括完备的PnP BIOS支持、配置名称数据库以及一些其他的使体系越发壮实的特性。这些改革的结果,是使得Linux成为一个真正意义上的即插即用利用体系,并且可以被设置结果像那些兼容机的BIOS到达的那样。 

    ISA时期ISA-PnP的两个可选的调换方案是MCA(微通道体系)和EISA(扩展ISA),只管它们不那么盛行。在Linux2.6的开辟周期中,这两个子体系都做了一些改革以支持新的配置模型。别的,通过引入配置名称数据库,EISA与其他子系同一起得到了更进一步的标准化。 

    除了刚才提到的几个告急特性,Linux对硬件总线的支持也做了很多别的值得存眷的变革。PCI总线是全部总线中最盛行也是最告急的总线,Linux 2.6极大地提拔了对它的支持,包括改革的热插拔和电源办理支持。新版本同样也支持包括多个AGP总线(即加快图形端口――基于PCI协议的一种独立高速总线)的体系,如高端图形变乱站。就对PC硬件的支持而言,Linux牢牢跟随着硬件市场的潮流。 

    除了这些实际的配置总线,Linux2.6也增长了一个见解上的Legacy总线。这种总线对每种体系布局都是专有的,这些体系布局包括全部你大概想到的配置。比喻,在一台PC机上,大概会有板上(on-board)的串口、并口、以及PS/2端口,这些配置实际存在着,但不被体系中的恣意一个实际总线所摆列(enumerated)。在其他的一些平台上,这种Legacy支持大概包括更巨大的变乱(如查问固件)。但一样通常来说,这只是一层包装,使得配置驱动步调在新的驱动模型视图下能以标准的要领利用这些配置。