`

拨云见日 关注七项 Linux 内核发展方向

阅读更多

对于一个 Linux 的企业用户来说,它的内核开发可能显得过于复杂了,有许多人在维护不同的代码,而且有更多志愿者在提交代码,这种乱花渐欲迷人眼式的“热闹”景象却让我们很难看清未来将有什么样的新功能。

  就其本身而言,Linux 的发展没有路线图。为了对 Linux 发展方向有一个简单的认识,作者根据与开发者和内核维护者的交流,以及从 www.kernelnewbies.org 网站上了解的知识,提出了值得关注的七个开发领域。当然,这七个方面的发展也不会顺风顺水,和众多其他进入 Linux 内核的功能一样,会按照一条曲折的道路前进。

  1、虚拟化技术

  由于认识到虚拟化技术是本世纪最大的趋势,Linux 内核维护者已经破例以飞快的速度将虚拟化功能加入到它的内核中。由新兴公司 Qumranet的Avi Kivity 所贡献的系统管理程序 KVM 已经被在 2006 年底被加入到内核中,并在最近的版本中进行了更新。在迅速的内核版本发布和缓慢前进的企业版 Linux 之间之间存在鲜明对比,KVM 则是一个典型的例子。

  Novell 负责管理的副总裁 Holger Dryoff 表示,“企业还没有为很多功能做好接受的准备,KVM 就是非常好的例子,”在 KVM 进入 SUSE Linux 企业服务器版之前,它还需要更多的测试工作,以验证它将与内核其他子系统之间如何交互,同样的情况还有调度器,他表示。

  最近刚刚被 Citrix 系统以 5 亿美元收购的商业化开源虚拟技术公司 XenSource 一直在上下活动来让内核中的 Xen 管理程序使用它自己的体系架构。内核维护者认为,增加一个虚拟化功能是一个维护量很重的工作。XenSource 工程师已经让步,但是使 Xen 与内核操作结盟的工作依然在继续。它还没有真正成为内核组件,只是增加一些支持,可以让当 Linux 运行在一个虚拟化环境的时候可以识别它。

  其他虚拟化功能正在飞速的发展,其中包括 KVM 和 Lguest,后者是由 IBM 工程师 Rusty Russell 编写的迷你型管理程序,代码只有 5,000 行,它已经被包含在多数最近的内核中。和 KVM 一样,它可以利用来自英特尔和 AMD 最近芯片中的虚拟化技术。但是,与 VMware 的 ESX 服务器不一样的是,Lguest 创建了一个虚拟机器,它的操作系统能意识到它已经被虚拟化。这种体系架构让这个操作系统可以更高效的忽略某些针对CPU周期的呼叫,直接让其指向硬件,而不用扮演一个仲裁者使其速度变慢。

  2、实时操作

  在实时操作方面 Linux 已经取得了迅速的提高,已经成为一个在一些移动电话和其他设备中被频繁使用的嵌入式操作系统。但是,据商业化嵌入式 Linux 的作者之一,MontaVista 的创始人兼首席技术官 Jim Ready 表示,在最近发布的 2.6.23 内核中,在实时操作方面却显示出了“一点点倒退”的迹象。一个新的过程调度器开始更多的倾向于更“公平”,它主张由终端用户告诉处理器进行的任务应该获得更多的优先权。

  Ready 表示,“一个实时系统的用户并不需要这种公平,”因为实时系统主张其操作系统可以随时中断处理器正在进行的工作,并增加一个新的优先操作。一个简单的例子是,一个用于监视病人呼吸状况的医疗设备中的软件如果发现呼吸停止的情况,就应该中断这个软件正在做的任何工作,并立即发送一个紧急告警。MontaVista 不会将这个新的内核应用到它的产品线中,除非其性能被恢复,Ready 表示。Gartner 分析师 George Weiss 预测,在 2008 年标准Linux将作为一个具有竞争力的实时操作系统。

  3、中断处理程序

  Weiss 之所以如此说的原因之一是,内核开发人员正在研究让这个调度器具备又一个实时特点。这个操作系统的一个关键角色是用来管理中断的,来决定哪一个任务应该引起 CPU 的注意,以及如何比其他操作具有优先权。如果所有的中断处理器可以被结合到它们自己的线程中,那个线程可以被调度并设置优先,而不是不可预知的发生和延迟实时响应。

  在这个方向的研究已经进行了三年的时间。MontaVista 的 Sven-Thorsten Dietrich 在 2004 年提交了一个程序,希望防止中断处理程序因为常规任务中断内核,因为它们影响了实时响应。但是这个程序与内核调度器领域专家 Ingo Molnar 的观点分歧太大。这个程序影响了一个关键的内核功能,自旋锁 (spinlocks),当一个过程等待一个需要的数据或事件的时候它会阻挡 CPU。许多程序需要使用自旋锁功能。而 Dietrich 的代码将数百个自旋锁降低到 30 个; Molnar 的修订保留了 90 个自旋锁,是一个具有更少破坏性的改变。

  中断处理器集合到一个单独的线程的想法现在看上去已经做了进入内核的准备。Ready 表示,“Ingo 替换了我们所做的操作,但是他的工作是非常有效的,”MontaVista 不会在意是否因为它做的工作而得到多少荣誉,Ready 知道这就是开源协作的方式,因此他将接受正在进入内核的实时功能的修改。

  4、安全

  每一个人都希望使用更安全的系统。Novell 在其 SUSE Linux 企业服务器版 10 中集成了 AppArmor,作为限制一个应用程序可以访问多少操作系统功能的方法,因此如果一个应用程序未经授权被访问,可以限制其破坏性。不过,现在看来它还没有被加入到内核中的时间计划。

  Stephen Smalley 是一个关键的 Linux 安全权威,也是另一个安全方案 SELinux 的开发者,他认为 AppArmor 不能被合并到内核中,因为它的保护机制是基于“路径名”方式,实质上是一个白名单方式,AppArmor 只允许一个应用程序访问那些指定的文件,所有其他文件都被排除在外。根据去年 Jonathan Corbet 的一个报告,Smalley 认为一个狡猾的入侵者可以使用被认可的路径名来猜测其他名称,从而得到人们不想暴露的内容。

  内核维护者 Andrew Morton 对此表示认可,认为这种路径名方式是使 AppArmor 不能进入内核的最根本的理由。

  5、系统诊断

  Solaris 可以使用 DTrace 工具来探测在操作系统核心中正在进行的工作,但是 Linux 缺少一个具有友好用户界面的诊断工具。少数仅有的工具之一是 ptrace,它可以让一个过程跟踪另一个的行为。但是 ptrace 使用起来非常笨拙,且容易出错,现在有一个替代者 utrace,它已经成功进入 Morton 的内容管理树中,距离提交给 Linus Torvalds 只有一步之遥。在一个进程被一个程序执行执行的时候,Utrace 可以跟踪它的行为,而且不会发生 ptrace 的问题,但是它依然会导致内核锁定问题。Corbet 预测在下一个内核版本中还不会包含这个功能。

  6、文件系统

  Reiser4 文件系统目前已经被开始考虑加入到内核中,它已经包含了 30 个文件系统。根据 Hans Reiser 的文档,它是一个打星文件管理系统,擅长处理大量的小文件,而使用最小化的磁盘空间。

  这个文件系统要求一个文件操作或者被完成,或者被禁止,减少了文件被完成了一半操作所破坏的风险。对很多 Linux 用户它似乎非常不错,但是经过数年的争论,Reiser4 还有没有进入内核中。它不能很好的与内核的很多部分保持协调,而 Reiser 已经不再是一个领先的开发者。Corbet 在最近他的前景预测中写到,“如果它想最终成为传统 Linux 的一部分,它将需要一个新的支持者。”

  Sun 公司的 128 位文件系统 ZFS,除了满足今天正在使用的大型系统的需要外,正在引起 Linux 界的关注。支持它的团体指出它的开源代码应该被内核所考虑。但是它目前的许可协议与 Linux 通用公共许可 GPL 不兼容。

  7、电源管理

  在电源管理方面 Linux 已经落后了,在这方面 Windows 笔记本已经给人们留下了深刻的印象,这刺激着英特尔工程师、内核开发者 Molnar 和 Thomas Gleixner 和其他人正在这个领域努力。一年前,内核实现了“tick-less idle”机制,当没有工作可做的时候告诉处理器处于空闲状态。没有它,CPU 的时钟将会每秒询问内核 1,000 次是否有什么事情可做,从而浪费大量电能。

  英特尔的首席 Linux 技术专家 Dirk Hohndel 预计在电源管理方面会有更多的完善。但是在内核和系统时钟之间的任何改变会威胁许多其他的交互。他表示,“这些事情可能会非常困难,需要花费长期的时间来完成,但是我认为这是一个正确的发展方向。”

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics