|
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支持可能包含更复杂的事情(如查询固件)。但一般来说,这只是一层包装,使得设备驱动程序在新的驱动模型视图下能以标准的方式操作这些设备。
外部总线
虽然早先的设备标准成熟并鲜有新的特性增加,但USB是一个例外。USB的支持在最近的内核开发周期中有了许多改进,其中最为显著的是新内核将支持USB 2.0设备。USB2.0是一种新的标准,支持设备带宽高达480M bps(当前的USB只有12Mbps)。支持此标准的设备通常被称作高速USB设备,它们正逐步占领市场。另外一个新的相关标准叫做USB On-the-Go(或称作USB OTG),它是USB协议中一个点到点的变种,用以直连设备;Linux 2.6尚未支持它(2.6的补丁是可以支持的)。除了设备支持外,多数USB设备的枚举方式都作了修正,使得Linux能访问现今许多同类型设备的所有实例(instance)。这一点对于大型打印机或存储设备来说相当有益(虽然后者可能更倾向于使用专用存储总线)。很明显,这一领域的技术最近几年成长显著,Linux对相关设备的支持也是紧跟市场的步伐。
无线设备
过去的几年,无线技术在公众应用中真正起飞了。看起来,在不远的将来,线缆(非电源)将成为历史。无线设备既包括网络设备(目前最常见的无线设备),也包括更通用的设备,比如PDA。
在无线网络空间中,设备可以大致分为长距(如基于业余无线设备的AX.25)和短距(通常是802.11,但一些旧式协议也存在)。从很早的时候(v1.2)起,对这两者的支持就成为 Linux的一个特征。在 2.6 的开发中,它们又都得到了更新。这里最大的改动是,用于支持各种板卡、协议的短距子系统的主要组件合并为一个单一的"无线"子系统以及 API。通过提供一组能工作于所有支持的设备的用户空间工具来实现不同的设备统一处理。这种方式解决了原先的不同设备不同处理所带来的很多小的兼容性问题。除了这种标准化之外,Linux 2.6版内核还有很多全局性的改进,包括当状态发生改变(比如一个处于"漫游"状态的设备)时更好的通知能力,以及对旨在更好地处理无线设备中周期性的延迟波动的一个TCP相关的改动。由于人们对2.4版内核中无线支持的期望,上述的很多特性已经包含在2.4版内核中了。
在无线设备空间,有着类似的主要改进。IrDA(以 Infrared Data Associates group命名的红外线协议)部分自上一主要发布以来有一些改进,比如电源管理、集成进了新的内核驱动模型。真正的改进还在于提供了对蓝牙设备的支持。蓝牙是一种新的无线协议,它设计为短距,功耗很低,也没有 IrDA 中的"视线"的限制。作为一种协议,蓝牙被设计为"到处可用"。它已被应用于多种设备,如 PDA,移动电话,打印机,以及更为怪异(bizarre)的设备如车载设备。协议本身由两种不同的数据连接类型组成:用于有损音频应用的SCO(Synchronous Connection Oriented,面向同步连接);以及可以支持重传等更为强壮的连接L2CAP(Logical Link Control and Adaptation Protocal,逻辑连接控制和适配协议)。L2CAP 还进一步的支持各种子协议,包括用于点对点网络的 RFCOMM 以及用于类以太网的 BNEP。Linux对采用蓝牙技术的设备的支持在不断提升,我们可以相信,当足够多的采用蓝牙技术的设备被使用时,这种支持将会非常成熟。值得一提的是,对蓝牙最初的支持已经集成到了2.4系列内核后几个版本中。
块设备支持
存储总线
在2.6的开发中,IDE/ATA、SCSI等存储总线也都得到了主要的更新。最主要的改变集中于被重写(再一次被重写)的 IDE 子系统,解决了许多可扩展性问题以及其他限制。比如,现在 IDE CD/RW 设备可以直接通过IDE磁盘驱动程序进行写操作,这种实现方法比过去的方法要简洁的多。(在以前,需要再使用一个特别的SCSI模拟的驱动程序。这样显得很混乱,而且实现起来有困难。) 现在,遇到一个不能识别的控制器时,IDE 层可以查询机器的 BIOS 信息,从而获取时序操作所需数据或其他数据。SCSI部分有不少散布于系统中的小的改进,使之能支持更多的设备,同时提升了可扩展性。一个针对旧式系统的特别改进是,现在的 Linux能够支持 SCSI-2多通道设备(这种设备在单个设备上有多于2个的 LUN)。另一个重要的改进则是现在 Linux 能够默像 MS Windows那样检测介质的变动,以更好地兼容那些并不完全遵照标准规范的设备。既然这些技术历经时间的考验稳定下来,那么 Linux 也提供对它们的支持。
Linux现在也包含对新一些的机器的EDD(Enhanced Disk Device) BIOS进行直接访问的支持,这样便可以获得服务器中的磁盘设备视图。EDD BIOS包含所有连接到系统的、BIOS识别的存储总线(包括IDE以及SCSI)的信息。除了获得连接设备的配置以及其他信息之外,它还有另外几个优点。比如,这种新的接口使 Linux 能够知道系统是从哪一个磁盘设备上启动的。这在新一些的系统上非常有用,因为这样的系统中到底是从哪一个设备启动的常常不明显。智能安装程序也可以考虑使用这些信息,比如在决定把GRUB(一种Linux启动装载器)安装在哪里时。
所有这些改动之外,这里需要再次强调的是,所有的总线设备类型(硬件、无线和存储)都集成到了Linux新的设备模型子系统中。一些改动仅仅是"装饰性"的,另一些则包含了非常显著的改动(比如,甚至是如何检测设备的逻辑都需要修改)。
文件系统
Linux(或其他一些系统)下块设备的最常见用法是在块设备上面建立一个文件系统。相对Linux 2.4而言,Linux 2.6对于文件系统的支持在很多方面都有大的改进。关键的变化包括对扩展属性(extended attributes)以及POSIX标准的访问控制(access controls)的支持。
EXT2/EXT3文件系统作为多数Linux系统缺省安装的文件系统,是在2.6中改进最大的一个。最主要的变化是对扩展属性的支持,也即给指定的文件在文件系统中嵌入一些元数据(metadata)。一些扩展属性被系统使用,只能由root用户进行读写。很多其他操作系统,如Windows和MacOS系统已经大量地使用了这种扩展属性。不幸的是,UNIX系的操作系统一般都还没有很好地支持扩展属性,很多用户级的程序(比如tar)需要进行更新才能保存和转储这些扩展属性信息。这是Linux成长的又一方面;Linux对扩展属性的支持正在成熟。
新的扩展属性子系统的第一个用途就是实现POSIX访问控制链表。POSIX访问控制是标准UNIX权限控制的超集,支持更细粒度的访问控制。必要的话(比如从NFS输出文件的时候),这些访问控制可以被映射到标准的user/group权限控制上。除了以上,EXT3还有其他一些小的变化。文件系统日志提交(commit)的时间能够进行调整得更加适合于笔记本电脑(处于省电模式时,可能会加速驱动器);缺省的加载选项可以保存在文件系统自身之中(这样不用每次加载时都输入加载选项);可以标记一个目录为"indexed"以加速在这个目录中的文件查找。
Linux对文件系统层还进行了大量的改进以兼容PC机的主流操作系统。首先,Linux 2.6支持Windows的逻辑卷管理器(即动态磁盘Dynamic Disks)。这个是Windows XP及后续版本中新的分区表机制,能够很方便的支持多分区系统中的分区大小的调整以及新分区的创建。(当然,Linux系统不一定会马上使用这一机制)其次,Linux 2.6对NTFS文件系统的支持也进行了重写,现在能以读/写模式安装一个NTFS卷。写支持仍处于试验阶段,在逐步改进;最终的内核发布版中可能含有也可能不含有写支持这一部分。最后,Linux对FAT12(很老的系统或软盘上使用的DOS文件系统)的支持中消除了使用一些MP3播放器时所遇到的bug。跟踪PC领域的其他一些技术将一直是Linux核心向前发展的一个重要环节。
文件系统部分在与其他操作系统的兼容性方面也有改进。对HPFS文件系统(OS/2和其他系统中使用)的扩展属性的支持有了改进。OS/2风格的扩展属性被分离到另一个的名字空间中。XFS文件系统也得到了更新,以达到与IRIX操作系统的磁盘级(on-disk)兼容。
此外,Linux文件系统中还有很多分散的变化。配额(quota)管理进行了重写以便系统可以支持更多的用户;用户可以标记目录为同步,从而所有变化(增加文件等)都是原子的(这一点对于邮件系统和基于目录的数据库系统尤为重要,而且在磁盘故障的恢复方面也更好一些);透明压缩功能(仅Linux支持的扩展)被加到ISO9660文件系统(CD-ROM中使用)中。最后,一个新的基于内存的文件系统(hugetlbfs)被创建;创建该文件系统旨在更好地支持基于共享内存的数据库。
输入输出设备 在任何计算机系统的更"外部"的一层是输入输出设备,包括像键盘、鼠标、声卡、显卡等显而易见的东西,还包括像游戏操纵杆以及辅助设备等不那么常见的东西。在2.6的开发周期里,许多Linux的用户端子系统得到了扩展,但大部分常见设备都已经非常成熟了。Linux 2.6中对这些设备的改进多半衍生于内核对外部总线支持的改进,比如蓝牙无线键盘以及其它类似设备。尽管如此,Linux 在好几个领域都有更大的改进。
人机接口设备 Linux 2.6中一个主要的内部改动是人机接口层的大量重写。人机接口层是一个Linux系统中用户体验的中心,包括视频输出、鼠标、键盘等。内核的新版本中,这一层的重写以及模块化工作超出了以前的任何一个版本。使用新内核构建一个不包含对显示器等的支持的完全"headless"的Linux系统是可能的。嵌入式系统开发人员或许会是这一模块化工作的主要受益者,可以制造出只能通过网络或串行线管理的设备;另一方面,对普通用户也是有好处的,因为许多关于设备及体系结构的内在假设被模块化了。比方说,之前总是假定如果你拥有一台PC,那么你一定需要对标准AT(i8042)键盘控制器的支持。在 Linux 的新版本中移除了这一要求,因而可以在不那么遵照传统的系统中抛开不必要的代码。
Linux对显示器输出处理的支持也有不少改进,但大部分只在配置使用内核内部的帧缓冲控制台子系统时才有用。( 多数基于Intel体系的Linux机器并不采用这种方式配置,但其他大部分体系结构却采用。)在我看来,最大的亮点在于启动图标(如果你从来没有见过,那我告诉你那是一只可爱的企鹅)现在支持24 bpp的分辨率。这是一个方面,其它的面向控制台的新特性包括可以重设大小、旋转等(对PDA及其它类似设备),还有为更多的硬件提供了硬件加速支持。最后,Linux现在对VESA监视器的显示能力信息的查询提供了内核支持,虽然XFree86 和大部分发布版本的安装系统都在用户空间提供了这种支持。
除这些比较大的改进之外,Linux 2.6 在人机交互方面还有一系列小的改进。比方说,现在支持触摸屏了。另外,鼠标及键盘驱动程序也得到了更新和标准化,现在不管底层的硬件或协议是什么,系统都只导出一个单一的设备节点(比如 /dev/input/mouse)。一些怪异的鼠标(比如有多个滚轮的)现在也得到了支持。PC键盘的键值映射得到了更新,以遵循Windows 的"标准"来支持扩展键。对游戏控制杆的支持也得到了提升,这不仅仅得益于许多新的驱动程序(包括 X Box 游戏控制盘的驱动),还归功于引入了一些新的特性,如力量反馈(force-feedback)。最后(但绝不是最不重要的),新版本内核提供了对 Tieman Voyager 的盲人用 TTY设备的支持,以使盲人用户更好地使用Linux。(这个特性是如此的重要,以至于被向后移植到了Linux 2.4。)
顺便提一下,Linux 修改了"系统请求"接口以更好地支持那些没有本地键盘的系统。系统请求接口("sysrq")是系统管理员在本地控制台做一些高级工作的方法,比如获取调试信息、强制系统重启、重新挂载文件系统为只读等等。因为 Linux 2.6 现在支持一个完全"headless"的系统,所以现在也可以通过/proc 文件系统触发这些事件。(当然,如果你的系统已经挂起而你又要强制它做一些事情,这一特性也帮不上你什么忙。)
音频
对于桌面用户而言,Linux 2.6 中最为期望的新特性之一是以ALSA(Advanced Linux Sound Architecture)取代过时的声音系统。旧式的声音系统OSS(Open Sound System)很早的时候起便为Linux提供音频支持,但是它有许多体系结构上的缺陷。新系统首要的改进在于它从设计之初开始便是完全线程安全的,且能很好的工作于 SMP 系统。这修正了过去的许多驱动程序在"桌面即意味着单CPU"这一教条的例外情况下不能正常工作的问题。更为重要的是,此驱动程序从一开始便采用模块化设计(Linux旧版本的用户应该还记得,在Linux 2.2时代,模块被解构以适应声音系统),这使得系统能更好地支持多块声卡,包括不同类型的声卡。无论系统内部是多么完美,如果没有一些令人惊讶的新特性,系统对于用户来说仍没有任何改进。事实上,新的声音系统有许多这样的新特性。其中最为重要的是提供了对许多新硬件(包括USB音频及MIDI设备)的支持,支持全杜比录音及回放、无缝混音、支持声音合成设备等等。无论你是一个音响发烧友或只是喜欢播放 MP3 的人,Linux提升的声音支持都将是大受欢迎的一个进步。
多媒体
现今单纯的音频支持似乎远远不够,用户想要的是对真正新奇的硬件的支持,比如网络摄像机,广播及电视适配器,数字视频录制器等。Linux在2.6版本中对以上三者的支持都有所提升。
Linux对广播卡的支持(通常是通过用户空间实现历经了好几个开发周期,而对电视调谐器和视频摄像机的支持只是在最近的1、2个主要版本中才有。此系统通常称为V4L(Vedio4Linux 译者注: "4" for "for"),在新版本的内核开发中得到了重大更新,包括API的清理工作以及对设备更多功能的支持。新的API与旧版本不兼容,支持它的应用程序需要随内核的升级而升级。
作为一个全新的领域,Linux 2.6首次包含对DVB(Digital Video Broadcasting,数字视频广播)硬件的支持。这种硬件常见于机顶盒,它可以使得Linux服务器通过适当的软件变为一台tivo(类似机顶盒的设备)。
软件方面的改进 Linux的改进并不只关注于硬件及其它基础设施。没有支撑软件(如文件系统及网络协议),硬件支持将毫无意义(just so much a dead wood)。
网络
先进的网络支持一直是Linux的主要财富之一。Linux作为一种操作系统,已经可以支持世界上大多数主流网络协议,包括TCP/IP(v4和v6)、AppleTalk、IPX等。(就"等"而言,唯一较为普遍的是微软老的、复杂的NETBIOS/NetBEUI协议。)
像许多其它子系统一样,网络硬件针对Linux2.6的改变是在幕后进行的,显得并不那么直接。这包括旨在利用Linux的设备模型底层的改进和许多设备驱动程序的升级。例如,Linux 2.6提供一个独立的MII(媒体独立接口,或是IEEE 802.3u)子系统,它被许多网络设备驱动程序使用。新的子系统替换了原先系统中各自运行的多个实例,消除了原先系统中多个驱动程序使用重复代码、采用类似的方法处理设备的MII支持的情况。其他改变还包括对ISDN的改进等。
在软件方面,Linux的一个重要改进是提供了对IPsec协议的支持。IPsec,或者称之为安全IP,是在网络协议层为IPv4和IPv6提供加密支持的一组协议。由于安全是在协议层提供的,对应用层是透明的。它与SSL协议及其他tunneling/security协议很相似,但是位于一个低地多的层面。当前内核支持的加密算法包括SHA("安全散列算法")、DES("数据加密标准")等。
在协议方面,Linux还加强了对多播网络的支持。网络多播使得由一点发出的数据包可以被多台计算机接收(传统的点对点网络每次只能有两方通信)。这一功能主要被即时通讯系统(如Tibco)以及音频/视频会议软件使用。Linux 2.6现在支持若干新的SSM协议(定源多播),包括MLDv2(multicast listner discovery 多播侦听发现)协议以及IGMPv3(Internet组管理协议)协议。这些都是标准协议,被多数高端网络硬件提供商所支持,如思科。
Linux 2.6也提供了一个分离的LLC栈。LLC,即逻辑链路控制协议(IEEE 802.2),是一个底层协议,在若干个常用的高层网络协议之下使用,如Microsoft的NetBeui,IPX,以及AppleTalk。作为修改的一部分,IPX,AppleTalk,以及令牌环驱动程序都已被重写,以利用这 上一页 [1] [2] [3] 下一页 [C语言系列]C# 和 Linux 时间戳转换 [Web开发]PHP flock文件锁介绍 [Web开发]flock() Linux下的文件锁 [电脑应用]Linux下的六个免费的虚拟主机管理系统介绍 [电脑应用]Linux数据库大比拚 [操作系统]在Windows中玩转Linux操作系统 [办公软件]在RedHat Linux 9里安装gaim0.80 [办公软件]掌握 Linux 调试技术 [办公软件]理解 Linux 配置文件 [聊天工具]Real10 & Xpdf installation on Linux Box
|