Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

Robert Love--KernelTrap访谈 之二(中文版)

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

Kernel trap在2001年10月对Robert love进行了第一次采访;之后不久, 他的抢占式内核补丁被收入2.5系列内核;他在内核开发方面一直很活跃。最近,他再次接受了我们的采访。

本次采访中, Robert和我们讨论了Linux抢占式内核的现状, 他最近参与0(1) 级调度器开发的情况, 以及他在 VM overcommit方面的工作。他还对linus使用bitkeeper,Linux的未来以及最近在Ottawa举行的kernel summit会议发表了自己的看法。

Robert现在在加州为MontaVista公司工作,但8月底他将回到佛罗里达州立大学继续他的大学三年级的学业。请继续阅读我们采访的全部内容:
//JA for Jeremy Andrew @ KernelTrap
//RL for Robert.M.Love

JA: 我上次访问你到现在已经有8个多月了, 那时你已经对Linux内核做出了令人印象深刻的贡献。几个月前你的抢占式内核补丁被收入2.5 版内核的开发树,而且你投入很大精力参与了O(1) 级调度器的开发工作。 除了这些以外,您在 Gainesville的工作和生活怎样呢?
RL: 都还不错。4月份我完成了在佛罗里达大学的第二年学业。我很喜欢大部分课程,尤其是数学。8月底我将开始第三年的学习。
摄影是我的爱好之一, 我买了新的照相机---Canon Elan 7e。这是一个SLR 35毫米 beast的单反相机(但不是数码的)。我拍了很多照片,从中获得了很大的乐趣。
一月份我就开始在MontaVista, 一家嵌入式Linux公司,工作了。 我在实时和性能工作组做内核hacking方面的工作。 MontaVista 是开源软件的坚定支持者,因此我可以同时为社
区的很多项目工作。 公司一直对抢占式内核很有兴趣,这一直是他们的开发项目(note: 抢占式内核最初是由Monta Vista提出并初步实现的), 而且他们也支持我对2.4 和 2.5 版内核的维护工作。

JA:听起来您可以做自己喜欢的工作,并可以因此得到报酬?
RL: 我真的很幸运。

JA:您提到Monta vista是一家嵌入式Linux公司, 但是我必须承认,除了他们对抢占式内核的贡献之外我对他们并不是很熟悉。 您可以更多介绍些他们的工作吗?
RL: Monta vista为开发者提供了一套开源的基于Linux的嵌入式系统的解决方案。 对于着眼于嵌入式产品的开发者来说, Linux是一个广泛的选择。 我们提供了一个产品和多样
的服务来满足他们的需求。

JA:这个夏天您准备怎么渡过?
RL:在学期中我通常会兼职,但是这个暑假我会在硅谷为Monta Vista作全职工作。 这是一个非常值得的经历。这儿我有一辆车,所以我可以借着这个机会去旅游。北加州真的很美。

JA: 来这儿以后您去了哪些地方旅游呢?
RL: 我在south bay 居住和工作,所以我花了很多时间在附近游览。我经常去 San Francisco, 也去过 Santa Cruz 并且徒步穿过山谷附近的山脉。 我很喜欢那些大学城,像 Stanford所在地 Palo Alto和 UC Berkeley 所在地Berkeley。我还去过Yosemite ,很喜欢那里。

JA:回到您在内核方面的工作。 您是什么时候得知您的抢占式内核补丁将被Linus收入2.5 的开发树的?
RL: 当Linus说 "Ok" 的时候 :-) 
糟糕,我几乎想不起来了。我们曾经讨论过这个问题并且这也常常在社区中被提出来。我给了他针对2.5.4-pre5 的补丁,他提出了很多问题,这些问题在我后来的一个补丁进行了处理。
瞧,结果就是,2.5.4-pre6 有了一个抢占式的内核!

JA:作为Linux台式机用户,我很高兴听到您的补丁被采用了。 但是,我仍然记得不久前争论中,很多人不赞成抢占式内核应该成为Linux内核主干(mainline)的一部分。您从其他的内核hacker那里得到的反映如何?
RL: 各式各样的。有些人很喜欢这个而且在为进一步的增强而工作,有些人不喜欢,其他的则持中立的态度。 最重要的家伙(Linus)很喜欢这个;而且我也从两个最具天才(我的个
人看法)的内核hacker Andrew Morton和Ingo Molnar那里得到了支持,对此我十分感激。

JA:现在您对已经被收入mainline development tree的补丁做多少维护工作呢?
RL:比还是作为外部补丁的时候少多了。 在此之前我要花很多的时间跟踪开发树,保持事情的同步并发布补丁。现在我则不必担心类似的事情。实际上是其他的补丁要注意和抢占式内核保持一致。

JA:抢占式内核增加了哪些复杂的因素呢?
RL:有per-cpu数据的问题。由于内核已经是可抢占式的了, 我们有一个规则是内核代码不能假定当前使用的cpu不会被其他代码夺走,这也是被抢占的结果。因此,必须依靠per-cpu
数据运行的代码必须确定抢占被临时禁止。

JA:内核的哪些部分必须因此禁止抢占呢?
RL:举个例子吧, 比如一个图片, 就值数千本 jacky handy书, 
int cpu = smp_processor_id(); 
extern stats[NR_CPUS];
do_stuff(stats[cpu]);
more_stuff(stats[cpu]);

以上的代码中, 因为有了内核抢占( kernel preemption),你可以在任何地方进行抢占。当重新调度时,你可能在使用另外一个cpu并且'cpu'的值不再指向当前的cpu了。 这样并不好。
解决方法是:
int cpu = get_cpu(); 
extern stats[NR_CPUS]; 
do_stuff(stats[cpu]); 
more_stuff(stats[cpu]); 
put_cpu();

函数get_cpu()和put_cpu()返回当前的cpu值, 但同时也禁止了抢占。 需要注意的是只有当前没有锁并且允许中断时才需要做这些,并不是每次使用都会产生问题。我们已经修正了所有已发现的问题.须注意的是以上的方法在单处理器系统中可能造成问题,因为单处理器的数据是“隐式锁定”的, author可能因为不能在同一个cpu上再次读入数据(执行代码)而没有对数据进
行保护。抢占改变了这一切,因此你可能需要禁止抢占。

JA:全部的抢占式补丁都被收入2.5内核了吗?
RL:是的,而且2.5包括了很多2.4的补丁没有收入的变化。2.5还包括了对当前多数处理器结构上内核抢占的支持,体现了支持该补丁的开发者的产生。

JA:2.5现在支持哪些处理器体系结构呢?
RL: ARM, I386, PPC, sparc64和x86-64. Monta Vista已经为2.4提供了支持SH和MIPS的补丁并且这些也可以很方便地进行移植。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:基于Linux2.4内核的透明代理配置方案   下一篇:使用TCP/IP协议栈指纹进行远程操作系统辨识

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号