免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1092 | 回复: 0
打印 上一主题 下一主题

Linux 内核的发展 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-17 13:17 |只看该作者 |倒序浏览
要像跟踪dota版本那样跟踪linux内核,^_^
[color="#000102"]Linux 内核的发展
[color="#000102"]介绍 2.6.28 和 2.6.29 版本中的新特性

[color="#000102"]



[color="#000102"]

[color="#000102"]级别: 中级
[color="#000102"]M. Tim Jones
, 顾问工程师, Emulex
Corp.
生命的必然不仅包括死亡和纳税,还包括 GNU/Linux® 操作系统的发展,最新的两个内核发布的确没有让人失望。2.6.28 和
2.6.29 版本包含了大量新的功能,比如先进的企业存储协议、两个新的文件系统、WiMAX 宽带网络支持以及存储完整性检查。通过本文了解为何现在就应该升级
Linux 内核。
2008 年底,2.6.28 版本的内核出现。随后,通向下一版本 —2.6.29— 的通道也打开了。由于 Linux
内核采用的是一种分布式的开发过程,所以它并不总能清楚一个特定内核发布中会有什么(或集成了什么),但是这两个最新发布不管是从短期还是从长期来看都是很有意思的。2.6.28
中一个有趣的里程碑是该版本的 Linux 的源代码首次超过 1000 万行(参见图 1,它使用了来自 Heise Online
的源代码行计数数据)。
[color="#000102"]
[color="#000102"]图 1. 最新 2.6 内核内的源代码行数[color="#000102"]



这两个发布引入了新的文件系统(一个已经稳定,一个尚在实验中)、对图形和可视化的新支持,以及新的企业存储特性。接下来,我先大致介绍 2.6.28
中的一些主要新特性,然后再介绍 2.6.29 带来的新特性。
[color="#000102"]2.6.28 中的新特性
Linux 内核 2.6.28 在 2008 年 12 月 24 日发布(2009 年 2 月已经是第 5 个发布版)。2.6.28
第一个的发布版包括大量更改,以至于它自身的更改日志文件大小已接近 6MB。最新的这个发布版很稳定,被用作 Ubuntu 9.04 Jaunty
Jackalope 的内核。
[color="#000102"]第 4 扩展文件系统
[color="#000102"]第 4 扩展文件系统(The fourth extended file system)的名字 [color="#000102"]ext4[color="#000102"] 是由 [color="#000102"]ext4dev
改变而来的,这意味着它已经足够稳定,可以常规使用。Ext4 源自第 3 扩展文件系统(ext3),并具有更好的性能、特性和可靠性。Ext4 允许使用
exabyte 文件系统,这种系统支持的文件数量更多、体积更大、目录结构更深。它还包括多块和延迟块分配,以提升性能。Ext4
既具有前向兼容性又具有后向兼容性(这意味着根据所使用的特性,ext4 文件系统可挂载在 ext3 磁盘格式之上,反之亦然)。通过大规模的改变可以逐渐将文件系统从
ext3 迁移到 ext4。有关 ext4 文件系统的更多信息,请参见
[color="#000102"]参考资料
[color="#000102"]。
虽然 ext4 能够成为未来新的标准 Linux 文件系统,但是其他的文件系统也在不断出现,甚至能够提供更好的伸缩性和特性。Btrfs
就是这类文件系统之一,它现在已经成为了 2.6.29 内核中的一种试验文件系统。Btrfs 是一种兼容 Linux 的文件系统(参阅 GNU Public
License [GPL]),它的特性与知名的 ZFS 不相上下。
Graphics Execution Manager
内存管理
过去一年的时间内,Linux 在图形堆栈领域取得了实质性进展。毫不奇怪,正是在该领域内,图形处理器(GPU)为呈现提供了有用协助。在很多情况下,GPU
比它们所协助的中央处理器(CPU)更为强大。
为了支持当前以及未来的 GPU,Linux
图形堆栈有一个领域需要提高,即内存管理,包括缓冲管理、页影射、放置和缓存。这一点极为必要,因为图形应用程序(尤其是三维应用程序)能够消耗大量内存。而借助
Graphics Execution Manager (GEM),就能够使用现有的内核子系统(比如使用共享内存文件系统或 shmfs
来管理图形对象)管理混入内核的图形数据。
[color="#000102"]引导跟踪器
虽然引导 Linux 所需的时间已经逐渐缩减,但是还是有人认为引导时间过长。因此,引导时间还需要不断地监查。此内核包含了这样一个新特性,即可以测量和记录
[color="#000102"]init
调用的时间。然后可以使用它们可视化引导的流程和性能。该过程是可配置的(要求必须启用收集数据的功能),但是一旦数据收集完毕,就可以使用离线脚本(包
括图形描述)对这些数据进行分析,而这最终会导致更短的引导时间和更为优化的引导过程。此更新还融入了调用线程的过程标识符(PID)以便可以平行查看引
导过程。
[color="#000102"]冻结器
为了在暂停操作系统期间将其迁移到一个新的主机(比如虚拟机
[VM]),我们专门设计了一个称为[color="#000102"]冻结[color="#000102"](和[color="#000102"]解冻[color="#000102"])的新功能。这个新特性能够让任务组或文件系统冻结并保持在冻结时状态,然后再解冻并重新引入这个任务组或文件系统。
[color="#000102"]任务在[color="#000102"]容器
的上下文中被冻结,这个模式能在用户空间级别(一个内核支持多个用户空间)虚拟化操作系统。这种新功能能够在主机之间迁移一组过程,这对均衡负载非常有用。也可以冻结文件系统来支持文件系统备份的快照。目前,文件系统冻结是通过具有参数
[color="#000102"]FIFREEZE[color="#000102"] 或 [color="#000102"]FITHAW[color="#000102"] 的 [color="#000102"]ioctl[color="#000102"] 来实现的。
[color="#000102"]在容器的外面,这个新冻结/解冻模式还可以用于检查点。在这种应用中,可以以特定的间隔([color="#000102"]检查点[color="#000102"])冻结一组相关的进程,然后解冻特定的时间点以回到某个已知状态。
[color="#000102"]虚拟内存伸缩性的改进
由于 Linux 在虚拟系统中应用的增加 — 尤其是具有多处理器和大量内存的系统 — 扩展内存的使用对性能非常重要。Kernel 2.6.28
包含了与内存有关的大量的伸缩性改进。例如,这个内核维护分开的 Least Recently Used (LRU)
列表,一个用于文件支持的页,另一个用于交换支持的页。这就使得内核能够更多地集中于交互支持的页,而不是文件支持的页,因为前者更有可能被写入到磁盘。
[color="#000102"]另一项更改分离了可收回的页和不可收回的页(比如通过 [color="#000102"]mlock 锁定的页)。以这种方式,分页代码就无需迭代 LRU
内不可收回的页,这使具有大量页的系统的性能得到提高。
[color="#000102"]




[color="#000102"]

[color="#000102"]磁盘改进
[color="#000102"]2.6.28 内核包含很多针对磁盘的改进。本小节详细介绍固态硬盘(SSD)的改进和 ATA 设备的保护。
[color="#000102"]对 SSD 支持的改进
SSD 是对传统磁盘进行性能改善的一种很好的方式。SSD 的反应时间更短、随机读取更好,而且耗电少噪音低。但是 SSD
与一般的硬盘驱动(HDD)差别悬殊,所以必须更改 Linux 才能使用 SSD。SSD 最根本的一个问题是它们必须耗损其内部闪存中的块,而耗损会缩短 SSD
的寿命。减少这种影响的一种方式是告知 SSD 一个块何时不再有效(有可能是因为文件删除)。当某个块从此 SSD
释放后,它就不再是被耗损的对象了,进而能将此设备的总体耗损降至最低。但是为了支持此操作,文件系统必须要能将此信息传递给设备。
[color="#000102"]T13 标准委员会已经创建了一种新的 ATA 协议扩展来支持在 [color="#000102"]trim 命令上下文内传递这种消息。当 SSD
收到这个新命令后,它就可以将所定义的那些块添加到其释放列表,不会再担心这些块再成为损耗的一部分。Linux
的这个块层组件称为[color="#000102"]丢弃请求,它来自于更高级别的文件系统的文件删除。一个丢弃请求是此块层的一部分,提供了丢弃块的途径,并最终会导致向提供支持的
ATA 设备发出一个 [color="#000102"]trim
命令。更进一步的改进还包括智能地调度这些丢弃请求,以便它们能够与其他请求结合来执行块请求队列的重排序操作,从而更好地处理相关的丢弃和写请求。
[color="#000102"]改进 ATA HDD
[color="#000102"]ATA HDD 的一个非常有趣的可靠性改进就是震动保护,这种突然的晃动会破坏笔记本电脑的 HDD。ATAPI 规范定义了一个名为 IDLE
IMMEDIATE 的命令,它可以闲置 HDD 并收回磁头以防止它们触及盘片。内核通过一个名为
/sys/block/*/device/unload_heads 的 proc 文件提供这个命令。当一个值写入到此文件且后续的 ATA
命令被写到各自的磁盘后,磁头就被收回,并且所有输入/输出(I/O)都会根据一个计时器延迟很短的一段时间。当计时器超时后,I/O 就会恢复正常。IBM
笔记本曾经实现这个特性,用于访问加速器以测量加速度(决定笔记本是否在坠落)。图 2 是一个总体流程。
[color="#000102"]
图 2.
ATA 硬盘保护的总体流程
[color="#000102"]






[color="#000102"]

[color="#000102"]

[color="#000102"]2.6.29 中的新特性
[color="#000102"]2.6.28 的一些有用的新特性在 2.6.29 中得到了进一步改善。
[color="#000102"]Btrfs
[color="#000102"]2.6.29 中最为重要的一个改进是添加了 Btrfs(或 [color="#000102"]B-tree FS),它最初是由 Oracle 开发的。Btrfs 是对应于
Sun 的 ZFS 开发的,用于构建带磁盘完整性保证的可大量伸缩的文件系统。除了 ext4 的很多先进特性之外,Btrfs
还支持对象级别的镜像和条带化、写时复制功能、 快照(及快照的快照)、完整性和内部压缩。它支持最多 16 exabyte 的卷和文件,并且每个卷内最多可以包含
2[color="#000102"]64[color="#000102"] 个文件。为了协助转化,可以将文件系统从 ext3 升级到 Btrfs(反之亦然,但只能在实现转化之后)。
Btrfs
可以定义一种面向大量企业文件系统的新标准,包括具有在线修复的容错功能和简化的管理功能。虽然还处于测试阶段(还不适合用于查看之外的其他用途),但是 Btrfs
的确包括了一个特性集合,可让它更适合于未来可伸缩的 Linux 存储。
[color="#000102"]联网改进
除了对各种网络设备进行了大量改进之外,还有其他的几个改进很值得一提。第一个就是 Generic Receive Offload
架构,它卸载网络发送(类似于 Large Receive Offload,但独立于协议)。
[color="#000102"]还可以找到对[color="#000102"]后向堵塞通知[color="#000102"](BCN)的支持,这以消息的方式加紧控制循环,从而改进了堵塞管理。在新数据中心部署以太网时,这个特性是必须具备的。
最后值得一提的是,2.6.29 在 Linux 中引入了一种 WiMAX 无线宽带网络堆栈(目前基于 i2400m USB 驱动程序)。请注意,它不同于
Wi-Fi,因为 WiMAX 的点对点连接使用的是得到许可的频段,而且服务质量更高。
[color="#000102"]内核模式设置
[color="#000102"]对内核引导过程和图像模式的一个有趣更改是[color="#000102"]基于内核的模式设置(KMS)。此特性允许在所需组件初始化后由内核控制图形硬件(比如 PCI
总线和显卡)。通过这种方式,内核能够在引导过程的更早时期输入理想的屏幕分辨率,这就减少了屏幕闪动和显示失败(由于重置图像芯片),并允许在服务器启动之前适当地设置显示器。
KMS
的另一个优势是在暂停之后能够改进重新初始化:由于初始化是在内核完成的,所以效率更高。最后,由于内核负责管理图像芯片,所以可能无需引导权限就能运行服务器。这样能够消除一组潜在的漏洞,从而加强了操作系统。
[color="#000102"]




[color="#000102"]

[color="#000102"]结束语
在撰写本文之时,2.6.29 已经处于稳定阶段,并在向 2.6.30 迈进。在 2.6.29 中,您可能还会发现
Squashfs(一个只读文件系统)终于出现在这个主流的内核中。该内核还多了一组能基于路径名进行强制访问控制的安全钩子。除了使用标准的 Data
Integrity Field(T10-DIF)进行磁盘完整性检查之外(某些磁盘使用它进行端对端和空闲时完整性检查),该内核还添加了一种新的协议 Fibre
Channel over Ethernet(FCoE)。
所以,随着 Linux 的不断进步,我们将会不断发现新的功能、改进的可伸缩性以及不断提高的安全性。像苏格兰威士忌一样,Linux
将随着时代的前进而不断进步,并且愈久弥香。关于内核更改和未来发展的更多信息,请参阅
[color="#000102"]参考资料
[color="#000102"] 部分。
[color="#000102"]

[color="#000102"]参考资料
[color="#000102"]学习[color="#000102"]

[color="#000102"]
[color="#000102"]讨论[color="#000102"]

[color="#000102"]

[color="#000102"]关于作者


[color="#000102"]M. Tim Jones 是一名嵌入式软件工程师,他是 Artificial Intelligence: A Systems Approach,
GNU/Linux Application Programming
[color="#000102"](现在已经是第 2 版)、AI Application
Programming
[color="#000102"](第 2 版)和 BSD Sockets Programming from a Multilanguage
Perspective
等书的作者。他的工程背景非常广泛,从同步宇宙飞船的内核开发到嵌入式系统架构设计,再到网络协议的开发。Tim 是位于科罗拉多州
Longmont 的 Emulex Corp. 的一名顾问工程师。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66435/showart_2151189.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP