分类: 系统运维
2011-04-20 14:40:58
Interview with Dr Andrew S. Tanenbaum
Andrew S. Tanenbaum博士访谈
Nick Gibson
译
Creator of MINIX, flame-war legend and well known supporter of microkernels -- these are some of the monikers of Dr Andrew S Tanenbaum; he probably wrote a textbook or two that is in your library as well.
MINIX的创造者, 传说中著名的微内核激进分子 - 这只是Andrew S Tanenbaum博士的部分绰号而已; 你身边的图书馆中很可能就要他写的教科书.
Builder AU's Nick Gibson caught up with Dr Tanenbaum after his keynote address at linux.conf.au and spoke about microkernels, MINIX and what's coming up on the horizon.
Builder AU的Nick Gibson在 Tanenbaum博士于 linux.conf.au演讲完后对其进行了采访, 谈论了微内核, MINIX, 未来的新特性等.
Why do you think microkernels are better than monolithic kernels?
为什么你认为微内核优于宏内核呢?
If you look at systems where it really matters if it works -- like avionics systems, jet fighters, ventilators in hospitals -- things where a failure means somebody dies, most of them are microkernels.
如果你有关注过那些是否正常运行至关重要的系统 – 像是航空系统, 喷气式飞机, 医用呼吸器等 – 一旦出错就意味着死亡, 大部分这样的系统都是微内核的.
For the guys who really care, guys who make jet fighters and so on, it's really got to work. Because if something goes wrong, rebooting the jet fighter while it is falling out of the sky is not a good thing.
系统的正常运行对于喷气式飞机制造者而言真的是非常重要. 因为, 一旦出错, 重启, 飞机早已掉到九霄云外去了, 这可不是什么好事.
There is a tremendous amount of military, industrial and hospital systems that are based on microkernels because those guys have discovered that they are more reliable.
有大量的军用, 工业, 医用系统是基于微内核的, 因为人们发现微内核更可靠.
Microkernels are widely used in the embedded world for high end, high reliability things where there is a real big downside to failure.
微内核广泛用于高可靠性的高级嵌入式终端, 在这些环境中不容出现半点差错.
Microkernels are getting really popular in embedded devices, with QNX being bought by Harman International, and work being done locally on L4 -- do you think embedded devices are a good area to concentrate on if you are a microkernel developer?
微内核在嵌入式设备领域中非常流行, QNX被Harman Internationa收购后, 在L4上运行得非常稳定 - 你是否认为微内核开发人员应该主要关注嵌入式设备领域?
It's an application area, so yes. The thing about embedded systems is that there is less legacy. If you are making a medical imaging device, it probably doesn't have to be compatible with much else, it just has to work.
是应用领域, 当然应该多关注. 嵌入式系统没有什么遗留问题. 如果开发一款医用成像设备, 你不用顾虑要兼容这兼容那, 只要它能正常运作即可.
Other than the fact that you need people on your development team. It's relatively easy to take this new device and put in a new operating system because nobody else except the developers ever sees that.
多让人们关注你的产品, 这不难, 拿上新设备装上OS即可, 比开发要简单多了吧.
On the desktop people want to know what is different from what they used to have, and in embedded you don't have that as much. So it's easier to start again with a new product.
桌面用户关注新产品和他们以前使用的有啥不同, 嵌入式设备用户则不存在这样的问题. 因此, 启动一款新产品相对较容易.
You've been working on MINIX 3, what makes it different from all these other microkernels?
你致力于MINIX3的研究, 它与其他微内核有什么不同?
We've made a big effort to make it POSIX conformant and in addition to the embedded stuff, to make it useful on the desktop and notebooks and so on. We've got a full POSIX interface, we've got around 500 programs that have been ported, we have Apache, we have a GUI now and we have perl, python and gcc -- many of the tools and programs that people use on the desktop.
我们为让它达到POSIX兼容, 适应嵌入式环境, 用于桌面和笔记本等付出了很多努力. 我们完全实现了POSIX接口, 超过500个[20080603已达到650]程序被移植到MINIX3上, 我们有Apache, GUI, perl, python, gcc等 – 许多人们在桌面环境中使用的实用工具都能有对应的MINIX3版本.
Many of the other embedded systems don't focus that way. If you are building software for an F-16 fighter, you don't need Ghostview. So we have ported a lot of that stuff that makes it usable.
与许多其他嵌入式系统关注领域不同, 我们注重的是计算机. 你为F16战斗机开发的系统是绝对不需要 Ghostview[注: PostScript文件阅读器]的, 而我们可能就需要, 为了让Ghostview 能正常运行, 我们作了了大量代码移植工作.
We don't have Firefox yet, that comes later this year, but once we have Firefox and maybe OpenOffice then it is usable for a lot of people as their real system.
我们暂时还没有Firefox, 但今年底就能移植过来, 一旦移植了Firefox, 接着可能就是Openoffice, 这对许多用户而言已经是个真正的系统了.
We have X Windows and normally these embedded systems don't have X11 -- programmers expect that -- if you are writing for a jet fighter you don't need X11. That's the difference between us and some of the other companies.
我们有X Windows和通常嵌入式系统不具备的X11 – 程序员希望具备它 – 如果你为喷气式飞机编写程序你是不需要X11的. 这就是我们与其他公司的不同处.
You wrote a paper "Can We Make Operating Systems Reliable and Secure?", which was seen in some circles as an attack on Linux and re-igniting this old flame war between you and Linus. Do you really have a problem with Linus?
你曾发布过一篇名为"Can We Make Operating Systems Reliable and Secure?"的论文, 其中随处可见你对Linux的攻击, 又激发了你和 Linus的争论. 你对 Linus个人真有什么意见么?
No, no, no. We've met briefly now and a couple of years ago and he is a good guy. A couple of years ago this guy called Ken Brown wrote a book saying that Linus stole Linux from me, from Minix, and therefore the intellectual property rights are unclear and therefore companies shouldn't use Linux because I might sue them.
完全不会. 多年前我与他曾有过短暂的会面, 最近又见了一次, 他是个不错的人. 多年前有个叫 Ken Brown的家伙写了一本书说 Linus从我这儿剽取MINIX才开发出Linux的, 因此, 后来人们对Linux的知识产权不是很明了, 有些厂商担心我起诉他们而不敢使用Linux.
It later came out that Microsoft had paid him to do this -- and I defended Linus. I wrote on my Web site saying that this guy Brown came through, visited me and I gave him the correct story.
日后才发现这是微软雇佣他这样做的 – 我有保护Linus – 我把 Brown来找我的事情在网站上公之于众.
We may have different philosophies on system design but it doesn't mean we dislike each other.
虽然我们对OS的设计理念不同, 但这不意味着我仇视所有与我意见不合的人.
The article to Computer magazine, I didn't post it on Slashdot -- someone put it on there and said "Here we go again".
你说的那篇论文我是发表在Computer magazine而非Slashdot – 另有其人将其转帖到Slashdot的, 还哗众取宠说”我们又开吵了”.
It was an article in an academic journal about future research in operating systems. It wasn't an attack on Linux or Windows -- it was an article for an academic audience about what is the work going on in operating systems and it listed a variety a different approaches, of which MINIX is one of them, but it also talked about Singularity, Nooks and other research approaches going on.
该论文不过是学院气息浓郁的杂志中一篇文章而已, 说了下OS未来的研究方向. 绝对不是对Linux和Windows的攻击 – 为学院派写的一篇关于OS发展方向和各种OS设计方法等的文章. MINIX只是方法之一, 还谈论了其他如 Singularity和Nooks等研究方法.
If people thought that was an attack on Linux, they are being overly sensitive.
如果人们觉得这是对Linux的攻击, 那只能说明他们太敏感了.
Back in 1992 you called Linux obsolete, it's 15 years later and people are running Linux on their 64 bit x86 chips. Do you still think?
早在1992年你曾说过Linux过气了, 15年过去了, 人们还在64位的X86芯片上运行Linux. 现在你还这样认为么?
I still think that its basic architecture, the basic design is a bad idea, that a monolithic kernel is not a good idea, and people are seeing it more and more in applications where is really matters. In industrial and commercial embedded systems people are moving to microkernels. It's got to work.
我还是认为它的基本构架, 基本设计理念有问题, 宏内核不是好的思路, 大家在日常使用中感触越来越明显. 人们把工业和商业嵌入式系统都转换成微内核. 事实证明, 微内核运作得更好.
It's only on the desktop and some servers where it doesn't matter if it works or not. Where these monolithic systems are popular, but where it has to work -- it's not so popular. I saw that a long time ago.
仅在桌面和服务器领域, OS出错是可以接受的. 这些领域中, 宏内核非常普及, 但在零出错环境中, 宏内核就流行不起来了. 很早以前我就曾预言过.
My faulting of Linus was that he had a good, nice clean microkernel and he could have gone and made a better one out of it. Science progresses when you take something and make a better one, not a worse one of what you already had.
Linus所犯的错是他有一款现成的优秀的微内核[注: I.E., MINIX]作基础但他却抛弃不用. 科技的进步是建立在创造更优秀而非糟糕事物之上.
I thought he should have taken and made a better microkernel, fine! But he was 20 years old, didn't have that much experience; he was a kid and he developed it differently.
我觉得他开发出更好的微内核就皆大欢喜了! 但, 回头想想, 当时他才是个20出头的小伙子, 开发经验不足, 这也难怪. [注: -_-#, 教授, 你这话也太NB吧!]
We heard last year that GNU/HURD was changing microkernels again. Do you think that we'll ever see a final release of GNU/HURD?
去年我们听说GNU/HURD再次调整了微内核. 你认为我们能看到GNU/HURD的最终发布版么?
Ask them! There are plenty of great microkernels out there, there is L4, there's MINIX, I don't know what they are doing.
这你得问他们! 目前的微内核不少, 像是L4和MINIX等, 我不知道他们目前的工作安排如何.
I don't think that those guys have the same focus that I have of trying to get a product out there that works pretty well, they have a ideological purity behind them.
我觉得他们和我关注点不同, 我是要开发一款运行稳定可靠的系统, 他们背后的意识形态更单纯.
I was talking to Richard Stallman once and we got onto the subject of Free Software, and he sort of bit my head off when I used the term incorrectly from his point of view.
我曾经和Richard Stallman就自由软件有过一次交谈, 当我用他的逻辑指出他的错误时他匆匆结束了对话.
Free Software is software when you have the source and you can do what you want with it, whether it is the Berkeley licence or the GPL, isn't so important. The important thing is having the source code and being able to play with it yourself.
自由软件是这样的软件: 你能获取它的源码, 你能对它做任何你想做的事, 而不论它是采用BSD还是GPL授权, 这完全不重要. 重要的是你具有源码, 能随意操纵源码.
And he went bananas and said "No, the licence is the most important thing!" And I said "No, the software is the most important thing, and having the source code out there and the details of the licensing are secondary.
听完我的看法他发疯地说: ”不行, 授权才是最重要的!”, 我说: ”不是这样的, 软件(源码)本身才是最重要的, 授权应该放在第二位.”
The important thing is that you release the source code and other people can use it to modify it as you wish under reasonable conditions; the exact nature of those conditions isn't so important. He just went ape.
重要的是你发布源码, 人们在你期望的合理的条件下随意使用这些源码, 而条件自身并不是最重要的. 听到这里他开始抓狂了.
I think Linus is on the same line as I am in respect of the important thing is the code -- making the code available and the exact licensing conditions are not important. He doesn't like the GPLv3 from what I understand and that's fine, I like the Berkeley licence but I respect him for making his choice. That isn't the key thing for me.
我认为就重要的是源码而非具体授权这个观点而言, Linus与我是统一战线的. 正因为这样他不喜欢GPLv3. 虽然他采用GPLv2, 我喜欢BSD授权, 这到没什么, 我尊重他的选择. 说实话, 我不怎么在乎这个.
I read in your paper that you named microkernels as just one of the tools that you can use. What are some of the other tools that you see as being available to OS providers?
我在你的论文中看到微内核只是你使用的工具之一. 你还有哪些其他工具可以给OS提供者作参考?
is a very interesting development from Microsoft, they wrote the entire system from scratch in a single address space in a type safe language. They invented this new language, Sing#, which is derived from c#, everything is in Sing# and like Java you can't just say p= random & *p=0, the language doesn't allow that.
是微软发起的一项有意思的项目, 他们用一种类型安全的语言从头开发整个运行在单地址空间内的系统. 他们发明了一种新的编程语言Sing#, 从C#派生而来, Sing#的一切很像Java, 你没法执行p= random & *p=0这样的语句, 因为这是语言本身所禁止的.
It's a type-safe language, it's very restrictive with what you can do, and all the components talk to each other in the same address space over these, what you might call, "named pipes".
这是一种类型安全的语言, 当然导致它在功能上非常受限, 在同个地址空间内的不同组件通过”命名管道”来通讯.
A pipe has a protocol and the protocol is described in a formal language -- you send a message to someone of this type and they send back either an A, a B or a C back to you and so on.
管道是一种用形式语言描述的协议 – 你发送消息给某类型的组件它返回A, B, C等等之一状态.
You have to write that all down in a formal language and the system can verify that you are doing what you claim to be doing because you have formally specified what the protocol is over that channel.
你必须将你要的功能都用该形式语言来描述, 系统有权对你请求做出调整.
So they can come very close to having a provably correct system because they have forced you in the language to say what the protocol is over all these things.
因此, 这可以成为一个零出错的系统, 因为它可以从编程语言上对你做出很多限制.
It's a very interesting development, they've made it working and so on, it's an interesting approach. It's not compatible with Windows, it's not compatible with Unix, it's not compatible with anything in the known universe, which is going to be a marketing issue for them.
这些研究很有趣, 目前看了它还运作得不错, 有意思的方式. 但, 它不兼容Windows, Unix, 已经其他任何现存的OS, 所以它存在严重的市场问题.
But they have demonstrated that it can be done, that's one approach. On virtual machines they have some potential, but it is a clumsy way of doing things I think, of running all the drivers in separate virtual machines. Using a process is good enough, you don't need a whole machine for it.
The approach, Uni of Washington, is to wrap them, keeping all the drivers in the kernel, but wrap them so all interaction between the operating system and the drivers goes through the Nooks layer, and it checks to make sure that everything is OK. If you're doing something you shouldn't be doing, the Nooks layer catches it and flags it somehow -- that's another approach.
是另一种方法, 它虽然也把驱动程序放在内核中, 但每个驱动都有一个封装壳, 驱动与OS的所有交互都将通过Nooks层, 由它检查确保是否正常. 如果你打算执行不应该执行的操作, 那么Nooks层肯定会捕获并以某种形式通知OS.
There's a bunch of people working on other approaches; I'm not claiming that this is the only way to go but I think it is potentially a very good way.
还有许多人在研究其他方法, 我并不强迫大家只采用我的方式, 但我坚信我的方法潜力无限.
Finally, what should developers keep in mind when designing programs to be portable on microkernel based systems?
最后, 程序员为基于微内核的系统开发程序时他们应该记住些什么?
Stick to the POSIX interface -- pretty much all microkernels that are aimed at the desktop world to some extent, support the POSIX interface.
POSIX接口 – 绝大多数面向桌面的微内核都有被扩展以便支持POSIX接口.
Use ANSI standard C -- do not use any extensions from GNU or gcc or anything else. Stick to ANSI C, stick to the POSIX interface and other things that have been standardised. Stick to standards!
使用ANSI标准化C – 不要用GCC或其他任何扩展过的C. 记住ANSI C, POSIX接口, 以及其他已标准化的事物. 标准, 标准, 这非常重要!
Microkernels and most other systems support the standards, it's when you start using weird extensions that somebody made, in-line assembly code and things, that you are going to hang yourself.
微内核和绝大部分系统都支持这些标准, 如果你使用由个人扩展过的”标准”或内联汇编代码, 那么无疑你是自找罪受.
If you stick to the standards in terms of the language, the libraries, the operating system calls, there is a pretty good chance that it will run anywhere.
如果你严格使用标准化的编程语言, 代码库, OS调用等, 那么开发出的程序可以运行在任何环境中.
It's when you use these weird extensions that you're going to hang yourself.
为了不让自己受累, 请别使用非标准化的东西.