GNU/Hurd Gets POSIX Threads
An anonymous reader writes "Neal Walfield announced the first release of RMGPT, which is (or rather, aspires to one day be) a complete, portable implementation of IEEE Std 1003.1-2001 threads also known as POSIX threads. With this new pthreads library, it will soon be possible to run complex software packages on the Hurd, including the GNOME and KDE desktops, the OpenOffice suite, and the Mozilla web browser. Find more information here, including the humorous meaning behind RMGPT, and insight into a future Hurd release..."
If you're interested, take a look at Towards a New Strategy of OS Design - It explains what we're doing different with the Hurd, and what the core servers are used for.
Tks,
Jeff Bailey
Here is another one
The idea of a microkernel is to have multiple seperate servers running on top of it, providing some clear seperation between different parts of the system. Hurd is the only one of the three that does this, MkLinux and Darwin are both implemented as a single monolithic server on top of the Mach microkernel.
Also, they are based on different versions of Mach. I believe Darwin is based on 2.5, MkLinux on 3.0 and Hurd on 4.0 but don't quote me on that.
Hurd is an OS with a much more "correct" architecture ideology than Linux and BSD. In its core it is much more universal and modular. Unfortunately, there is a huge gap between the paper and reality. The way it has been developed showed many HURDles among the GNU community. The more lavish, intellectual and less pragmatic approach to development made HURD a pariah. That's why Linux came up and ran over it. Being a traditional monlithic kernel that nearly carried all the ills of a 20 year kernel ideology, the penguin won just by being more closed to Earth.
However I hope that one day HURD will be able to hit the stands. It has been a pitty to see such a good idea living such a sad life. Frankly, we have been quite poor in kernels for the last years...
The main purported advantage to microkernels are stability and flexibility, along with all the other good stuff that comes from modularity of course. A microkernel can run different personalities which present what we generally think of as a kernel interface to the outside, as user processors. So for instance the same box, the same microkernel, could be running a Windows personality for one user, a Mac for another, *nix for a third, all with effective root priveliges if need be, but without actually being able to do any damage outside their virtual sandbox... from a developers standpoint it's an incredible potential, I really can't do it justice but you should read this.
The potential here has never been exploited, unfortunately. Every existing microkernel AFAIK has wound up ditching the microkernel design at some point down the road, aiming to produce a particular personality (whether win32, the near-BSD personality of Darwin, etc.) and integrating key features of that personality into kernel space for performance reasons, essentially nullifying the whole microkernel idea. The HURD is the exception, and yes it's been a long time making, and it's still not ready yet, but if it ever does hit primetime it will be a very interesting system.
As to the performance hits, you're right that they are there, however there is a long history of some very smart people working on that problem, and it's gotten a LOT better. I think the current performance winner among microkernels is L4 and you can run a Linux personality on it without seeing a noticeable performance loss over running real Linux on the same processor - that's some very nice optimisation. There has been talk of porting the HURD to run on L4 instead of GNU Mach at some point, I think actually some people working on the problem areas, but for the moment there is no need - HURD is still very much in the developers only phase, it's not for production systems yet so performance isn't critical.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Friends don't let friends enable ecmascript.
I don't know if the Hurd can manage this kind of recovery. What I'm sure about is that such an recovery mechanism would be complex - and implementing it hard work.
I'm not convinced that the effort needed to enforce this kind of fault tolerance would be reasonable - on one hand you could tolerate failures of the Unix personality, on the other this would add complexity to both the kernel (to be able to restart demons/servers) and to the servers (they would need to be able to restore their state at restart) - IMHO, for a single OS machine, it sounds overkill.
One case where I think such an architecture makes a lot of sense is if you implement many virtualised OSes on one single machine. For instance you would have n logical servers that share one micro-kernel - in this case, if one of the virtual servers fails, the others are not affected.