Beta

Slashdot: News for Nerds

×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Tanenbaum-Torvalds Microkernel Debate Continues

ScuttleMonkey posted more than 8 years ago | from the arguements-that-never-die dept.

534

twasserman writes "Andy Tanenbaum's recent article in the May 2006 issue of IEEE Computer restarted the longstanding Slashdot discussion about microkernels. He has posted a message on his website that responds to the various comments, describes numerous microkernel operating systems, including Minix3, and addresses his goal of building highly reliable, self-healing operating systems."

cancel ×

534 comments

To Interject for a moment (5, Informative)

AKAImBatman (238306) | more than 8 years ago | (#15335793)

Since I know that this story is going to turn into flame-fest central, I'm going to try to head things off by interjecting an intelligent conversion about some issues that are on my mind at the moment.

First and foremost, does anyone have a torrent of Minix3? Tanenbaum is a bit worried [google.com] about getting slashdotted. If you've got one seeded, please share.

Now with that out of the way. I don't know if anyone else has tried it yet, but Minix3 is kind of neat. It's a complete OS that implements the Microkernel concepts that he's been expounding on for years now. The upsides are that it supports POSIX standards (mostly), can run X-Windows, and is a useful development platform. Everything is very open, and still simple enough to trudge through without getting confused by the myriads of "gotchas" most OS code-bases contain. Unfortunately, it's still a long way from a usable OS.

The biggest issue is that the system is lacking proper memory management. It currently uses static data segments which have to be predefined before the program is run. If the program goes over its data segment, it will start failing on mallocs. The result is that you often have to massively increase the data segment just to handle the peak usage. Right now I have BASH running with a segment size of about 80 megs just so I can run configure scripts. That means that every instance of BASH is taking up that much memory! There's apparently a Virtual Memory system in progress to help solve this issue, so this is (thankfully) a temporary problem.

The other big issue is a lack of threading support. I'm trying to compile GNU PThreads [gnu.org] to cover over this deficiency, but it's been a slow process. (It keeps failing on the mctx stack configuration. I wish I understood what that was so I wouldn't have to blindly try different settings.)

On the other hand, the usermode servers do work as advertised. For example, the network stack occasionally crashes under VMWare. (I'm guessing it's the same memory problems I mentioned earlier.) Simply killing and restarting dhcpd actually does get the system back up and running. It's kind of neat, even though it does take some getting used to.

All in all, I think it's a really cool project that could go places. The key thing is that it needs attention from programmers with both the desire and time to help. Tossing lame criticisms won't help the project reach that goal. So if you're looking to help out a cool operating system that's focused on stability, security, and ease of development, come check out Minix for a bit. The worst that could happen is that you'll decide that it isn't worth investing the time and energy. And who knows? With some work, Minix might turn out to be a good alternative to QNX. :-)

Re:To Interject for a moment (-1, Offtopic)

Anonymous Coward | more than 8 years ago | (#15335869)

which is all very interesting but there's one thing that's really been bugging me. Does the batmobile run on biodiesel?

Re:To Interject for a moment (2, Informative)

bhirsch (785803) | more than 8 years ago | (#15335949)

What's bugging me is that it is a mini-review of the OS and has nothing to do with monolithic vs. micro kernel debate.

Re:To Interject for a moment (5, Insightful)

AKAImBatman (238306) | more than 8 years ago | (#15336088)

You-betcha. I honestly think Mr. Tanenbaum is wasting his time in replying to Slashdot. If the last article proved anything, it's that the majority of responders were stuck on the whole "Linus 'won' this over a decade ago, so STFU!" (No one really 'won' the argument, but that's beside the point.)

There were a couple of good replies in there, but they all got drowned out in the noise. Soooo, I think it's a better idea to focus on how Minix might be made a viable OS rather than arguing the same nonsense all over again. As several of the posters here have already proven, they're not reading Tanenbaum's arguments anyway. So why should we expect this time be any different than the last?

Re:To Interject for a moment (1)

jedidiah (1196) | more than 8 years ago | (#15336220)

I find it rather illuminating that the flagship implementation of his ideas are missing a few key elements. His list of microkernels actually in use was also interesting. Most were speciality embedded systems (like QNX). Only one was a general purpose system (MacOS 10) and I am not sure that one even applies (being much like NT in terms of "microkernel-ness".

Re:To Interject for a moment (-1, Offtopic)

Anonymous Coward | more than 8 years ago | (#15335990)

Does the batmobile run on biodiesel?

Of course not! The Batmobile is a highly sophisticated rocket engine that runs on Liquid Hydrogen/Oxygen, that gets automatically refueled in the Batcave everytime he parks. The fuel is cracked from water pulled from the river running under the cave. That way, Batman can use massive amounts of rocket fuel without tipping off any local authorities to his whereabouts through large orders of hazardous materials.

Duh.

Re:To Interject for a moment (-1, Offtopic)

Anonymous Coward | more than 8 years ago | (#15336033)

Of course not. The bat-turbine burns aviation grade kerosene.

Page based sockets? (4, Interesting)

goombah99 (560566) | more than 8 years ago | (#15335905)

It seems to me the whole issue boils down to memory isolation. If you always have to pass messages to communicate you have good isolation but costly syncronization of data/state and hence potential performance hits. And vica versa: Linux is prone to instability and security breaches from every non-iolated portion of it.

As I understand it, as a novice, the only way to communincate or syncronize data is via copies of data passed via something analogous to a socket. A Socket is a serial interface. If you think about this for a moment, you realize this could be thought of as one byte of shared memory. Thus a copy operation is in effect the iteration of this one byte over the data to share. At any one moment you can only syncronize that one byte.

But this suggests it's own solution. Why not share pages of memory in parallel between processes. This is short of full access to all of the state of another process. But it would allow locking and syncronization processes on entire system states and the rapid passing of data without copies.

Then it would seem like the isolation of mickrokernels would be fully gained without the complications that arrise in multi processing, or compartmentalization.

Or is there a bigger picture I'm missing.

Re:Page based sockets? (2, Interesting)

after fallout (732762) | more than 8 years ago | (#15336079)

As I read this, it seems quite analogous to objects in C++ (or any other OOL). All kernel interfaces could publish the data they want to have public, and hide the data that is private to the implementation of the feature.

I would suggest that this will eventually make its way into kernel systems (just like any other good idea that has come from the programming language fields).

Re:Page based sockets? (3, Interesting)

nuzak (959558) | more than 8 years ago | (#15336091)

> But this suggests it's own solution. Why not share pages of memory in parallel between processes.

This is precisely what shared memory is, and it's used all over the place, in Unix and Windows both. When using it, you are of course back to shared data structures and all of the synchronization nastiness, but a) sometimes it's worth paying the complexity price, and b) sometimes it doesn't actually matter if concurrent access corrupts the data if something else is going to correct it (think packet collisions).

Still, if you have two processes that both legitimately need to read and write the same data, you probably need three processes. The communication overhead with the third process is usually pretty negligible.

There's even more exotic concurrency mechanisms that exist that don't require copying or even explicit synchronization, but they're usually functional in nature, and incompatible with the side-effectful state machines of most OS's and applications in existence today.

Re:Page based sockets? (2, Interesting)

goombah99 (560566) | more than 8 years ago | (#15336225)

Perhaps I'm mistaken, but Isn't shared memory essentially available to the entire macro-kernel and all it's processes. Something more fine grained like a page based socket would let two processes agree to communicate. They would be sending messages to each other over a very wide channel: the entire page, not some serial socket.

Some other process could not butt-in on this channel however, since it's not registered to that socket.

Or is that how shared memory works?

Tnnebaum's point is that he can have a re-incarnation server that can recreate a stalled process. Thus by using exclusively message based communication he can assure that this won't disrupt the state of the operating system (because it's all isolated). The problem is when two processes need to share lots of data quickly. THen message passing gets in your way.

Something that had the negotiated nature of a socket, yet allowed two processes to syncronize their large data structures without passing the entire structure serially would be ideal. then you could still potenitally have things like a re-incarnation server. A new process would simply have to re-negotiate the socket.

Race conditions? (1)

dhasenan (758719) | more than 8 years ago | (#15336139)

If it's shared memory that I pass to the kernel, and I have an application that doesn't parallelize well, then I'm sending pages off to the kernel quite often. That means the kernel uses a lot of memory.

There are two options: the kernel could combine pages, either physically or logically; or the kernel could leave that page open for writing by the application in question.

The easiest way would be for each application to have a page or set of pages for sending messages to the kernel; the application would view the space as an eternally long section of write-once memory. When the kernel was done with the beginning of the shared page, the application could start writing to the beginning.

Also, don't we usually get buffered sockets? That way, I can send a megabyte to another process that's not currently listening, and continue on with my business before it even bothers to read. So we don't really have a problem, except buffer overflows (which are probably realized by overwriting the buffer).

I don't think it's about works vs not works. (2, Insightful)

khasim (1285) | more than 8 years ago | (#15335907)

From what I've seen of this "debate", it's all about what each group believes is (are) the most important aspect(s) of the kernel.

Oblig auto analogy:
If hauling cargo is your primary objective, then you'll probably view motorcycles as badly designed while seeing vans and trucks as "better".

Only time (and code) will show which approach will result in all of the benefits of the other approach without any unacceptable deficiencies.

Re:I don't think it's about works vs not works. (4, Insightful)

JPribe (946570) | more than 8 years ago | (#15336046)

You're on to something...you are very close to the cache. Why are we "debating" this when the asnwer seems very clear once one takes a step back: They (the kernels) can exist in harmony, each in its own place. Tanenbaum makes a decent showing of examples about where and why micros are used. This isn't a "which is better" argument. This should be a "where is one better utilized than the other in situation X" debate. That flamewar I could tolerate. Bottom line is that neither will replace the other, at least in a timely enough manner that it is worth wasting time over now.

Re:I don't think it's about works vs not works. (-1, Troll)

Anonymous Coward | more than 8 years ago | (#15336252)

It sounds to me that Andy Tanenbaum needs to write more code and less theory and than his micro-kernel will lift off the ground. However GNU/Linux would not be possible without a stable, reliable, fast, and free (speech & beer) kernel. This just shows all of you inspiring kids out there that what seems like a good theory on paper, is somewhat lack-luster when it comes to the actual execution. Maybe Andy should have given a little bit more of his time to his hobby and a little less time in writing books.

There is nothing wrong with the microkernel nor the monolithic kernel, except:
1 - A microkernel requires a full fledged development team with all the beatiful red-tape and secret meetings that follow. Heil to the theif right? :)
2 - There is currently no viable microkernel alternative to the monolithic linux after 15 years of debate.
3 - There is & has been a debate over monolithic vs microkernel for 15 years? Where is minix today and where is linux? There is a debate about monolithic vs microkernel?
4 - Andy smells bad.

Sometimes what seems good in theory fails in practice, and id reather have a relic of a linux box than a stable, secure, and ultra-portable system like windows.

-- Cheers.

Re:To Interject for a moment (3, Funny)

dr_dank (472072) | more than 8 years ago | (#15336009)

Since I know that this story is going to turn into flame-fest central

Damn right, this'll be better than the less filling/tastes great argument.

Re:To Interject for a moment (5, Funny)

rcamans (252182) | more than 8 years ago | (#15336086)

Whoo, there, good buddy. Actually I have seen some pretty entertaining videos of less filling / tastes great cat fights on the internet lately. Now, if someone wants to post videos of supermodels catfighting over microkernel / linus, I would then get pretty excited over the whole debate.
Wait a minute, too much information here...

Re:To Interject for a moment (2, Interesting)

rcs1000 (462363) | more than 8 years ago | (#15336060)

Try doing what I do with Minix3: run it in VMWare, allocate it 4GB of RAM, and let VMWare do your virtual memory manegement.

(Yes, I know it's an ugly hack. But it means I don't worry about giving Bash 120mb, and cc some enormous number...)

Re:To Interject for a moment (1)

timeOday (582209) | more than 8 years ago | (#15336227)

the network stack occasionally crashes under VMWare.... Simply killing and restarting dhcpd actually does get the system back up and running. It's kind of neat, even though it does take some getting used to.
I think I'd prefer the Linux network stack, which AFAIK simply doesn't crash in the first place.

Which gets back to the heart of the matter - is runtime modularity in a kernel worth it? It's very hard for me to see the justification for general computer usage, when both Linux and Windows seem to be very reliable. (I'll leave the embedded guys to hold their own side discussion :)

BY FAR my biggest qualm with Linux is that it doesn't have support for some of the zillions of hardware devices out there (or for certain features of those devices)... in other words, microkernels don't address the problem I care about.

Grandma's computer never crashes (4, Funny)

robla (4860) | more than 8 years ago | (#15335800)

Tanenbaum wrote (in TFA):The average user does not care about even more features or squeezing the last drop of performance out of the hardware, but cares a lot about having the computer work flawlessly 100% of the time and never crashing. Ask your grandma.

Interesting. My mom recently bought a computer for my grandma. Grandma doesn't have a problem with the computer crashing at all. Her secret? She never turns it on.

Re:Grandma's computer never crashes (0)

Anonymous Coward | more than 8 years ago | (#15336318)

She uses that same trick on Grandpa

So when did we forget... (4, Insightful)

JPribe (946570) | more than 8 years ago | (#15335820)

When did we collectively forget that everything has its place...I doubt I'll ever see anything but a monolithic kernel on my desktops. No different than any given OS having its place. Windows and Ubuntu (until something better) will live on my desktops, not on my server. Why can't we just all get along?

Apples and Oranges (0)

Anonymous Coward | more than 8 years ago | (#15336089)

I doubt I'll ever see anything but a monolithic kernel on my desktops.

Too bad you are denying yourself the pleasure of using Mac OS X...

Yes, Mac OS X's kernel is a microkernel, and yes, most of it is Mach based, and NO, it is not BSD based (while most of the userland is essentially a copy of BSD 4.2, with some later FreeBSD "contributions', very little of kernel has any *BSD in it).

Factual overview: http://developer.apple.com/macosx/architecture/ind ex.html [apple.com]

Fanboy overview: Obsolete Microkernel Dooms Mac OS X to Lag Linux in Performance [linuxjournal.com]

Re:Apples and Oranges (0)

Anonymous Coward | more than 8 years ago | (#15336202)

Yes, Mac OS X's kernel is a microkernel,

Tanenbaum (the microkernel king) disagrees with you (from the article we're discussing):
Mac OS X is sort of microkernelish. Inside, it consists of Berkeley UNIX riding on top of a modified version of the Mach microkernel. Since all of it runs in kernel mode (to get that little extra bit of performance) it is not a true microkernel, but Carnegie Mellon University had Berkeley UNIX running on Mach in user space years ago, so it probably could be done again, albeit with a small amount of performance loss, as with L4Linux. Work is underway to port the Apple BSD code (Darwin) to L4 to make it a true microkernel system./blockquote

Andy Tanenbaum ? (0)

denisbergeron (197036) | more than 8 years ago | (#15335835)

Somebody can enligth me about Andy Tanenbaum ?
Who he is ?
Did he ever create a running kernel ?
Which one ?

Re:Andy Tanenbaum ? (1)

gvc (167165) | more than 8 years ago | (#15335857)

He wrote, along with several text books, Minix, which Linus used as an inspiration, and development platform, for Linux.

Re:Andy Tanenbaum ? (2, Informative)

robla (4860) | more than 8 years ago | (#15335870)

Somebody can enligth me about Andy Tanenbaum ?

Read Tanenbaum's Wikipedia bio [wikipedia.org] .

Re:Andy Tanenbaum ? (1)

winkydink (650484) | more than 8 years ago | (#15335878)

http://en.wikipedia.org/wiki/Andrew_S._Tanenbaum [wikipedia.org]

Tanenbaum had a doctorate before Linus was potty trained.

Re:Andy Tanenbaum ? (2, Interesting)

Herkum01 (592704) | more than 8 years ago | (#15336022)

Linus has written the Linux kernel used in millions of computers ranging from PCs to Mainframe.

Tanenbaum still has Minix and doctorate.

Education means nothing if you do nothing with it. Linus has applied his education very well and progress well beyond anything Tanenbaum has accomplished, with or without a doctorate...

Re:Andy Tanenbaum ? (1)

jelle (14827) | more than 8 years ago | (#15336040)

"Tanenbaum had a doctorate before Linus was potty trained."

And tanenbaum now comes up with a kernel on which programs have problems doing malloc [slashdot.org] for dynamic memory allocation???

Goes to show who moves like a glacier and who swims around its icebergs in circles... like a penguin.

Re:Andy Tanenbaum ? (1)

Locke2005 (849178) | more than 8 years ago | (#15336122)

Tanenbaum had a doctorate before Linus was potty trained.

Perhaps so, but which one of them is wearing diapers NOW?

Re:Andy Tanenbaum ? (1)

jedidiah (1196) | more than 8 years ago | (#15336247)

[really bad in joke]

Does that mean that he's a dinosaur?

If he is in fact a dinosaur, what kind is he?

[/really bad in joke]

Go check the article out. (4, Informative)

rdunnell (313839) | more than 8 years ago | (#15335881)

He developed Minix along with tons of other research work in distributed systems, networks, and other computer science topics.

If you have a computer science degree you have probably used at least one if not more of his textbooks. He's one of the more prominent computer science researchers of the last couple decades.

Re:Go check the article out. (1)

Durandal64 (658649) | more than 8 years ago | (#15336112)

If you have a computer science degree you have probably used at least one if not more of his textbooks.
His book on computer organization was one of the worst pieces of crap I've ever been forced to drop cash on. He frequently goes off on tangents and spends more time trying to be clever than clearly explaining the material. I fucking hate Tanenbaum, even though I like micro-kernels.

Re:Andy Tanenbaum ? (2, Interesting)

fistfullast33l (819270) | more than 8 years ago | (#15335892)

I know you're being facetious (comon, mod points for the SAT word), but for those who don't know, Andrew Tanenbaum is covered at Wikipedia [wikipedia.org] . His textbook, Modern Operating Systems, is probably one of the most widely used and excellent resources on the subject. He also likes to get into flame wars with Linus Torvalds when he gets bored. This is ironic because supposedly Linus used Tanenbaum's Minix as a starting point and influence for Linux.

Re:Andy Tanenbaum ? (4, Insightful)

Zontar_Thing_From_Ve (949321) | more than 8 years ago | (#15336094)

He also likes to get into flame wars with Linus Torvalds when he gets bored.

Really? And what exactly do you base this on? According to the article, which it's clear that you did not read, Tanenbaum simply had a recent article printed in IEEE Computer and someone on Slashdot posted a link to it, which caused Linus to weigh in with his 2 cents about something that was never directed at him. It sounds more to me like Linus is obsessed with proving that macrokernels are the only way to go. Why does he even care? It's not like Minix is a threat to Linux. If he believes so strongly that microkernels are wrong, he should just let Tanenbaum and company waste their time on them instead of endlessing arguing the same points he made years ago.

Re:Andy Tanenbaum ? (0)

Anonymous Coward | more than 8 years ago | (#15336099)

Unfortunately, you only get the mod points if you use the word correctly. A person's comments may be facetious, but in the context you're speaking, the person himself was not "being facetious."

Re:Andy Tanenbaum ? (0)

Anonymous Coward | more than 8 years ago | (#15336290)

I know you're being facetious (comon, mod points for the SAT word)

+0.5 for facetious, -100 for "comon" instead of "come on". Sorry, you might have wanted to sound smart, but you still ended up sounding like a moron.

Re:Andy Tanenbaum ? (1)

SirTalon42 (751509) | more than 8 years ago | (#15335902)

He created Minix, the OS Linus Torvalds (the creator of the Linux kernel, which is the 'kernel' of an operating system, which if you need to have that explained, please leave slashdot and never return) used before and during his creation of Linux. Tanebaum and Torvalds had a long flamewar over microkernel vs monolithic kernels back in the early days of Linux development (you can find it with a bit of searching, its pretty entertaning, especially the parts where Tanebaum predicts the future).

Minix was an Microkernel OS that was meant as a teaching tool.

Re:Andy Tanenbaum ? (1)

SpinJaunt (847897) | more than 8 years ago | (#15336054)

Linus Torvalds (the creator of the Linux kernel, which is the 'kernel' of an operating system, which if you need to have that explained, please leave slashdot and never return)
Are these the Minimum Requirements like you find on the back of software packaging? If so, in 18months time, we'll all need to understand quantum physics!?.

Re:Andy Tanenbaum ? (2, Informative)

TheRaven64 (641858) | more than 8 years ago | (#15336015)

Did he ever create a running kernel ?

No, actually he created two that I know of. Well, technically three since MINIX 3 is probably sufficiently different from MINIX 1 to be thought of as a different kernel. Amoeba was another microkernel-based OS designed to run on distributed systems, presenting an entire cluster as a single machine.

MINIX 1 was a teaching tool. MINIX 3 is a real OS, although still very young (less than two years old), but doing very well. Amoeba is so far ahead of Linux conceptually that they don't even belong in the same category.

Re:Andy Tanenbaum ? (1)

maxwell demon (590494) | more than 8 years ago | (#15336134)

Well, given the names, I'd guess there also was a MINIX 2 in between.

Re:Andy Tanenbaum ? (1)

szembek (948327) | more than 8 years ago | (#15336136)

I've only heard of Royal

Re:Andy Tanenbaum ? (0, Flamebait)

TheBogie (941620) | more than 8 years ago | (#15336191)

Tanenbaum pops up from time to time to give people lip. Eventually Linus gets fed up and smacks him down with sound arguments (Linus has won every argument thus far). If he keeps to schedule, Tanenbaum should go away soon and come back about 18 months from now with some other silly concern.

Still Debating (-1, Flamebait)

Your Anus (308149) | more than 8 years ago | (#15335841)

Wasn't this debate won by Linus Torvalds 15 years ago? If microkernels were such a big win, we would be using them today. Did Andy Tennenbaum find some magical messaging protocol that works faster than shared memory?

Re:Still Debating (4, Insightful)

GReaToaK_2000 (217386) | more than 8 years ago | (#15335919)

yeah, and in that same vein we'd all have Betamax players.

I am NOT implying that uKernels are better, I am playing devils advocate.

Not everything that "wins" is the best... Look at Windows :-D!

Re:Still Debating (0)

Anonymous Coward | more than 8 years ago | (#15336175)

"Look at Windows :-D!"

I'm looking, I think it beats any Linux distro by a mile personally,

Re:Still Debating (1)

Kjella (173770) | more than 8 years ago | (#15336234)

yeah, and in that same vein we'd all have Betamax players.

Just ignoring such things as costs, it's different if you compare e.g. VHS vs Betamax or HD DVD vs Blu-Ray, because obviously 25GB > 15GB but the costs are different too. Linux is free, whatever Tanenbaum is making I presume is free as well... I think price parity means you normally go with the best technical solution. The only rationality I could find for a "comeback" of the microkernel would be if the size and complexity of the 2.6 kernel is getting out of hand but it makes little sense unless some parts of the kernel could be allowed to be unstable, as long as they didn't bring the house down. What parts would that be?

Re:Still Debating (2, Insightful)

TheBishop613 (454798) | more than 8 years ago | (#15335928)

Using that same logic, shouldn't everyone just abandon Linux as Windows is clearly better? If Linux were superior the vast majority would be using it today.

Personally, I don't care either way in the micro/macro kernel debate. As long as we have people still interested in both its a win-win situation for us computer enthusiasts.

Re:Still Debating (1)

onedobb (868860) | more than 8 years ago | (#15336155)

Well for example if Toyota cars are better then why isn't everyone driving them? It takes a while before it is widely addopted. Linux may be better but it takes a long time before the majority will change to something different. By the way, No I don't own a Toyota nor work for them, I got a Dodge. Also I don't run Linux, I use Windows. I don't deny that Linux may be better than Windows. It's all in personal preference.

Re:Still Debating (1)

goombah99 (560566) | more than 8 years ago | (#15335936)

I think the real issue here that brings this argument full circle is that when speed for basic operations was an issue then Linux wins. But in todays world we have plenty of fast CPUs. What we lack is stability and the ability to architect robust systems in a scalable manner. For applications that require every ounce of speed, well only those that actually interact with the OS will notice much differnce between Micro-kernel and linux. So this is not to say that the whole computer is slow under micro kernel.

Re:Still Debating (1)

jedidiah (1196) | more than 8 years ago | (#15336311)

Perhaps someone should tell you about those 1000 cpu machines from SGI, the 100 cpu machines from Sun Microsystems, the 64 cpu machines from IBM and the 100+ machine database clusters from Oracle.

All of this has been achieved in the conspicuous ABSENCE of microkernels. If Andy's ramblings were relevant in practice, you would expect at least one of the serious big machine server vendors to have taken them up. The fact that Dr. Tannenbaum is pretty much stuck pointing to cablemodem routers and cellphones pretty much proves Linus's original point.

Re:Still Debating (1)

cnettel (836611) | more than 8 years ago | (#15336314)

However, the micro kernels are slow in ways that are among the bottlenecks still on the machines of today, like requiring significant memory copies (or very flexible page mapping), context switches and so on. If an everyday and "mundane" task like copying files to an iPod (or, worse, another harddrive) is slowed down significantly, the debate gets far less theoretical.

Re:Still Debating (2, Informative)

Respawner (607254) | more than 8 years ago | (#15335961)

yeah, I wish we used microkernels today, mayby we could put it in OS X or something else nobody uses, oh wait ...

Re:Still Debating (1)

Perl-Pusher (555592) | more than 8 years ago | (#15335986)

Which is why OS X is terrible at threading.

Re:Still Debating (1)

Pope (17780) | more than 8 years ago | (#15336129)

XNU's a weird hybrid mishmash, and I can hardly wait for some real low-level system rewriting to happen to OS X to make it even better.

Debate on. Microkernels will win in the end. (2, Interesting)

HornWumpus (783565) | more than 8 years ago | (#15336000)

Microkernels were too performance expensive in the CPU cycle starved 80s. The extra context switching overhead was unacceptable. (e.g. video performance of NT 3.51. IIRC 4 context switches per pixel drawn.)

In the CPU cycle flush 00s the debate is just different. Less code running at ring0 means less code that can cause a kernel panic, blue screen or whatever they call it in OSX.

A significant part of the market is OK running Java. The comparitivly small performance cost and high stability payoff of a microkernel makes the tradeoff a no-brainer.

Re:Still Debating (0)

Anonymous Coward | more than 8 years ago | (#15336026)

I could be wrong, but I suspect that it was almost chance that decided that Linux rather than Minix became the OSS bandwagon OS. I think the the world was ready for a free OS at that time, and if Tanenbaum had released Minix under a license that allowed others to build on it instead of a more restrictive license, then Tanenbaum would be in the hero's position that Torvalds has been placed in. And we might all be running on microkernels now. Both of them produced viable OS kernels at a similar time, and only the choice of license applied to them decided which would see widespread adoption. And I'm sure if Torvalds had also chosen a restrictive license, someone else would have taken his place pretty soon after. Linus just hit the magic combo of right time and right license.

I would rather like to see what Minix would have grown into it things had gone the other way.

Re:Still Debating (1)

dhasenan (758719) | more than 8 years ago | (#15336272)

On the other hand, Tanenbaum admits that you need more complex algorithms with microkernels. You might have ended up with a smaller pool of kernel hackers, retarding the progress of Linux.

So let's create another world and train it up the same way, but have Minix be GPL'd from the start. Then we can say how it would have turned out.

Re:Still Debating (3, Interesting)

Arandir (19206) | more than 8 years ago | (#15336045)

That's a very good point, and one that people keep forgetting. If microkernels are so great, where are they? Let's take a look at notable microkernels:

* QNX Neutrino. This is the most successful microkernel ever. It deserves all the praise it gets. Yet it is still a niche product.

* Hurd. After twenty years we're still waiting for a halfway stable release. Hurd development is almost an argument *for* monolithic kernels!

*Minix. This is still an educational kernel. A teaching tool. It remains unsuitable for "real world" use.

* Mach. People claim OSX is a microkernel since it is built on top of Mach. But that ignores the real world fact that OSX is monolithic. People have been misled by the name.

* NT. This is NOT a microkernel! You don't believe anything else Microsoft says, so why do you believe this fairy tale?

In short, QNX is the only successful real world Microkernel. Linus happens to be right on this one: microkernels add too much complexity to the software. From ten thousand feet the high level architecture looks simple and elegant, but the low level implementation is a fraught with difficulties and hidden pitfalls.

Re:Still Debating (1)

non (130182) | more than 8 years ago | (#15336240)

there's always these pistachio [l4ka.org] people, and i've heard you can even run linux on top of it.

SE Linux (1)

Dark Coder (66759) | more than 8 years ago | (#15335844)

If the Secured Edition Linux policy along with BSD's nearly error-free coding is merged with Minix3 along with POSIX capability support, then we have a good start.

I'd be glad to give all my Windows platform for one Über-secured OS.

Re:SE Linux (1)

Aranth Brainfire (905606) | more than 8 years ago | (#15336137)

All your Windows platform are belong to us. You have no chance to survive make your time.

From the horse's mouth (0)

Anonymous Coward | more than 8 years ago | (#15336185)

"Those who give up liberty for security, deserve neither"
Thomas Jefferson

Plug central (1, Insightful)

Anonymous Coward | more than 8 years ago | (#15335899)

While I generally agree with the points he makes, I did think his MINIX plug was a bit disingenuous:

Virtually all of these postings have come from people who don't have a clue what a microkernel is or what one can do. I think it would raise the level of discussion if people making such postings would first try a microkernel-based operating system and then make postings like "I tried an OS based on a microkernel and I observed X, Y, and Z first hand." Has a lot more credibility.

The easiest way to try one is to go download MINIX 3 and try it.

Well, no. You can't seriously believe that running MINIX is going to magically give you expertise that lets you talk about operating system kernel design. You can't even use it to show that microkernels aren't that slow, because MINIX is going to seem way faster than your average Linux distribution loaded down with KDE or GNOME because you are comparing apples to oranges.

It just seems like it's a stupid, obvious plug, and I think that's beneath him.

Re:Plug central (0)

Anonymous Coward | more than 8 years ago | (#15336024)

You can't even use it to show that microkernels aren't that slow, because MINIX is going to seem way faster than your average Linux distribution loaded down with KDE or GNOME because you are comparing apples to oranges.

Of course, you could always disable KDE/GNOME and just launch X itself, just like Minix3 can.

Re:Plug central (1)

DarkOx (621550) | more than 8 years ago | (#15336222)

True but MIXIX is a teaching OS and it is very effective as far as its ability to clearly show OS concepts. It is extreemly clean and easy to understand and start hacking on. I have to say working with MINIX was one of the most positive experiences in the Operating systems course I took when I was in school. It is not useful as a platform, mostly because of file system limitations, 64meg file size cap sorta sucks; but it is a great way to learn how things are done, and it is perhaps the ONLY true micro-kernel which can do anything more then boot on the hardware most people have access too.

Also removing that 64meg limit would be childs play. Removing that limit and keeping good performance would be an interesting project. It has perhaps already been done I have not looked at minix3 only prior versions.

Re:Plug central (1)

aramael (892701) | more than 8 years ago | (#15336233)

You can't seriously believe that running MINIX is going to magically give you expertise that lets you talk about operating system kernel design.

I think that Dr Tannenbaum may have been aiming his comments at the many people who talk about microkernels without any experience whatsoever. Surely at least running one puts you a tiny little rung above that.

Nothing's better than real challenge (-1)

VincenzoRomano (881055) | more than 8 years ago | (#15335910)

I'm personally not sure which one is really really right, Maybe none.
Maybe both.
Why not doing a "proof of concept" instead of battling?
It seems that a real world challenge would put an "end" to this story.
Both Tanenbaum and Torvalds can teach a lot in OS design and implentation. If they don't agree, thay have to proof their point.
Real proof, I mean, on real hardware.
Whatever the final answer is, we all will thank both for the challenge.
But, definitely, I think a real proof is needed.

Celebrity death-coding (1)

everphilski (877346) | more than 8 years ago | (#15335957)

Why not doing a "proof of concept" instead of battling?

Torvalds vs. Tanenbaum ... fight!

Re:Celebrity death-coding (1)

Thud457 (234763) | more than 8 years ago | (#15336147)

Torvalds vs. Tanenbaum ... fight! [googlefight.com]

Re:Celebrity death-coding (2, Funny)

maxwell demon (590494) | more than 8 years ago | (#15336183)

Here's the fight! [googlefight.com]

Under what conditions? (1)

harmonica (29841) | more than 8 years ago | (#15336036)

It seems that a real world challenge would put an "end" to this story.

How? Those who value performance over security will prefer the monolithic kernel approach, those who value security over performance will go with the micro kernel. In a nutshell, how slow is too slow?

Re:Under what conditions? (1)

VincenzoRomano (881055) | more than 8 years ago | (#15336117)

A real challenge means that the "someone" (the community) should define the minimum requirements to be matched.
For reliability, effectiveness and efficiency.
Maybe one can even define a way to measure these features, so the winner would be declared by measurement!

Re:Nothing's better than real challenge (1)

aramael (892701) | more than 8 years ago | (#15336174)

Both Tanenbaum and Torvalds can teach a lot in OS design and implentation. If they don't agree, thay have to proof their point. Real proof, I mean, on real hardware.

Right on. We can't be the only people who are utterly sick of all this talk, talk, talk. You know, what they should do is go away and just implement their idea of a kernel, which they could release with source, and we could all have a look and decide. But it doesn't count unless it runs on real hardware!

Minix is already on version 3 (5, Funny)

Anonymous Coward | more than 8 years ago | (#15335929)

I'd like to point out that Minix is already FAR FAR *FAR* ahead of Linux in the version numbering war. Minix recently moved to version 3
And Linux seems to be stuck on version 2.6

And v3.12 (I think, I'm going from memory here) will finally support the X windowing system

Oh...maybe I should have left out that last sentence...kinda kills my argument

Re:Minix is already on version 3 (1)

Spy der Mann (805235) | more than 8 years ago | (#15336082)

Minix recently moved to version 3
And Linux seems to be stuck on version 2.6


HAH! Windows was on version 3 SO MANY YEARS AGO. Eat your heart out, Linux!

Anti-reset button fanatic (4, Insightful)

Anonymous Coward | more than 8 years ago | (#15335935)

"TVs don't have reset buttons. Stereos don't have reset buttons. Cars don't have reset buttons."

They may not be labeled "reset" but they *do* have them. And, no offense, but I like having a reset button.

Whatever... (3, Interesting)

MoxFulder (159829) | more than 8 years ago | (#15335977)

Linux is very reliable for me, even on newer hardware with a bleeding edge kernel. Why should I care whether it has a microkernel or monolithic kernel? Everything I deal with is user space. If it runs GNOME, is POSIX-like, and supports some kind of automatic package management, I'll be happy as a clam.

Will hardware drivers be developed faster and more reliably with a microkernel? That seems to be the biggest hurdle in reliable OS development these days... Anyone have a good answer for that, I honestly don't know.

Re:Whatever... (0)

Anonymous Coward | more than 8 years ago | (#15336104)

Why should I care whether it has a microkernel or monolithic kernel?

Because for a start, you won't ever need to dick around with re-compiling your kernel or making sure kernel headers are available. Drivers can be loaded and unloaded as easily as a regular application.

Re:Whatever... (1)

Spy der Mann (805235) | more than 8 years ago | (#15336113)

Why should I care whether it has a microkernel or monolithic kernel?

Because with Microkernel, we could have proprietary drivers *cough* ATI, nVidia *cough* without having to worry about the driver messing up the system.

Re:Whatever... (0)

Anonymous Coward | more than 8 years ago | (#15336157)

Conceptually, driver development with microkernels should be far, far, far faster than with monolithic kernels. With a monolithic kernel, you have to recompile the entire kernel to correct a bug in a single driver, install the new kernel binary, and then reboot the system.

By contrast, if you have a bug in your microkernel driver, you just kill it, recompile only the driver, and reload it! No fancy kernel install required, just load the single driver.

I'm not entirely sure why microkernels don't seem to be used in practice, they are - on paper, at least - far superior to monolithic kernels. But there seems to be something about them in practice that's caused most popular operating systems to move away from them and use monolithic kernels instead. Windows NT used to be a microkernel, but NT4.0 changed to a monolithic kernel and Windows 2000 and XP use that monolithic kernel. NextStep used a microkernel (I think), but Mac OS X instead uses a monolithic kernel based on BSD.

I have a feeling that it's easier to write a monolithic kernel than a microkernel, despite the fact that a microkernel should in theory be less complicated, more robust, more secure, and easier to write drivers for. The fact that they aren't used in more desktop OSes suggests that there's some advantage to the monolithic kernel in terms of development time. It certainly isn't stability (as the infamous Blue Screen of Death proves), so it must be development time. I guess monolithic kernels are just easier to understand and write.

Only one way to settle this! (0, Offtopic)

Treeluvinhippy (545814) | more than 8 years ago | (#15335995)

Tanenbaum vs. Torvalds fight to the death in the THUNDERDOME!

Two men enter! One man leaves!

Except for Master Blaster. But that midget was really more of an accessory so I guess it's still within the rules. Master was the brains of the Master Blaster combo, so I guess he acted similar to a math co-processor for a i386.

So in future dystopian societies, you can purchase a midget to upgrade your Gladiator? That dosen't seem like such a good deal now does it?

I mean why a midget? It's not like your gladiator needs a brain. Wouldn't the money be better spent on a flamethower or armor? Why a frickin' midget to ride around on his back? Maybe if he was being used for Fastball Specials I can see the point.

Anyways, back on topic... now what was it again?

Re:Only one way to settle this! (1)

waferhead (557795) | more than 8 years ago | (#15336279)

I, for one, welcome our new midget ovelords!

(I know the parrent was off-topic, but c'mon, it was sort of funny!)

Minix 3 screenshots (4, Informative)

mustafap (452510) | more than 8 years ago | (#15336002)


I almost died of boredom looking for them. Here's the link, for the lazy:

http://www.minix3.org/doc/screenies.html [minix3.org]

Re:Minix 3 screenshots (1)

Aladrin (926209) | more than 8 years ago | (#15336261)

Is it just me, or is that an empty page? Or maybe I missed the joke...

All I want to know... (2, Insightful)

Spy der Mann (805235) | more than 8 years ago | (#15336035)

is if we can make a functional distro (i.e. Ubuntu) on top of Minix 3. Is it possible? What must be changed?

ITfailzors (-1, Troll)

Anonymous Coward | more than 8 years ago | (#15336118)

and piss cocktaiL. obsessed - give we need to addrees it simple,

Obsolete Computing Technology (-1, Flamebait)

MOBE2001 (263700) | more than 8 years ago | (#15336178)

The very fact that this subject is still being debated is a sign of the chronic immaturity of the computer industry. Soon, people will begin to realize that we've been doing it wrong ever since Lady Ada wrote the first algorithm (table of instructions) for Babbage's analytical engine. As a result, we are all struggling with a mess of hundreds of operating systems and computer languages that are all competing against each other. Worse, our applications and OSes are buggy and some of us (Brooks) have given up hope of finding a solution. It's a veritable crisis. Switch to a non-algorithmic, signal-based sycnchronous software model and the problem will disappear, along with the interminable, useless debates. After more than a century and a half, I would say the time is just about right for a change of paradigm.

YOU FAIdL IT! (-1, Offtopic)

Anonymous Coward | more than 8 years ago | (#15336187)

*BSD is dying YeT hype - BSD's

There is on "one true solution" (1)

Locke2005 (849178) | more than 8 years ago | (#15336193)

Most real-world operating systems have already traded away the security of a micro-kernel implementation in order to acheive better real-world performance, generally by using a monolithic kernel. I'm sure Linus is well aware that Linux is less robust than it could be (since any driver can crash the kernel) but considers the trade-off worth it to minimize protection ring switches. Micro kernels will never give good performance on x86 machines; come up with a processor where switching context between user mode and kernel mode has zero overhead and then I'll say a microkernel is a great idea.

hey eveybody (5, Funny)

Anonymous Coward | more than 8 years ago | (#15336196)

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones. This has been brewing
since april, and is starting to get ready. I'd like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things).

I've currently ported bash and gcc, and things seem to work.
This implies that I'll get something practical within a few months, and
I'd like to know what features most people would want. Any suggestions
are welcome, but I won't promise I'll implement them :-)

Obligatory Igno Molnar quote (4, Funny)

AcidPenguin9873 (911493) | more than 8 years ago | (#15336209)

"dont forget that Linux became only possible because 20 years of OS research was carefully studied, analyzed, discussed and thrown away."

http://www.ussg.iu.edu/hypermail/linux/kernel/9906 .0/0746.html [iu.edu]

He is, of course, referring to all the research in the '80s and '90s on microkernels and IPC-based operating systems.

"Cars don't have reset buttons." My Prius does... (4, Interesting)

dpbsmith (263124) | more than 8 years ago | (#15336217)

I have never experienced the "stalling" problem that affected a very small number of 2004 and 2005 Priuses last year. (OK, hubris correction, make that "not yet..." although my car's VIN is outside the range of VINs supposedly affected).

It was apparently due to a firmware bug.

In any case, when it happened, according to personal reports in Prius forums from owners to whom it happened, the result was loss of internal-combustion-engine power, meaning they had about of mile of electric-powered travel to get to a safe stopping location. At that point, if you reset the computer by cycling the "power" button three times, most of the warning lights would go off, and the car would be fine again. Of course many to whom this happened didn't know the three-push trick... and those to whom it did happen usually elected to drive to the nearest Toyota dealer for a "TSB" ("technical service bulletin" = firmware patch).

These days, conventional-technology cars have a lot of firmware in them, and I'll bet they have a "reset" function available, even if it's not on the dashboard and visible to the driver.

Re:"Cars don't have reset buttons." My Prius does. (1)

Miniluv (165290) | more than 8 years ago | (#15336310)

Andy's point is that the button isn't on the dash or visible to the user, simply because the vast majority of drivers will never need to push it. The same, sadly, cannot be said about Windows, Linux or MacOS X.

Microkernal Architecture (0)

Anonymous Coward | more than 8 years ago | (#15336223)

The microkernel architecture proposed by Steinbaum et al and approved by Linus Torvalds has been at odds with the general feeling in the community for some time now. If anyone can find an open source alternative to such a conundrum, though, I and many of us kernel hackers would love to hear it. It is unfortunate that such a chain of events has occured that have allowed Steinbaum to politick his way into Linus' good graces and steer the whole linux microkernel architecture in the wrong direction. A good alternative that I have been looking into is the B-ITREX Linux microkernel architecture. It uses a proposed system of microdrivers and interprocessual IDPT splinelet datagrams to interweave the macrodrivers and the active kernel workframe in the most efficient way possible.

Does anybody else have an opinion about the B-ITREX MA? There has been a lot of discussion about it on alt.linux.kernel lateley.

I'm not sure where this is going? (1)

I_redwolf (51890) | more than 8 years ago | (#15336243)

These arguments have been heard before and i'm not exactly sure where this is going?

Micro-kernels sound good, they sound real good. Maybe for desktop systems and the like it isn't that bad of an idea. At least it seems that way on the surface, i'm not really sure Tanenbaum has taken a look at all the facets involved in a modern day system or at least he seems to be neglecting the uphill climb. For small embedded environments where speed or device support isn't a main concern. Micro-kernels will excel for their stability but take a look around and that's not reality or what we have today. We have lots of different hardware, lots of different interfaces and to manage that all via objects it'll just be extremely large.

If you think the linux kernel is big the relevant code for this would be numerous times larger. It just pushes the code from the kernel into userspace and you will definitely need more code to manage and access data structure. So then you'll have to create some sort of server to interact with this piece and that piece of the kernel, to get this piece of information. Linus is right, and has been right on this argument for some time. I'm not of the mindset that it can't be done. If you can isolate your facets and only plan on supporting X number of devices/platforms/chipsets/etc and don't expect any blazing performance. Microkernels are great. Beyond that? With the rate that technology moves, it just becomes a management nightmare.

I don't understand how things have changed since this original argument was made? Faster hardware makes a difference in this argument, but not a major one. The points that should be addressed are manageability, growth and sharing. None of which have been addressed really besides the darwin kernel; OS X. Which as successful as it is, proves at least one point. The performance is extremely slow. With more memory it's not as bad but still; slow. I'm not even sure why Linus responded in the first place.

I should be working... (4, Interesting)

StevenMaurer (115071) | more than 8 years ago | (#15336264)

...so I can't spend a lot of time in dicussing this, but I always that the main benefit of micro-kernels is completely wasted unless you actually have utilities that can work in partially-functioning environments. What good is it to be able to continue to run a kernel even with your SCSI drive disabled, if all your software to fix the problem is on the SCSI drive?

Now in theory I could see a high-availability microkernel being a good, less expensive alternative, to a classic mainframe environment, especially if you had a well written auto-healing system built in as a default. But that would require a lot of work outside the kernel that just isn't being done right now. And until it is, micro-kernels don't have anything more to offer than monolithic kernerls.

To put it in API terms - it doesn't matter very much whether your library correctly returns an error code for every possible circumstance, when most user level code doesn't bother to check it (or just exits immediately on even addressable errors).

Speed vs Reincarnation (1)

logicnazi (169418) | more than 8 years ago | (#15336294)

There is undoubtedly much that traditional monolithic kernel design can learn from microkernel development practices (and probably already has learned much). Much of the modular nature of microkernel development and the *logical* separation of different components can help manage the complexity of building a kernel.

However, the real issue comes down to whether it makes sense to actually compile this down to a microkernel or leave it as a monolithic kernel. In other words should we enforce the separation between components of the OS by running them in different addresses spaces/user mode.

Tannenbaum is a smart guy and thankfully he doesn't try and argue the stupid point that most uKernel people try and argue about more modular development. You can have just as modular development even if you end up running all the servers in kernel address space. Ultimately this means that a monolithic kernel can take advantage of all the development practices that make uKernel development nice (or disregard them when they cause a performance hit) and run faster because it won't need to switch between address spaces as much. Nicely recent chip features (SYSENTER SYSEXIT) and a focus on this problem has reduced the performance hit considerably in recent years.

The only real benefit that a true microkernel provides (as opposed to things like OS X that are designed like a uKernel then run monolithically) is reincarnation of kernel processes. Tannenbaum is right that if one's goal is to build a computer that just works like a TV and never fully crashes the uKernel has some strong advantages. So for things like media centers, embedded systems or any other incarnation of computer as consumer device (as opposed to general purpose computer) I think the uKernel has strong advantages.

The question is whether these advantages are as important in a standard computer. Yes, they would be a benefit if implemented right (so the filesystem isn't, for instance, restarted in a way that would cause data corruption) but not that much of a benefit. I mean OS X (which isn't a true uKernel) pretty much never crashes for me and just needs to be restarted for updates once every couple of months. Sure a uKernel might never need to be restarted (though if we really cared we could make a monolithic kernel that needs to be restarted less frequently) but this just isn't worth even a small performance hit for me.

Ultimately I suspect we will see uKernels win in the embedded space. In the computer space I suspect we will see hybrid type designs like OS X which co-opt the design practices of uKernels but stick lots of things in the kernel address space just because not ever rebooting just isn't that important to most people.
Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Create a Slashdot Account

Loading...