|
最近参与学校的一个“linux多核线程调度设计”项目,偶遇 this Interview, 阅后特别兴奋,翻译了一小段,希望能一起补齐了 (原文:http://kerneltrap.org/node/517)
原文:http://kerneltrap.org/node/517
访谈:Ingo Molnar
Ingo Molnar 从1995年开始便一直致力于linux内核开发,取得了一系列显著成绩。最近,他的 O(1)调度器和很多其他致力于提高多线程处理能力的成果都已并入2.5内核中。他的其他比较著名的贡献包括RAID软件支持,in-kernel Tux Web and FTP servers. 这个访谈中,Ingo 回忆了他如何开始内核开发工作的,他说:“这听起来可能有些奇怪,当初我安装linux,
只为了看一下linux内核代码。” 他接着继续介绍他的 O(1)调度器的思想和他在内核开发中所做的其他工作。这个访谈是在几个月时间中陆续完成的,介绍了很多很意思的事情。。。。
Jeremy Andrews:你是什么时候开始接触Linux的?
Ingo Molna: 我在1993年第一次听说了linux,但我真正迷上内核开发是在1995,那时买了<Linux Kernel Internals>的德语版。 这听起来可能有些奇怪,当初我安装linux,只为了看一下linux内核代码,我觉得它相当迷人。 所以我觉得我是 one of the few people who 先开始内核开发,然后学习成为一名linux管理员,然后再学习成为一名linux用户:)
JA:你对内核开发做出的第一个贡献是什么??
IM:我的第一个贡献是对网络代码的一个小的 #ifdef bugfix,它被Alan Cox审阅和接受了。当时我已经在内核邮件列表上关注了几个月了。我第一个比较大的补丁是针对arch/i386/kernel/time.c 的。我在奔腾处理器上引入了基于时间戳计数器的 gettimeofday(),它使 gettimeofday()系统调用速度提高了%40左右。那些代码在现在的内核中还在使用。 这个补丁也是由 Alan Cox初审的。我觉得,内核新手和老手间的第一次积极沟通应该是吸引新开发人员到Linux阵营的最重要的因素,当然还有编程能力,与其他内核开发者间的互动交谈,倾听的能力也是重要的。
JA:除了linux内核邮件列表,你还参与其他邮件列表没? 或者说其他 newbies 和oldies想要找到你,只能到linux内核邮件列表中??
IM:我参与了很多邮件列表,但对于内核开发,linux内核邮件列表是主要的交互平台。
JA:你最近对linux内核的贡献的在一月上旬并入2.5内核开发树的 O(1)调度器。 你什么时候开始O(1)调度器的项目的,当时的灵感是怎么来的?
IM:O(1)调度器的一个核心概念是:用两个优先级队列来达到调度公平原则。这个想法是1998年产生的。我当时甚至先写了一个初期补丁。但当时没能解决 O(n)调度问题,所以我停止了改进补丁。 在2001年,大约12月时,我开始现在这个O(1)调度器的开发工作。灵感,正如调度器名字那样,就是为linux开发一个完整的全面的算法复杂度为1的好的调度器:包括唤醒,上下文切换,时钟中断等所有方面。
JA:你的O(1)调度器有没有借鉴现有的或学术研究文章中的调试器??
IM:这听起来可能有些自大,但我是在写调度器后来读学术研究文章的。这种做法,我觉得在linux领域,是比较好的方法。知道的细节太多有时反倒让我们迷失了真正想走的方向。我喜欢写新代码,我喜欢从感性方面去认识事物:掌握些基本原则,然后建立‘one correct’方法,不妥协。 这也许没有 那种先读很多可用资料,然后从中挑些好点子,然后自己补充其他方面的方法来得高效。但它确实给了我很多乐趣:) |
|