GNU/Linux 内核版本2.6 的美丽新世界 第二部分
为了较好的支持新的NUMA机器,Linux将修改一些代码。第一步,将增加一些API使得内核明白存在的设备和它们之间的关系。这样Linux进程调度进程就可以最大程度的优化任务。另外很多NUMA机器的每个结点之间存在线性内存空洞。新版本的内核将有能力管理这些不连续的空间。 其它的一些改进也使得Linux将更好地支持高端机器。在接下来的一年内这都是内核开发团队的奋斗目标,我们将会看到Linux在大型机上更出色的表现。*更高品质
除了提供对更多更新设备的支持,版本2.6也提高了对原有支持的质量。包括对下列CPU的优化:Transmeta的Crusoe,Intel的Pentium4小强、移动版本的PentiumIII/4,AMD的移动处理器、一些有缺陷的Athlons处理器。另外修正了一些鲜为人知的bug,如当使用超过16个处理器的SMP机器时偶尔在启动时死机。
*超线程技术
这不是新闻了,在版本2.4.17时Linux就已经支持Intel P4中的超线程了。超线程技术可以在单处理器上使得操作系统获得多个CPU的能力。毫无疑问Linux是第一个把这一技术带入市场的操作系统。可笑的是在这之后M$公司似乎想单独出售每个虚拟CPU的许可证。 Linux的开放性使得她总是可以在第一时间支持新设备。(超线程技并不会比两个处理器更快。)
在版本2.5中由于新的进程调度和其它组件的改进,超线程技术的实际性能相对于版本2.4得到了加强。
*真丈夫:自如的伸缩
除了NUMA,版本2.6将支持Intel最高端的机器。首先是完整的PAE(物理地址扩展),此允许新的32位x86构架可以分页方式寻址64G内存。此外是改进的APIC支持,等改进的多处理器机制。
在很多发面原有的限制也有了突破。用户和用户组的数量从原来的最大65000个扩大到40亿个(16位->32位)。这将打破Linux原来在超大文件服务,认证服务发面的束缚。同样,进程ID号也从原来的32000个升级到10亿个。这对于那些高负载和长期运行的机器有很大帮助。尽管可以打开的最大文件数没有增加,但是版本2.6不再需要您手工设置了,这个值将会自动调度。最后,版本2.6将支持64位的块设备,这将使得文件系统高达2TB。
*交互和响应特性
版本2.6有一个惹眼的“卖点”。2.6将更加适合于桌面用户和那些高度倚赖事件驱动的场合。尽管这是两个不同的机制,但是一些努力已经可以使得二者可以得兼。
一个不能不提的重大改进是版本2.6已经是强占式内核了。在以前的版本中,当操作系统在做事情的时候是不能被中断的(在多处理机系统中,每个结点同样遵循)。现在内核允许自己被中断,这样如果内核在做一些复杂的维护时,用户进程就不至于耽误太久。(当然为了避免死锁等,内核还是要确定一些绝对不可中断的临界区) 最大的受益者是那些交互式程序(桌面用户),他们将感到系统飞起来了。
另一个重大改进是新式的"Futexes"(可以理解成高速用户看见互斥工具)。Futexes在多进程、线程情况下可以串行话事件,以避免竞争条件的发生。与包含在线程包内的传统的互斥工具不同,这是基于内核的,并且可以设置优先级别。这个改变会使得一些有实时要求的程序更好完成。
Linux I/O子系统也在这次的革命中得到更新:它获得了一个全新的I/O调度。这部分代码的工作是决定谁(进程)、何时还是读设备,而不会让某个进程长时间苦苦等待。同时也保留了原有的算法。
所有这些改进都有助于实时应用的部署。当然版本2.6还不是一个完全的实时内核,但这些努力使得一个完全的实时Linux正变得可能(一些补丁提供了此类的支持)。
*模块系统:设备启动
模块子系统也是随着版本2.6的出世而得到改进的一个部分。大量的代码被重写用于改进其稳定性和透明性。In addition to these obvious external changes, many more
things have changed "under the hood" with how the kernel sees and uses
modules.
最明显的(尽管意义不大)一个改变是文件扩展名。以前的"*.o"(通用的目标文件,程序编译之后,链接之前的状态)成了"*.ko"(kernel object)。这仅仅是为了表明模块不同于中间文件,面子工程。
一个有意义的变化是为避免以前多次出现过的竞争条件而大量改写的代码。The
crux of the problem is that it was possible to have a device start using
a module while it is being unloaded, but after the module checks to make
sure no one is using it. The new kernel module coding should make this
condition much harder to trigger. To take this solution a step further,
it is also now also possible to simply disable unloading of modules
altogether.
更大的透明性是新模块系统的特性。以前的版本主模块具备了检查支持的设备的ID能力(PCI/PC Card/ISA pnp)。版本2.6中,这将被标准化。这有助于核外程序、模块加载进程和类似RH kudzu的管理器方便的找到所需模块。
未完,待续… 不错!继续努力! 对不起,我不能继续了。 害怕受不了2.6的诱惑……… why not? 说来惭愧啊。我现在不是自由之身啊…
我要为研究生入学考试做准备……
道是:保送研究生的过着猪一样的生活;找工作的过着狗一样的生活;考研的则是猪狗不如啊!
又道:一把辛酸泪,谁解其中味?! ic. so good luck. i think that test and the preparation is a hard work. at that time, i live like a pig as you said. so i do not know the feeling. but i can understand.:wink:
页:
[1]