Linux 2.6内核的精彩世界
深入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 嵌入式系统 嵌入式开发 嵌入式 相关文章:
- 煤矿井下综合自动化系统中的应用(04-06)
- 软件Overlay:程序编写与调试(01-20)
- USB数据通信接□模块的程序设计(10-17)
- 东江产业园:力争2017年产值达千亿(09-30)
- 硅谷数模的SlimPort扩大了Nexus7的显示屏选择(08-01)
- Lonworks控制网络技术在城市排水泵站自动化中的应用(06-06)