Read the article. Hurd is not a kernel. It is a set of servers.
-- - The early worm gets eaten by the bird.
Using the HURD in production
by
Walter+Bell
·
· Score: 5, Interesting
My employer likes to stay on the leading edge in the operating systems field, and makes it a point to try to integrate up-and-coming technologies into our server farms. It should come as no surprise, then, that our team does use a HURD machine as a file/web/application server.
The HURD machine has been surprisingly stable since we set it up last year. We may have had a few instances where it would get into an undesirable state and need rebooting, but by and large its downtime has been attributable to hardware upgrades and power interruptions. Its integrated userspace/kernel space has provoked us to write some very interesting programs on that box that we would not have been able to create with an ordinary UNIX or clone.
What's interesting about the HURD is that, despite its departures from many UNIX conventions, its developers are striving to form a clean upgrade path from Linux to HURD. Likewise, many HURD features (like POSIX b.1 capabilities) have made it into Linux in recent years. It's too early to tell, but perhaps the future holds a merging of Linux with HURD in a couple of years.
~wally
Re:Using the HURD in production
by
krogoth
·
· Score: 2
A merging would probably be beneficial. Linux and HURD both have unique and useful features (Linux's biggest advantage being the very large number of open source developpers backing it), and I would love to see them together in one operating system. Of course, those who are tired of RMS's "GNU/Linux" should buy one-way tickets to Mars if there's any word on this from the people who control them:) Then again, Linux HURD doesn't sound to bad...
--
They that quote Benjamin Franklin on liberty and safety deserve neither.
Re:Using the HURD in production
by
Hitokage_Nishino
·
· Score: 2, Insightful
The problem being that Linux is largely monolithic in design while HURD is almost completely modular.
Besides, Linus hates the HURD design.
Re:Using the HURD in production
by
Eil
·
· Score: 2
Agreed. You might as well hope for a FreeBSD / Plan9 merge or something on that order.
Don't forget, people, that Linux is a kernel, not an operating system. The interview mentioned that certain code from Linux was used in Hurd, but a merging of the two is simply not going to happen.
That aside, with the GPL, Linus has very little to say should someone try and merge Linux and Hurd.:P
I think the thing that Hurd is really lacking is a Linus or Theo-like figure with an established cult of personality.
And it looks like Neal's got some hope. He's reasonably pragmatic (important) and can use humor effectively (as in the comment that he hasn't done drugs)
Of course, the problem with Mach is that there's five people working on it, and it's not ready for a mess of people to start hacking on it. It has some interesting ideas, and some really cool directions that it could go in. Somebody's going to have to do some leadership and start setting it on a course from R&D to a real production project sometime.
Hmm... He says HURD is slower than it should be, and it will get better. I was under the impression that it was doing some high-order operations, and that was why it was going to be slow. Eventually with high-order operations, don't you sortof hit a brick wall in optimization? For example, I thought they were using the very expensive (computationally) Mach messaging system for some of their features. Is this the case? Is their switch to L4 going to improve this issue, since Mach's speed issues are related to operation order? Iduno. I guarantee that I'm less educated in this subject than the majority of/. readers, so can someone elucidate?
--
There are no trails. There are no trees out here.
Re:Hurd Speed
by
Ivan+Raikov
·
· Score: 2, Interesting
I believe QNX has a philosophy similar to the Hurd -- most of the traditional OS facilities there are moved in user space. Nevertheless, QNX is a leading hard real-time operating system with a very small footprint and elegant architecture.
Which makes me really excited about implementing real-time software in Hurd.
Re:Hurd Speed
by
aheitner
·
· Score: 4, Insightful
(caveat: I think microkernels are silly firewalls in code that should be correct and trusted)
There are going to be speed problems with any microkernel-based OS -- OS X is not necessarily exempt either.
Basically, if you spend a lot of time copying data between address spaces of different chunks of the kernel, you're going to pay for it. If you have to switch address spaces to switch kernel tasks, you're going to pay for it (in cache misses).
Even in a monolithic-kernel OS (which will always be superior, if you assume the parts of the kernel are well-enough written that they can be trusted by other parts of the kernel), you have some cost moving data from userspace to kernel space. You can get around that in clever cases -- Linux does this with zerocopy networking, passing sets of (physical) pages around and dumping them directly to the card driver.
As Linus once said "Mantra: `Everything is a stream of bytes'. Repeat until enlightened." In other words, any obsessiveness that gets in the way of moving streams of bytes around extremely efficiently is not good architecture. Message passing (and separate address spaces for kernel "server" modules) fall into this category.
First: You don't need to spend any more time copying data between address spaces in a modern microkernel OS than in a monolithic-kernel OS unless you've designed it badly. For example, it's lunacy to put your disk driver and file system driver in different address spaces. Performance-conscious microkernels do what monolithic kernels do: use dynamically loaded objects. The difference is that the disk server dynamically loads the filesystem it's going to use, or the network server loads the NIC driver and protocol implementations. There's no reason at all why a microkernel OS can't use zero-copy networking. (I think that BeOS even did zero-copy sound in some situations. Digitised data would come in off the soundcard and go straight into the mixer. Try doing that in Linux without hacking the kernel.)
As for context switches, true, you have to do more of them, but you get performance gains elsewhere as a result, as I have noted previously.
If you need a microkernel mantra, here it is: "It's not a penalty, it's a tradeoff." Repeat until enlightened.:-)
-- sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Re:Hurd Speed
by
Pseudonym
·
· Score: 3, Insightful
Mach is an old-style microkernel. It comes from the same era as Windows NT.
QNX/Neutrino is a modern microkernel which comes from the same era as BeOS.
There's no comparison. Mach is big and tries to do too much, even for a microkernel. But it comes from an era when we throught that the most important advantage of microkernels was flexibility. We now know that by making them very "micro" they can give performance too.
You won't find hard real-time in Hurd any time soon. Not as long as they're using Mach and allow use of Linux device drivers, anyway. Hard real-time needs to be designed in everywhere, from the driver to the kernel to the application.
The world does need a free real-time general-purpose OS, you're right. Real-time is becoming ever more important even in server applications (e.g. ATM routing, streaming media). You won't find it in the Hurd, but there are one or two projects happening in relative secrecy at the moment. Watch this space.
-- sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Hmmm. I thought that they were doing exactly that. A lot of copying between servers by using the Mach messaging system. Maybe not between the filesystem and the disk drivers, but I'm sure some of those servers do a lot of communication. Now, I have *no* idea if any of that communication is something that would have to be copied in a monolithic kernel. Perhaps all of it would. I realize that Mach messaging was a well thought out tradeoff, and I don't think that it's a bad idea for the HURD. They certainly took their time thinking about it:) I'm just curious if further optimization is really going to improve their speed a lot. I can't imagine that Neal would say it's going to improve if it isn't, so I imagine that some of my post is just plain incorrect. Is the messaging going to slow them down, or not?
Just to clarify, aheitner's assertion was not that Hurd or Mach's IPC is slow, but that any microkernel-based OS will be slow compared with a monolithic kernel-based OS. I don't know enough about Hurd to comment specifically, but there are plenty of modern microkernel-based OSes which are competitive in this area (e.g. L4, BeOS, QNX).
-- sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Re:Hurd Speed
by
jbailey999
·
· Score: 2, Interesting
One of the biggest speed problems we face right now is how expensive fork is. Everytime something forks, all the ports (and send rights) have to be copied from one task to another (Many many RPCs for that). If that's followed by an exec (which then has to clear it) it's quite expensive.
The solution for that is to use posix_spawn (in the latest posix drafts). This signals that a new task can be setup cheaply. Hopefully when bash, make, and gcc use that, we'll see a huge improvement in speed.
So far raw execution speed seems fine. I don't use X (since mostly my machine just sits and compiles binaries), but even when it's going full tilt, it's quite usable on a PII/233mhz. (Multiple ssh sessions, irc)
Fiasco will be fantastic when it's finished, although I think using OSKit is a mistake except in the short term. However, a "real-time kernel" won't help if your drivers and servers aren't also low-latency. Beware of Linux drivers in particular. They almost all assume that interrupts are disabled during execution of the interrupt handler. Excising that will be hard.
-- sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Re:Hurd Speed
by
SerpentMage
·
· Score: 2, Interesting
What is interesting to note is that the original design of Windows NT with its servers was abandoned in NT 4.0. And from what I know in XP it does not even exist. While HURD did sound very interesting and many of its concepts sounded good I think speed is still an issue.
Many people say, computers get faster. Sure I agree, but software gets slower as well. The real question is if the software gets slower faster than the CPU or not? For example while C++ as a GUI is hard to program, C++ gui's are miles faster than any Java GUI. On top of that C++ GUI's are nicer than Java's. Hence why Java has not made it on the desktop.
Folks sometimes you need the speed!!!!
--
"You can't make a race horse of a pig"
"No," said Samuel, "but you can make very fast pig"
What is interesting to note is that the original design of Windows NT with its servers was abandoned in NT 4.0.
Well, some of the servers are still there, but yes, you're right. NT until version 3.51 used to be an old-style object-oriented microkernel OS not unlike Mach (only better than Mach). Now it's a kind of a bastard child of microkernel and monolithic kernel, retaining some of the benefits and most of the drawbacks thereof.
-- sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Re:microkernel == too slow on x86
by
selectspec
·
· Score: 3, Interesting
Let's be frank. It's too damn slow on any CPU. I think Mach (and Hurd) are really great projects, but they appear to be fundementally flawed (messaging+context-switch). I'm very disappointed that the interviewer didn't go into any details on the well-known problems associated with micro-kernel design. Also, I've never heard a really good comparison of the micro-kernel approach vs. the monolithic design with loadable modules (I'm sure there is one; I just haven't heard it). I'd really like to hear the Hurd developer's comments on these issues.
--
Someone you trust is one of us.
I am not a kernel hacker ...
by
PoiBoy
·
· Score: 3, Insightful
but I play one on Slashdot.:-)
Seriously, having read the interview it seems like Hurd does some interesting stuff removing features that are part of the kernel in other unix systems and moving them into userspace.
The real question, though, is whether we need an entirely new operating system to gain these features or whether they could instead be implemented into the standard Linux kernel. Unless they can really get a large group of people starting to develop and use it, it may go the way of the buffalo. By working on getting their changes into Linux, however, they would have a much larger userbase to start from.
-- Sig (appended to the end of comments you post, 120 chars)
Re:I am not a kernel hacker ...
by
brunes69
·
· Score: 2
By most definitions, especially the couse I took on "Operating Systems", the kernel pretty much is the operating system.
Re:microkernel == too slow on x86
by
Espen+Skoglund
·
· Score: 2, Informative
Strange. Last time we did measurements here (L4Ka), we ended up with 99 cycles on a 450Mhz PIII to send a message from one process to another. If one has communication within a single task the numbers are an order of magnitude lower (i.e., about 15 cycles).
The whole micro-kernel idea exists in MINIX, with user-space FS, MM etc..
The authentication part looked nice, but I thought I saw a contradiction when he first spoke of the safety of the system because the authentication daemons ups priviliges and second talks about a user-owned authentication daemon which is secure because cracked passwd's cannot be used on daemon's outside this users' space. This would imply that the public authentication server is hackable also in a way that authentication tokens can be had illegally.
Nevertheless I like the removal of root access necessity for a lot of stuff.
When he spoke of user-owned authentication daemon's being secure because the cracked passwords are unusable other places that's exactly what he meant.
A user-owned authentication daemon is not just user-owned. It could also be user-written. You can't guarantee the security of something a user writes. So, it can be cracked, possibly. And, you can get passwords and tokens from it, possibly. However, they do you no good in any other authentication daemon.
The main, global, authentication server for the OS should be very damned secure.
I don't think you understand my point. Which is that the authentication system still is vulnerable to attacks where tokens are illegally obtained. Therefore a buffer overflow will not make you root because the server is running as root, but it might give your root (or any other users) password, which has the same effect.
It would not give a root password. It would give a root token. That token, however, would only be valid on that one authentication server, so it would only make a difference if you wanted to do horrible things to programs that use that authentication server as their primary authentication server. Regular programs would still default to the system's authentication server which would laugh at your supposed root token.
You would get a root token on the SYSTEM'S authentication server, therefore granting you root access to the complete system.
The authentication scheme can prohibit you from becoming root by overflowing the authentication server and 'becoming it' because it doesn't run as root. It doesn't prevent you, however, from overflowing it and getting the root token after which you can abuse that one accordingly. Therefore this scheme only partly solves UNIX' inherent security problems.
You will still be able to overflow the authentication server and the the authentication token for root. Please explain why you would only get root "at the user level one", whatever you mean by that.
By the time the hurd is stable and featureful enough for everyone to use, we'll all be using 20GHZ machines. At that point, it may be worth the loss of speed.
-- You had me at "dicks fuck assholes".
Re:Isn't GNU/HURD redundant?
by
brunes69
·
· Score: 3, Funny
Didn't you know? There's already a GNU OS. It's also been called "Emacs" in some circles.
Is the assertion that Hurd isn't "production grade" official? Or just the consensus of its users? Or just the opinion of the interviewer?
Better hope it's the last one. Anything else reflects very negatively on Project GNU's ability to make actual friggin progress. They've been working on Hurd since 1991!
Re:Oh Lord, How Long?
by
rubberducky
·
· Score: 2, Insightful
I don't know what you gathered from the interview, but if y'd ask me, I think I was might impressed by the ideas in the interview. Hurd, to me, seems like an excellent idea.
As far as GNU's ability to deliver is concered, what about that editor you use (emacs). What about tools like make, flex, yacc, et all? Get real, GNU has done delivered too much to the computing community; and for free.
Honestly, getting the hurd up 'n running has been not as important since we already have Linux. After Linux, there was no urgent need for a Free OS (what GNU was really all about at that time).
As far as having a robust OS is concerned, we already have Linux. Whatever Hurd is going to be, it is going to be well thought out and based on good and new ideas that markedly better than conventional UNIX. Hurd is not there to replace Linux, but the project exist solely to get a new kind of OS out.
Actually they've been working on it longer than that. In 1987 they started "negotiating with Professor Rashid of Carnegie-Mellon University about working with them on the development of the Mach kernel". 1991 is only when they started working on a detailed plan. It still took them until 1994 before they got to the milestone of "it boots".
HURD vs Plan9
by
line-bundle
·
· Score: 2, Interesting
I have been looking at plan9 from bell labs recently. Has anyone here used both hurd and plan9 enough to give advantages of each?
Re:HURD vs Plan9
by
spitzak
·
· Score: 3, Interesting
Actually I think Plan9 is a very good idea, and may be a much better aproach to making a microkernel. You could consider Plan 9 to be doing "message passing" but the set of messages is limited (to 17, I think). Ie there is a "read" and a "write" and a "walk" and several others. Each of these "messages" has a very fixed set of arguments, ie some have a big block of memory that needs to be sent to the message reciever, some the other way around, some return a new message pipe, etc. Since there is this limited set of types of messages they can be each hand-coded for maximum efficiency.
This limited set of "messages" also makes it trivial to insert filters between components. In Mach I believe any kind of filter will have to interpret the entire message description structure, right?
From the interview: The GNU/Hurd, as a desktop system is quite
usable, albeit, a bit slow. In terms of stability, there are not many
major crashers. Which is to say, an uptime of over a week is quite
possible.
In this age of MS-think, that means it's time to release it!
That said, I would not recommend using the GNU/Hurd on a server. At
least not yet.
Hmm, that never stopped our friends in Redmond.
(Seriously, though, an interesting interview.)
The HURD could be in public use today
by
Jack+Wagner
·
· Score: 5, Interesting
When I was doing some contractor work for a huge *nix shop (think purple)I met a fellow who told me an interesting tale. It seems this huge *nix company (think purple) had actually spent a week with RMS and some of the HURD developers to talk with them about using the base code from the HURD for a project they were kicking about. The company would have been willing to give back some of the code, under a community type BSD license, which would have brought the HURD up to a Version 1.0 level. Now bear in mind I got this story second hand but the guy who told me was a very reputable source who had been part of the compiler team for years there. He let it slip out while we were discussing the flaws in the BSD threading model and once the cat was out of the bag he spilled his guts.
Anyways, the long and the short of it was that RMS threw a giant hissy fit about the license so they never did business together. It seems that RMS can't see the forrest for the trees sometimes. Instead of giving the community a rock-n-roll new kernel, he decided to cut off his nose to spite his face.
Yours, -Jack
--
Wagner LLC Consulting Co. - Getting it right the first time
Maybe not as crazy as it sounds
by
kingdon
·
· Score: 2
Although a Linux kernel has tons of functionality that you wouldn't use if you were running the Hurd on top of it, there would be potential advantages (SMP, running on a lot of hardware, etc). However, there are (at least) two factors which I suspect might stop this show: IPC speed and memory footprint. (1) The hurd uses a lot of interprocess communication calls between one of the hurd servers and another (or between a user application and a server). Therefore a good microkernel will try to make IPC very fast. Without having looked at Linux benchmarks in this area, I don't know how it stacks up, but I doubt it has gotten as much attention as in your average microkernel. (2) Would the Linux kernel use a lot of memory on unused functionality? (This one might be less of a big deal, although I don't happen to remember things like whether Linux swaps out kernel pages which aren't getting touched).
Re:microkernel == too slow on x86
by
Pseudonym
·
· Score: 4, Insightful
My first comment is that "performance" means different things to different people. To some it means "throughput", that is, the amount of work that the system can do just prior to being overloaded. To some it means how well it can handle overload. To some it means low latency, that is, that the system can respond to an important event quickly. Which one is important for you depends on what you're doing.
Secondly, you're basing your assumptions on "microkernels" like Mach, which dates from around the same era as the original Windows NT. That's an "old style" microkernel. Back then, we thought that the only advantage of using microkernels was flexibility, so kernels didn't have to be very "micro".
Nowadays we know that merely reducing the kernel's domain of influence doesn't buy you much. You also need to simplify your kernel to realise performance gains. You do lose something (cost of context switch etc) but you also gain lots too, so it's not so much of a penalty, but rather it's a tradeoff.
For example, consider this: Linux often has to suspend a task deep inside a system call. If you call read() on a block of disk which is not in the buffer cache, say, you need to suspend until the block is read in from disk. A monolithic kernel may have to do this for a hundred reasons, depending on which modules are loaded. So a context switch consists of dumping registers on the kernel stack then switching stacks.
Now consider a microkernel. You already know in advance what operations you may have to suspend on, and that number is quite small. (In the read() example, you only suspend on IPC while the server responsible for disk I/O does the hard work.) So you can separate the "front half" of each system call from the "back half". You can come up close to the surface and then context switch if necessary. (Note: You have to do this anyway on a modern system, because a higher priority task may have unblocked during the system call.) Once you've done that, each thread doesn't need its own kernel stack, which makes the context switch a little cheaper, saves memory, makes thread creation cheaper, and the kernel can be made re-entrant, delivering an IRQ in the middle of delivering another IRQ, thus improving latency. It also means you don't need to hack around the problem of signal delivery while suspended. (BSD does this by ensuring that the "front half" of every system call is idempotent, and thus possibly less efficient than it could be.)
So you can see that focussing on the cost of context switching alone can be misleading.
Plus, of course, keep this in mind: if raw throughput was our most important criterion, we wouldn't have virtual memory.
-- sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Re: Device drivers
by
SpringRevolt
·
· Score: 2, Informative
If I understand correctly, the Hurd will, in future be moving to a new microkernel called OSKit-Mach. OSKit-mach is based (as you may guess) on OSKit and OSKit (which is distributed and maintained at the University of Utah) contains Linux device drivers. As you may know, the (vast?) majority of Linux code is actually the device drivers - so most of Linux is now available for users of the Hurd.
So in answer to your point: they have considered the device drivers.
Difference in philosophy
by
Pseudonym
·
· Score: 5, Insightful
Nope. The Linux developers are hell-bent on sticking to their monolithic design. Even if you could develop the Hurd as a set of patches, they would never make it into the "standard Linux kernel". (Curious use of the word "standard", BTW.)
The rift of Hurd vs Linux is like vi vs emacs. Vi and Hurd are meant to be a small tools designed to work in conjunction with other small specialised tools, the whole being greater than the sum of the parts. Emacs and Linux are meant to be "all features under one roof".
Actually, that's a good way of looking at your question. Asking "can't you just implement these features in Linux?" is like asking "why do you need all those POSIX commands like diff(1); can't you just implement that in Emacs?" The answer is "yes", but would you want to?
-- sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Re:Difference in philosophy
by
Pseudonym
·
· Score: 3, Informative
I've read it, and I think he's wrong. A well-designed modern microkernel OS system should do no more copying than a monolithic kernel does (and it does, say, between user-space and kernel-space).
I suspect that Linus was talking about old systems like Mach, Minix and Windows NT, and not modern systems like QNX, L4 or BeOS. If so, his mistake is understandable.
-- sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
Re:Difference in philosophy
by
Pseudonym
·
· Score: 2
Emacs users don't just edit ascii files. They also compile code, read news and get therapy from Eliza.:-)
Linux is a HELL lot more capable as an operating system than Hurd, in stability, efficiency, and capability.
I dunno about "capability". I'll agree with the other two, though. The stability and efficiency are mostly because of its longevity, of course. "Get it working then get it fast."
-- sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
A few notes from a Hurd user
by
Anonymous Coward
·
· Score: 5, Informative
I've got a GNU/Hurd machine right next to me compiling Emacs as I write this, but I'm no expert. Take the following with a salt shaker, if you like:)
A few people have mentioned trying to merge Linux with the Hurd. For many reasons, this probably won't happen, and would probably detract from some of the advantages the Hurd's design offers.For example, Neal Walfield mentions in the interview that there's a fellow who's succeeded by himself at porting substantially the Hurd to the PowerPC architecture. He took OSFMach from the MkLinux project, modified slightly the four core servers and libc, and had a system capable of running bash, fileutils, and I think some other standard apps. This feat confirms the portability of the Hurd's design, which might not be as easily accomplished with the Linux kernel. I don't know Linux's internal arrangement very well, but I have read comments of Linus's to the effect that kernel development shouldn't be easy. While writing Hurd servers or an implementation of Mach isn't particularly easy, it looks as though the portability and modularity promises of the microkernel advocates may be borne out. In addition, at least one fellow has succeeded at running Lites, the BSD single-server, alongside the Hurd on a machine running Mach. In principle it should be possible to run the MkLinux single server in a similar way atop Mach, perhaps concurrently with the Hurd. This would be similar, according to the Hurd's developers in a recent list discussion, to the virtual server capabilities discussed last week someplace
The Hurd accomplishes this while remaining POSIX compliance, sufficient to make the user experience indistinguishable from standard *nixes. At first my biggest disappointment with the Hurd was that nothing much seemed different. All the standard utilities were there, I got X working (though I don't use kde or gnome -- just windowmaker), and found myself somewhat surprised that most of what I need to do I can get done with my GNU/Hurd machine. This seems to have been accomplished by about ten or so kernel developers plus maybe fifty application porters over a long time; naturally if the user and developer bases were larger, things would be farther along.
My GNU/Hurd system is, however, slow. I haven't done any careful tests, but it feels sluggish at times. File access and network operations are fairly slow, similar operations are noticeably faster with Linux. There's a lot of driver support missing [e.g. no sound:( ], which will be a problem for the foreseeable future.
Anyway, it's not quite there yet, but things are coming along, both feature- and performance-wise. It's worth trying out, if you've got a spare pc with a gigabyte of disk or so.
By the time the hurd is stable and featureful enough for everyone to use, we'll all be using 20GHZ machines.
Its true; betting on Moore's law has been proven to be a winning strategy. Ask Bill Gates.
It makes me think of Windows 95. When I first installed it on a 486/33, it seemed huge, bloated and slow. If I run it now on a PIII/800, it seems to be fast, lean, stripped down and almost elegant. I guess context is important.
So Linus doesn't like microkernels...
by
nadador
·
· Score: 5, Insightful
therefore they are bad.
Right, right.
As others have noted, there's no way for a microkernel to be as speedy at flipping bits around as a monolithic kernel, copying between address spaces and everything. Apple attempts to mitigate some of those costs by keeping all their Mach threads in one address space, IIRC, but even with that speed up there's still some overhead.
But that doesn't mean that microkernels suck.
Apache doesn't serve static pages as fast as other web servers. It doesn't serve dynamic content as fast as some servers. But people use Apache for other reasons, things like configurability, extensibility, and support. And because the only thing you *can't* do with an Apache module is make babies.
Microkernels are interesting to computer scientists because they allow abstraction in the kernel, and God only knows that there's no word that computer scientists like more than "abstraction". Microkernels, for all there faults, are just plain prettier. And as research continues into microkernels and how to mitigate their many flaws, there might come a time when the extra processing they require might be worth it. Maybe all the abstraction and objectiness will be worth it to some system designer in the future.
At some point, there may be people who will be willing to trade some latency and throughput for extensibility and configurability in their kernels. They might be willing to trade some clock cycles for the ease with which they can implement different security policies, ala HURD. The point is that not everyone needs the same kernel, and not everyone needs the same kind of kernel.
And competition is good for them both. The HURD developers are incouraged to speed up the kernel, thanks to Linux. Linux kernel hackers will eventually desire some of the design niceties of the HURD kernel, they just won't admit it on the LKML.
--
Outside of a dog, a book is a man's best friend. Inside a dog, its too dark to read.
Re:microkernel == too slow on x86
by
Sloppy
·
· Score: 5, Insightful
"Blahblah is to slow" arguments are lame. Microkernels are too slow. Java is too slow. 3D graphics are too slow. GUIs are too slow. Virtual memory is too slow. Accessing files over a network is too slow. Calling the OS instead of directly banging the hardware is too slow. *yawn*
Upgrade your 386SX to a new Athlon, dude. (Or better yet, a dual Athlon -- one less context switch;-). Then nothing is too slow anymore. You can run CPU-bound stuff continuously at 87.5% utilization and your computer will still be just as fast as what you had 6 years ago, which was already overkill.
500 clock cycles, with 2 billion clock cycles per second, that works out to... a good-looking excuse to blame things on the next time you get fragged in Quake.
What's really funny is that you'd dare to say that something with a slight performance decrease has a "very little chance of surviving on Intel-based architectures." And yet just last week, I saw someone at my office spending way too much time, struggling to copy a bunch of files with MS Windows' explorer shell. I guess Windows has very little chance of surviving too. Unless.. wait.. unless maybe people don't care? Could it be?!?
-- As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
It makes me think of Windows 95. When I first installed it on a 486/33, it seemed huge, bloated and slow. If I run it now on a PIII/800, it seems to be fast, lean, stripped down and almost elegant.
I'm not quite sure that's true. Win95 seemed bloated and slow on the ancient 486/25 I first used it on... and yet, it's _still_ bloated and slow on new machines. One would think that it would be quick as lightning, and yet I still "click the start button... drum fingers for a second..." Same really goes for both KDE and GNOME. On the flip side, Blackbox was lightning fast on the first machine I installed Linux on (a 486/66, IIRC), and it seems just as fast on my machine today.
Best explanation I can come up with is that there hasn't been any increase in processor speed in the last 5 years. I'm convinced that they hit a wall around the 386 or so, and have simply been rebranding the same chips every year or so, trusting that we'll convince ourselves that things really are going faster.
--
How can we continue to believe in a
just universe and freedom to eat crackers if we have no ale?
Microkernels and Monokernels
by
einhverfr
·
· Score: 2
Hi all;
I think that micro and monolithic kernels each have their place. For my PC, though a monolithic kernel probably meets my needs best. Also, I will be referring to monolithic kernels as "monokernels" even if this is not technically correct;)
Microkernels beat out monokernels often when it comes to Really Big Servers and Supercomputers, in part because SMP is much more difficult to do on monokernel designs I suspect that this is why UNICOS/mk is a Microkernel (of course, it is from Cray).
As Linus once said "Mantra: `Everything is a stream of bytes'. Repeat until enlightened." In other words, any obsessiveness that gets in the way of moving streams of bytes around extremely efficiently is not good architecture. Message passing (and separate address spaces for kernel "server" modules) fall into this category.
Exactly, but your considerations for that 64-proc supercomputer or mainframe are different than your considerations for your 1 proc workstation, aren't they? Microkernel may be more efficient for the former, but monokernels are more efficient for te latter.
To sum things up
by
Waffle+Iron
·
· Score: 3, Interesting
The main points from the interview seemed to be:
The HURD isn't popular yet because
It's still slow
It's still buggy
It's POSIX compliant in theory, but not as used by the real world
Hardly anyone is working on it
There hasn't been an official release in 4 years (that's 83 years in Internet time)
There is no prospect of a date for any further official releases
OTOH, the HURD is cool because:
It's a microkernel
It has granular security
Except for the last three bad points, the HURD sounds alot like the Windows NT kernel. In fact, the biggest difference could be bad point #4 (since #5 and #6 flow from #4).
Maybe instead of reinventing the wheel, they should just use the NT kernel with the GNU runtime tools and release GNU/NT.
It is sort of absurd to point to a half dozen largly experimental systems and point out that Hurd's features can be found in them. (Why does C++ exist? Algol68, PL/1 and Simula have all the features C++ does.)
The Hurd is aimed at being a Free, POSIX, usable system, unlike BeOS and QNX (not Free), Minix (a teaching system), Eros (a experimental system) and Plan9 (not Free, and not POSIX.) As for L4, the article points out that the Hurd can be ported to L4, it's just that nobody has put in the elbow grease yet.
Re:Merging?
by
Paul+Jakma
·
· Score: 2, Informative
flamer...
insmod/will/ load non-GPL compat modules, but it will mark the kernel as tainted.
read the man page for insmod.
-- I use Friend/Foe + mod-point modifiers as a karma/reputation system.
Something I perhaps don't understand...
by
daveman_1
·
· Score: 2, Interesting
If it is possible to implement the Hurd with any underlying microkernel, isn't it essentially possible to provide Hurd functionality with a macro-kernel as well? Layer your Hurd-servers around the macro-kernel as user space apps, disable much of the macro-kernel functionality, still suffer from not doing stuff in kernel space. This is possible isn't it? Wouldn't this allow for the "enhanced" security model which is at the heart of the Hurd? In other words, why does one have to re-invent the wheel to accomplish what the Hurd does, as well as work along side of existing systems, and not require a "compatibility" layer? The interviewer admits the Hurd suffers from a scalability standpoint. Also, isn't it possible to provide the security contexts the Hurd offers through projects for the Linux kernel, such as what NSA is working on with SE-Linux and SIDs? (known in the article as "tokens to perform specific tasks".) This is perhaps a different solution to the problem, but the result appears to be the same...
Better scaling and less forking
by
hoggy
·
· Score: 2, Interesting
A point I've not seen anyone make is that the Hurd scales better than Linux ever will, and I don't mean in terms of hardware, I mean in terms of development.
Vast wars already take place about what should or should not be in the Linux kernel. The rate of progress on all of these fronts together is approaching glacial. There is just no easy way for a small team to keep a grip on a monolithic kernel that is being pulled in different directions by different developers. It has taken years for a journaling filesystem to be accepted into the kernel.
The Hurd neatly sidesteps all of these issues by not requiring any of these things to be in the kernel. Useful functionality like reiserfs and tux can be developed and released without any requirement for them to be "accepted" by any controlling group. At the moment, the only way to do something similar with Linux is to release a patch. This makes Linux much more susceptible to forking.
In case anyone disagrees with me on the forking issue, consider that Linux already has a very high profile fork: RedHat. RH have been distributing a forked kernel for a long time. Admittedly they only patch the kernel in minor ways, but nonetheless they maintain an alternative version. This is because if their views on what they want out of the OS differ from the kernel admins they have no choice but to fork.
But a RedHat version of GNU/Hurd could be composed of whatever OS servers they choose without any patching. They could mix and match the kernel distribution in much the same way as they currently mix and match the userspace distribution. Because most of the Hurd kernel *is* a userspace distribution.
But Linus *does* like microkernels!
by
kinnunen
·
· Score: 3, Insightful
Read the Linus vs. Tanenbaum thread. While it is a comparison of Linux and Minix, it gives you a pretty good indication of how Linus feels (or felt at the time) about microkernels in general. Here is one quote (my bold): "True, linux is monolithic, and I agree that microkernels are nicer. With a less argumentative subject, I'd probably have agreed with most of what you said. From a theoretical (and
aesthetical) standpoint linux looses." --Linus
The thing is, Linus does care about speed difference. A lot.
I don't know what you gathered from the interview, but if y'd ask me, I think I was might impressed by the ideas in the interview. Hurd, to me, seems like an excellent idea.
Excellent ideas are a dime a dozen. World peace, an end to hunger, a home computer that a non-techie can install and administer -- these are all excellent ideas. But in the real world, you don't judge an effort by what it wants to do. You judge it by what it accomplishes. There's a word for this kind of gap between conception and reality.
As far as GNU's ability to deliver is concered, what about that editor you use (emacs). What about tools like make, flex, yacc, et all? Get real, GNU has done delivered too much to the computing community; and for free.
To my mind, EMACS represents a lot of what's wrong with GNU software. Lots of Wonderful Big Ideas, but little attention to practical design.
And I'm sorry, but the basic GNU software set is a disaster. I speak from personal experience. I've been hassling with their bugs for years. Ten or so years ago it was hassling with the official port of GNU source control to DOS -- done by somebody who didn't understand FAT filesystem semantics. Last year I had to sweat blood to deal with the reference counting bug in glibc. This bug was eventually fixed -- after glibc maintenance moved from GNU to Red Hat. What can you say about a team that takes so long to fix such a basic bug? Aside from the fact that it has Lots of Really Great Ideas?
Face it, GNU has "succeeded" only because you need it to do anything useful with the Linux kernel.
Hurd is not there to replace Linux
Well, of course not. Hurd as been around much longer, if you count its Project Mach origins. If Hurd had had its act together back when LT was a grad student, he probably never would have bothered to write the Linux kernel. Proably just as well...
Look, if Hurd is so wonderful and important, then you should want something serious to happen with it. That is not going to happen if all its supporters just stand around saying "cool!" And it's certainly not going to happen if nobody asks why this project has been chasing its own tail for so long.
How is HURD that different? What benifet does it provide the user that hasn't been seen elsewhere? HURD is, at best, a research OS. It has neither the mindshare nor the technological advances to become mainstream. If you compare it with other research OSs, its not very interesting even then. Sure everyone has a right to work on what they think is interesting, but people also have the right to call a particular project pointless and redundant.
-- A deep unwavering belief is a sure sign you're missing something...
Not really. Even if you have an L4 HURD that is complete and stable, do you really have anything more than a stable, secure UNIX system? Those are a dime a dozen these days! The microkernel will not make it super-stable or super-secure, and competing OSs (which have the maturity of code that marks a stable/secure system) will be ahead of it in these respect for at least a decade or more. There is nothing in the HURD to justify its existance; it provides nothing to the world that doesn't already exist. Maybe that's fine for a research project, but IIRC, research projects are supposed to try new things!
-- A deep unwavering belief is a sure sign you're missing something...
Read the article. Hurd is not a kernel. It is a set of servers.
- The early worm gets eaten by the bird.
My employer likes to stay on the leading edge in the operating systems field, and makes it a point to try to integrate up-and-coming technologies into our server farms. It should come as no surprise, then, that our team does use a HURD machine as a file/web/application server.
The HURD machine has been surprisingly stable since we set it up last year. We may have had a few instances where it would get into an undesirable state and need rebooting, but by and large its downtime has been attributable to hardware upgrades and power interruptions. Its integrated userspace/kernel space has provoked us to write some very interesting programs on that box that we would not have been able to create with an ordinary UNIX or clone.
What's interesting about the HURD is that, despite its departures from many UNIX conventions, its developers are striving to form a clean upgrade path from Linux to HURD. Likewise, many HURD features (like POSIX b.1 capabilities) have made it into Linux in recent years. It's too early to tell, but perhaps the future holds a merging of Linux with HURD in a couple of years.
~wally
True.
I think the thing that Hurd is really lacking is a Linus or Theo-like figure with an established cult of personality.
And it looks like Neal's got some hope. He's reasonably pragmatic (important) and can use humor effectively (as in the comment that he hasn't done drugs)
Of course, the problem with Mach is that there's five people working on it, and it's not ready for a mess of people to start hacking on it. It has some interesting ideas, and some really cool directions that it could go in. Somebody's going to have to do some leadership and start setting it on a course from R&D to a real production project sometime.
Gentoo Sucks
Hmm... He says HURD is slower than it should be, and it will get better. I was under the impression that it was doing some high-order operations, and that was why it was going to be slow. Eventually with high-order operations, don't you sortof hit a brick wall in optimization? For example, I thought they were using the very expensive (computationally) Mach messaging system for some of their features. Is this the case? Is their switch to L4 going to improve this issue, since Mach's speed issues are related to operation order? Iduno. I guarantee that I'm less educated in this subject than the majority of /. readers, so can someone elucidate?
There are no trails. There are no trees out here.
Let's be frank. It's too damn slow on any CPU. I think Mach (and Hurd) are really great projects, but they appear to be fundementally flawed (messaging+context-switch). I'm very disappointed that the interviewer didn't go into any details on the well-known problems associated with micro-kernel design. Also, I've never heard a really good comparison of the micro-kernel approach vs. the monolithic design with loadable modules (I'm sure there is one; I just haven't heard it). I'd really like to hear the Hurd developer's comments on these issues.
Someone you trust is one of us.
Seriously, having read the interview it seems like Hurd does some interesting stuff removing features that are part of the kernel in other unix systems and moving them into userspace.
The real question, though, is whether we need an entirely new operating system to gain these features or whether they could instead be implemented into the standard Linux kernel. Unless they can really get a large group of people starting to develop and use it, it may go the way of the buffalo. By working on getting their changes into Linux, however, they would have a much larger userbase to start from.
Sig (appended to the end of comments you post, 120 chars)
Strange. Last time we did measurements here (L4Ka), we ended up with 99 cycles on a 450Mhz PIII to send a message from one process to another. If one has communication within a single task the numbers are an order of magnitude lower (i.e., about 15 cycles).
The whole micro-kernel idea exists in MINIX, with user-space FS, MM etc..
The authentication part looked nice, but I thought I saw a contradiction when he first spoke of the safety of the system because the authentication daemons ups priviliges and second talks about a user-owned authentication daemon which is secure because cracked passwd's cannot be used on daemon's outside this users' space. This would imply that the public authentication server is hackable also in a way that authentication tokens can be had illegally.
Nevertheless I like the removal of root access necessity for a lot of stuff.
By the time the hurd is stable and featureful enough for everyone to use, we'll all be using 20GHZ machines. At that point, it may be worth the loss of speed.
You had me at "dicks fuck assholes".
Didn't you know? There's already a GNU OS. It's also been called "Emacs" in some circles.
Better hope it's the last one. Anything else reflects very negatively on Project GNU's ability to make actual friggin progress. They've been working on Hurd since 1991!
I have been looking at plan9 from bell labs recently. Has anyone here used both hurd and plan9 enough to give advantages of each?
In this age of MS-think, that means it's time to release it!
That said, I would not recommend using the GNU/Hurd on a server. At least not yet.
Hmm, that never stopped our friends in Redmond.
(Seriously, though, an interesting interview.)
Anyways, the long and the short of it was that RMS threw a giant hissy fit about the license so they never did business together. It seems that RMS can't see the forrest for the trees sometimes. Instead of giving the community a rock-n-roll new kernel, he decided to cut off his nose to spite his face.
Yours,
-Jack
Wagner LLC Consulting Co. - Getting it right the first time
Although a Linux kernel has tons of functionality that you wouldn't use if you were running the Hurd on top of it, there would be potential advantages (SMP, running on a lot of hardware, etc). However, there are (at least) two factors which I suspect might stop this show: IPC speed and memory footprint. (1) The hurd uses a lot of interprocess communication calls between one of the hurd servers and another (or between a user application and a server). Therefore a good microkernel will try to make IPC very fast. Without having looked at Linux benchmarks in this area, I don't know how it stacks up, but I doubt it has gotten as much attention as in your average microkernel. (2) Would the Linux kernel use a lot of memory on unused functionality? (This one might be less of a big deal, although I don't happen to remember things like whether Linux swaps out kernel pages which aren't getting touched).
My first comment is that "performance" means different things to different people. To some it means "throughput", that is, the amount of work that the system can do just prior to being overloaded. To some it means how well it can handle overload. To some it means low latency, that is, that the system can respond to an important event quickly. Which one is important for you depends on what you're doing.
Secondly, you're basing your assumptions on "microkernels" like Mach, which dates from around the same era as the original Windows NT. That's an "old style" microkernel. Back then, we thought that the only advantage of using microkernels was flexibility, so kernels didn't have to be very "micro".
Nowadays we know that merely reducing the kernel's domain of influence doesn't buy you much. You also need to simplify your kernel to realise performance gains. You do lose something (cost of context switch etc) but you also gain lots too, so it's not so much of a penalty, but rather it's a tradeoff.
For example, consider this: Linux often has to suspend a task deep inside a system call. If you call read() on a block of disk which is not in the buffer cache, say, you need to suspend until the block is read in from disk. A monolithic kernel may have to do this for a hundred reasons, depending on which modules are loaded. So a context switch consists of dumping registers on the kernel stack then switching stacks.
Now consider a microkernel. You already know in advance what operations you may have to suspend on, and that number is quite small. (In the read() example, you only suspend on IPC while the server responsible for disk I/O does the hard work.) So you can separate the "front half" of each system call from the "back half". You can come up close to the surface and then context switch if necessary. (Note: You have to do this anyway on a modern system, because a higher priority task may have unblocked during the system call.) Once you've done that, each thread doesn't need its own kernel stack, which makes the context switch a little cheaper, saves memory, makes thread creation cheaper, and the kernel can be made re-entrant, delivering an IRQ in the middle of delivering another IRQ, thus improving latency. It also means you don't need to hack around the problem of signal delivery while suspended. (BSD does this by ensuring that the "front half" of every system call is idempotent, and thus possibly less efficient than it could be.)
So you can see that focussing on the cost of context switching alone can be misleading.
Plus, of course, keep this in mind: if raw throughput was our most important criterion, we wouldn't have virtual memory.
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
If I understand correctly, the Hurd will, in future be moving to a new microkernel called OSKit-Mach. OSKit-mach is based (as you may guess) on OSKit and OSKit (which is distributed and maintained at the University of Utah) contains Linux device drivers. As you may know, the (vast?) majority of Linux code is actually the device drivers - so most of Linux is now available for users of the Hurd.
So in answer to your point: they have considered the device drivers.
Nope. The Linux developers are hell-bent on sticking to their monolithic design. Even if you could develop the Hurd as a set of patches, they would never make it into the "standard Linux kernel". (Curious use of the word "standard", BTW.)
The rift of Hurd vs Linux is like vi vs emacs. Vi and Hurd are meant to be a small tools designed to work in conjunction with other small specialised tools, the whole being greater than the sum of the parts. Emacs and Linux are meant to be "all features under one roof".
Actually, that's a good way of looking at your question. Asking "can't you just implement these features in Linux?" is like asking "why do you need all those POSIX commands like diff(1); can't you just implement that in Emacs?" The answer is "yes", but would you want to?
sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
A few people have mentioned trying to merge Linux with the Hurd. For many reasons, this probably won't happen, and would probably detract from some of the advantages the Hurd's design offers.For example, Neal Walfield mentions in the interview that there's a fellow who's succeeded by himself at porting substantially the Hurd to the PowerPC architecture. He took OSFMach from the MkLinux project, modified slightly the four core servers and libc, and had a system capable of running bash, fileutils, and I think some other standard apps. This feat confirms the portability of the Hurd's design, which might not be as easily accomplished with the Linux kernel. I don't know Linux's internal arrangement very well, but I have read comments of Linus's to the effect that kernel development shouldn't be easy. While writing Hurd servers or an implementation of Mach isn't particularly easy, it looks as though the portability and modularity promises of the microkernel advocates may be borne out. In addition, at least one fellow has succeeded at running Lites, the BSD single-server, alongside the Hurd on a machine running Mach. In principle it should be possible to run the MkLinux single server in a similar way atop Mach, perhaps concurrently with the Hurd. This would be similar, according to the Hurd's developers in a recent list discussion, to the virtual server capabilities discussed last week someplace
The Hurd accomplishes this while remaining POSIX compliance, sufficient to make the user experience indistinguishable from standard *nixes. At first my biggest disappointment with the Hurd was that nothing much seemed different. All the standard utilities were there, I got X working (though I don't use kde or gnome -- just windowmaker), and found myself somewhat surprised that most of what I need to do I can get done with my GNU/Hurd machine. This seems to have been accomplished by about ten or so kernel developers plus maybe fifty application porters over a long time; naturally if the user and developer bases were larger, things would be farther along.
My GNU/Hurd system is, however, slow. I haven't done any careful tests, but it feels sluggish at times. File access and network operations are fairly slow, similar operations are noticeably faster with Linux. There's a lot of driver support missing [e.g. no sound
Anyway, it's not quite there yet, but things are coming along, both feature- and performance-wise. It's worth trying out, if you've got a spare pc with a gigabyte of disk or so.
What are you talking about? The nVidia kernel drivers are released under the GPL, and they work just fine on any 2.4 kernel.
Interested in open source engine management for your Subaru?
Its true; betting on Moore's law has been proven to be a winning strategy. Ask Bill Gates.
It makes me think of Windows 95. When I first installed it on a 486/33, it seemed huge, bloated and slow. If I run it now on a PIII/800, it seems to be fast, lean, stripped down and almost elegant. I guess context is important.
therefore they are bad.
Right, right.
As others have noted, there's no way for a microkernel to be as speedy at flipping bits around as a monolithic kernel, copying between address spaces and everything. Apple attempts to mitigate some of those costs by keeping all their Mach threads in one address space, IIRC, but even with that speed up there's still some overhead.
But that doesn't mean that microkernels suck.
Apache doesn't serve static pages as fast as other web servers. It doesn't serve dynamic content as fast as some servers. But people use Apache for other reasons, things like configurability, extensibility, and support. And because the only thing you *can't* do with an Apache module is make babies.
Microkernels are interesting to computer scientists because they allow abstraction in the kernel, and God only knows that there's no word that computer scientists like more than "abstraction". Microkernels, for all there faults, are just plain prettier. And as research continues into microkernels and how to mitigate their many flaws, there might come a time when the extra processing they require might be worth it. Maybe all the abstraction and objectiness will be worth it to some system designer in the future.
At some point, there may be people who will be willing to trade some latency and throughput for extensibility and configurability in their kernels. They might be willing to trade some clock cycles for the ease with which they can implement different security policies, ala HURD. The point is that not everyone needs the same kernel, and not everyone needs the same kind of kernel.
And competition is good for them both. The HURD developers are incouraged to speed up the kernel, thanks to Linux. Linux kernel hackers will eventually desire some of the design niceties of the HURD kernel, they just won't admit it on the LKML.
Outside of a dog, a book is a man's best friend. Inside a dog, its too dark to read.
"Blahblah is to slow" arguments are lame. Microkernels are too slow. Java is too slow. 3D graphics are too slow. GUIs are too slow. Virtual memory is too slow. Accessing files over a network is too slow. Calling the OS instead of directly banging the hardware is too slow. *yawn*
Upgrade your 386SX to a new Athlon, dude. (Or better yet, a dual Athlon -- one less context switch ;-). Then nothing is too slow anymore. You can run CPU-bound stuff continuously at 87.5% utilization and your computer will still be just as fast as what you had 6 years ago, which was already overkill.
500 clock cycles, with 2 billion clock cycles per second, that works out to... a good-looking excuse to blame things on the next time you get fragged in Quake.
What's really funny is that you'd dare to say that something with a slight performance decrease has a "very little chance of surviving on Intel-based architectures." And yet just last week, I saw someone at my office spending way too much time, struggling to copy a bunch of files with MS Windows' explorer shell. I guess Windows has very little chance of surviving too. Unless .. wait .. unless maybe people don't care? Could it be?!?
As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
I'm not quite sure that's true. Win95 seemed bloated and slow on the ancient 486/25 I first used it on
Best explanation I can come up with is that there hasn't been any increase in processor speed in the last 5 years. I'm convinced that they hit a wall around the 386 or so, and have simply been rebranding the same chips every year or so, trusting that we'll convince ourselves that things really are going faster.
How can we continue to believe in a just universe and freedom to eat crackers if we have no ale?
Hi all;
;)
I think that micro and monolithic kernels each have their place. For my PC, though a monolithic kernel probably meets my needs best. Also, I will be referring to monolithic kernels as "monokernels" even if this is not technically correct
Microkernels beat out monokernels often when it comes to Really Big Servers and Supercomputers, in part because SMP is much more difficult to do on monokernel designs I suspect that this is why UNICOS/mk is a Microkernel (of course, it is from Cray).
As Linus once said "Mantra: `Everything is a stream of bytes'. Repeat until enlightened." In other words, any obsessiveness that gets in the way of moving streams of bytes around extremely efficiently is not good architecture. Message passing (and separate address spaces for kernel "server" modules) fall into this category.
Exactly, but your considerations for that 64-proc supercomputer or mainframe are different than your considerations for your 1 proc workstation, aren't they? Microkernel may be more efficient for the former, but monokernels are more efficient for te latter.
LedgerSMB: Open source Accounting/ERP
The HURD isn't popular yet because
- It's still slow
- It's still buggy
- It's POSIX compliant in theory, but not as used by the real world
- Hardly anyone is working on it
- There hasn't been an official release in 4 years (that's 83 years in Internet time)
- There is no prospect of a date for any further official releases
OTOH, the HURD is cool because:- It's a microkernel
- It has granular security
Except for the last three bad points, the HURD sounds alot like the Windows NT kernel. In fact, the biggest difference could be bad point #4 (since #5 and #6 flow from #4).Maybe instead of reinventing the wheel, they should just use the NT kernel with the GNU runtime tools and release GNU/NT.
It is sort of absurd to point to a half dozen largly experimental systems and point out that Hurd's features can be found in them. (Why does C++ exist? Algol68, PL/1 and Simula have all the features C++ does.)
The Hurd is aimed at being a Free, POSIX, usable system, unlike BeOS and QNX (not Free), Minix (a teaching system), Eros (a experimental system) and Plan9 (not Free, and not POSIX.) As for L4, the article points out that the Hurd can be ported to L4, it's just that nobody has put in the elbow grease yet.
flamer...
/will/ load non-GPL compat modules, but it will mark the kernel as tainted.
insmod
read the man page for insmod.
I use Friend/Foe + mod-point modifiers as a karma/reputation system.
If it is possible to implement the Hurd with any underlying microkernel, isn't it essentially possible to provide Hurd functionality with a macro-kernel as well? Layer your Hurd-servers around the macro-kernel as user space apps, disable much of the macro-kernel functionality, still suffer from not doing stuff in kernel space. This is possible isn't it? Wouldn't this allow for the "enhanced" security model which is at the heart of the Hurd? In other words, why does one have to re-invent the wheel to accomplish what the Hurd does, as well as work along side of existing systems, and not require a "compatibility" layer? The interviewer admits the Hurd suffers from a scalability standpoint. Also, isn't it possible to provide the security contexts the Hurd offers through projects for the Linux kernel, such as what NSA is working on with SE-Linux and SIDs? (known in the article as "tokens to perform specific tasks".) This is perhaps a different solution to the problem, but the result appears to be the same...
Russian Russian Russian RussianDollSig DollSig DollSig DollSig
A point I've not seen anyone make is that the Hurd scales better than Linux ever will, and I don't mean in terms of hardware, I mean in terms of development.
Vast wars already take place about what should or should not be in the Linux kernel. The rate of progress on all of these fronts together is approaching glacial. There is just no easy way for a small team to keep a grip on a monolithic kernel that is being pulled in different directions by different developers. It has taken years for a journaling filesystem to be accepted into the kernel.
The Hurd neatly sidesteps all of these issues by not requiring any of these things to be in the kernel. Useful functionality like reiserfs and tux can be developed and released without any requirement for them to be "accepted" by any controlling group. At the moment, the only way to do something similar with Linux is to release a patch. This makes Linux much more susceptible to forking.
In case anyone disagrees with me on the forking issue, consider that Linux already has a very high profile fork: RedHat. RH have been distributing a forked kernel for a long time. Admittedly they only patch the kernel in minor ways, but nonetheless they maintain an alternative version. This is because if their views on what they want out of the OS differ from the kernel admins they have no choice but to fork.
But a RedHat version of GNU/Hurd could be composed of whatever OS servers they choose without any patching. They could mix and match the kernel distribution in much the same way as they currently mix and match the userspace distribution. Because most of the Hurd kernel *is* a userspace distribution.
The thing is, Linus does care about speed difference. A lot.
And I'm sorry, but the basic GNU software set is a disaster. I speak from personal experience. I've been hassling with their bugs for years. Ten or so years ago it was hassling with the official port of GNU source control to DOS -- done by somebody who didn't understand FAT filesystem semantics. Last year I had to sweat blood to deal with the reference counting bug in glibc. This bug was eventually fixed -- after glibc maintenance moved from GNU to Red Hat. What can you say about a team that takes so long to fix such a basic bug? Aside from the fact that it has Lots of Really Great Ideas?
Face it, GNU has "succeeded" only because you need it to do anything useful with the Linux kernel.
Well, of course not. Hurd as been around much longer, if you count its Project Mach origins. If Hurd had had its act together back when LT was a grad student, he probably never would have bothered to write the Linux kernel. Proably just as well...Look, if Hurd is so wonderful and important, then you should want something serious to happen with it. That is not going to happen if all its supporters just stand around saying "cool!" And it's certainly not going to happen if nobody asks why this project has been chasing its own tail for so long.
How is HURD that different? What benifet does it provide the user that hasn't been seen elsewhere? HURD is, at best, a research OS. It has neither the mindshare nor the technological advances to become mainstream. If you compare it with other research OSs, its not very interesting even then. Sure everyone has a right to work on what they think is interesting, but people also have the right to call a particular project pointless and redundant.
A deep unwavering belief is a sure sign you're missing something...
Not really. Even if you have an L4 HURD that is complete and stable, do you really have anything more than a stable, secure UNIX system? Those are a dime a dozen these days! The microkernel will not make it super-stable or super-secure, and competing OSs (which have the maturity of code that marks a stable/secure system) will be ahead of it in these respect for at least a decade or more. There is nothing in the HURD to justify its existance; it provides nothing to the world that doesn't already exist. Maybe that's fine for a research project, but IIRC, research projects are supposed to try new things!
A deep unwavering belief is a sure sign you're missing something...
I've noticed this too.
Fortunately, I have been wearing a tinfoil hat which reflects the government mind-control ray away!
Conformity is the jailer of freedom and enemy of growth. -JFK
But the kernel is the operating system!
A Government Is a Body of People, Usually Notably Ungoverned
How does Hurd compare to xMach?
A Government Is a Body of People, Usually Notably Ungoverned