xMach Announces Core Team 132
Joseph Mallett writes "xMach today announces our brand new Core Team. We've also (finally) added a CVS server, as well as a CVSweb front-end so people can browse the source. Since the first Slashdot post, we've accomplished one of our major goals of being GPL-free (and thus fully BSD License'd), as well as added two mailing lists and fixed the wishlist code. Due to Mach's history with Multiprocessing, we are currently looking more and more and the ideas of distributed processing. The code base is now cleaned up, so that everything should compile out of box. Some of our more abitious goals are to move to a multiserver format, and do a major update of the filesystem interfaces, short term. And like the HURD, it's software that's here right now, and isn't vapourware."
Re:xmach.org site (Score:1)
Re:I am very tired of the letter X (Score:1)
~^~~^~^^~~^
Re:"Mach is a bad microkernel implementation".. HO (Score:1)
The L4 micro-kernel is the "successor" to Mach. The initial L4 developers were the primary developers of Mach 4. There is a Linux server for L4, and the site claims only a 4% performance hit compared to monolithic Linux - and that's only partially opitmized.
Microkernels can provide better performance and more flexibility than monolithic kernels, but they are much harder to design and develop properly.
Re:MacOS X? (Score:1)
*sigh*
MacOS doesn't use [apple.com] a traditional Mach uK. It completely bypasses Mach for many functions, all because Mach is too slow to do many things.
The wheel is turning but the hamster is dead.
Re:Try proof reading that (Score:1)
> but has anyone written a microkernel other than Microsoft
QNX Software Systems has been writing microkernels for quite a number of years now; both QNX 4 and their current OS are true microkernels.
www.qnx.com [qnx.com]
NT's kernel is "micro" only by being "Microsoft".
Be's kernel is sort-of like a microkernel, although drivers and some services (such as the filesystem) are dynamically loaded into kernel space instead of their own space.
Re:"Mach is a bad microkernel implementation".. HO (Score:1)
Be's kernel isn't a microkernel because drivers and services like the filesystem are loaded into kernel space, not as separate processes.
If Be ever gets around to releasing a BeOS update with the new networking (BONE), it'll be even less of a microkernel, because BONE moves networking into the kernel.
That's µ-kernel, not u-kernel. (Score:1)
--
Re:That's µ-kernel, not u-kernel. (Score:1)
Again, I liked the post, but your use of "u-kernel" made it seem less knowledgeable, sort of like when you read an otherwise informative post about computer security and then the person uses "virii"[?] [perl.com] three times in a row.
--
Re:*BSD is dying (Score:1)
What a worthy goal! (Score:1)
Getting rid of the GPL, what a worthy goal!
Re:MacOS X? (Score:1)
BTW, the diagram there surprised me -- I thought that things like Carbon and Cocoa used some of the functionality provided by the BSD layer. The VFS, for example, and the networking code. Could the diagram be wrong?
--
Re:how is this different from darwin? (Score:1)
> Carbon consists of most of the classic Macintosh > APIs save for reentrant code.
What do you mean by this? It could be read a couple of different ways, and one of them isn't correct.
--
Re:bashing the GPL.... (Score:1)
My head still hurts. (And this is getting more silly :)
HURD "vapourware" (Score:1)
This must be a curious definition of "vapourware"; I clearly remember downloading and running Hurd some years ago.
Re:Verizon (Score:1)
--
Slashdot didn't accept your submission? hackerheaven.org [hackerheaven.org] will!
HURD "may" go L4 (Score:1)
So it seems that Mach has really performances problems: a BIG problem for a kernel!
Re:Try proof reading that (Score:1)
Oh, really [apple.com]?
Re:Must Have Been My Post. (Score:1)
Oops :)
My apologies
Thanks for the great info.. C4L and all of you who replied..
/me is happy
I am very tired of the letter X (Score:1)
The middle one is real (Score:1)
MOD THIS UP! (Score:1)
Quite insidious, good work!
Re:Must Have Been My Post. (Score:1)
Re:What a worthy goal! (Score:1)
Re:Try proof reading that (Score:1)
The *display subsystem* runs in kernel *space*, for performance.
Re:Slashdot Effect (Score:1)
Re:Proofreader, proofread thyself. (Score:1)
--
Re:Try proof reading that (Score:1)
Re:"Mach is a bad microkernel implementation".. HO (Score:1)
Re:Try proof reading that (Score:1)
Re:Slashdot Effect (Score:1)
As far as the second part of your post is concerned, I have no idea what you are trying to say. What does NT have to do with xmach.org being down? Then again, this is Slashdot, I no longer actually expect posts to be on-topic.
For the record, if you think I run NT you are sadly mistaken. In my house I have 1 Win2k box, 1 Win98 box, 1 Solaris 2.6 system (SPARC), 1 Solaris 2.7 system (SPARC), 3 FreeBSD 4.3 systems (DEC Alpha), 6 FreeBSD 4.3 systems (x86), 2 FreeBSD 3.5 systems, 1 Cisco Router and 2 Cisco Switches.
-sirket
Re:Slashdot Effect (Score:1)
Server info
Apache/1.3.14 (Unix) (Red-Hat/Linux) PHP/4.0.4pl1
-sirket
Re:"Mach is a bad microkernel implementation".. HO (Score:1)
Re:how is this different from darwin? (Score:1)
You can maintain a completely separate tree of your own changes (a coed fork), and distribute/sell the changed code/binaries without talking to Apple, or giving Apple rights to the modified code.
It includes little/none of the Apple worked on code/technologies. This means that Apple's Obj-C compiler and frameworks are not currently included (the compiler changes are being merged back slowly) the concept of Frameworks is not there, the MacOS X layout is not there, etc.. And the way the kernal has evolved from its Mach basis is/will be different (different emphasies).
So the fact that Apple is not involved is both a blessing and a curse.
Re:Try proof reading that (Score:1)
yes, but the whole point of a microkernel is to have a different fault domain for each subsystem (and to use message passing ipc between them). using a single server completely defeats that.
For example, take the fact that OSF/1 based systems use Mach message passing and VM, so they can handle such fun concepts as reserve-on-write memory allocation with message-callbacks on failure. In UNIX terms, that means that "malloc(1024*1024*1024)" does not reduce the amount of VM available... which is both scary and useful at the same time ;-)
linux and most other unix-like OSes (with notable exception of solaris) over commit memory as well. this is nothing new. recently people have complained about the inability to completely disable it in linux.
The proliferation of copy-on-write semantics in Mach-derived systems is also very useful, and again benefits greatly from the way mach does message-passing instead just having signals to convey information from the kernel to user space.
copy on write and signals have nothing to do with each other. also, message passing ipc is more expensive than just invoking a user space signal handler. message passing between user space and kernel space is pretty much useless, unless you want to export kernel interfaces (eg, vm pager, fs) directly to user space.
Re:Why wont MACH die? :( (Score:1)
*BARF* *wipes off chin* Sorry, I couldn't help myself. I don't know enough about Win 95 architecture to comment, but it's certainly not stable or fast enough to be any kind of good design. And certainly, not even CLOSE to exokernel.
-----
"Goose... Geese... Moose... MOOSE!?!?!"
Re:Try proof reading that (Score:1)
-----
"Goose... Geese... Moose... MOOSE!?!?!"
Re:That's µ-kernel, not u-kernel. (Score:1)
Thank you very much for reducing my informed, intelligent and helpful post(which I took quite a bit of time out of my day to write simply because I wanted to help someone out), to piece of shit by a completely petty and stupid nitpick. No, I really appreciate it.Thank you. Perhaps you should try adding to the discussion next time, instead of bitching about something completely unimportant. If you're constipated(as seems to be the case), might I suggest adding more fiber to your diet.
-----
"Goose... Geese... Moose... MOOSE!?!?!"
Re:Try proof reading that (Score:1)
NeXT [next.com], MacOS X [apple.com], MacOS X server(in use for 2 years now).
-----
"Goose... Geese... Moose... MOOSE!?!?!"
Re:"Mach is a bad microkernel implementation".. HO (Score:1)
Completely incorrect. L4 is the successor to L3. Perhaps they had started with Mach, but that's because most academia research revolves around Mach(for some only-God-knows reason). Please see this [slashdot.org] post for more information and links to back this up.
-----
"Goose... Geese... Moose... MOOSE!?!?!"
Re:That's µ-kernel, not u-kernel. (Score:1)
-----
"Goose... Geese... Moose... MOOSE!?!?!"
Re:Why wont MACH die? :( (Score:1)
Re:and your proof my flamming friend is? (Score:1)
Re:What a worthy goal! (Score:1)
Re:Yet another bloated slow waste of time (Score:1)
Re:Must Have Been My Post. (Score:1)
Also note that all the "better" microkernels (Neutrino, EROS, BeOS) are non-free. I think that's the basic reason that free software projects are not using them.
Re:a gift (Score:1)
Re:Try proof reading that (Score:1)
Re:What a worthy goal! (Score:1)
Re:I am very tired of the letter X (Score:1)
Re:What a worthy goal! (Score:1)
what about tru64??? (Score:1)
really?
Tru64 is on top of Mach. the following is from tru64unix.compaq.com...
here's the scoop from compaq/digital [compaq.com]
Re:which part is that? (Score:1)
Re:which part is that? (Score:1)
you will see that GPL v3 will allow internet only distribution of the source.
Re:HURD not vapor?! (Score:1)
--
Re:xmach.org site (Score:1)
--
Re:"Mach is a bad microkernel implementation".. HO (Score:2)
- Mach is rather bloated. The Mach kernel was significantly larger than the Linux server, which IMHO tells a lot.
- Mach has evolved into a giant patchwork. The source code is FULL of (years old) comments like "XXX THIS REALLY NEEDS TO BE FIXED !!! XXX". In general, the code is messy, to say the least.
- Some internal MACH interfaces are definitely not well-thought out. As an example, reading from a block device required to send a message first to set the block number, and then another message to initiate the read. Apart from this uneccessary overhead, the device driver thus needs to maintain more state which inhibits any possible parallelism.
Mach has some nice ideas, but IMHO it needs to be rewritten from scratch - right now, this "micro"kernel is carrying around much more historical baggage than some monolithic kernels, thus skillfully combining the disadvantages of both monolithic and microkernels while avoiding most benefits of any of them.
Re:Try proof reading that (Score:2)
- A.P.
--
Forget Napster. Why not really break the law?
Re:Why the BSD license is better (Score:2)
GPL = Kid who shares his toys with goodwill, and says that anyone who wants to use the toy must share their toys as well.
Re:I am very tired of the letter X (Score:2)
Re:"Mach is a bad microkernel implementation".. HO (Score:2)
"The original L4 -kernel for x86 [tu-dresden.de] has some shortcomings which we intend to fix with this new implementation. The Fiasco kernel:
See also the L4Linux [tu-dresden.de] project:
"L4Linux is a port of the Linux kernel to the L4/x86 and Fiasco -kernels (microkernels), two kernels implementing the L4 -kernel API."
"L4Linux runs in user-mode on top of the -kernel, side-by-side with other -kernel applications such as real-time components. It is binary-compatible with the normal Linux/x86 kernel and can be used with any PC-based Linux distribution."
--
Re:bashing the GPL.... (Score:2)
It's like the motto "live free or die". What if I don't want to live free? Does it mean I don't have the freedom to decide not to live free - and am therefore being not free to decide whether or not to live free.
Ow, my head hurts...
Re:What a worthy goal! (Score:2)
But for some people, the restrictions in the GPL are still too much. It's much, much better than proprietary licenses, but it still has restrictions on distributions. The xMach team wants to create an operating system with only copycenter/unrestricted software. What a worthy goal!
'There was a village that had a magical apple tree. Whenever an apple was picked from the tree, another would replace it. The villagers were well fed and had no want. But some villagers took their apples and locked them away, saying "Look at those foolish people! They do not lock away their apples. Surely someone will come and steal them."'
Re:What a worthy goal! (Score:2)
Re:bashing the GPL.... (Score:2)
You are not free if you do not have the choice to be free or unfree. And if you have the ability to choose unfreeness, then you are free. Even if there is no turning back on unfreeness, at least you were free at the time you made that choice.
This is in stark contrast to proprietary software. You are born free and then subsequently choose to use proprietary software. If you don't like it, stop using it. It's like walking into a closet and shutting the door behind you. Your movement is now restricted because you are in a closet, but you are still free and the closet is not subjugating. Just step out! People *choose* to use Linux or BSD instead of Windows. How can they possibly be unfree if they have that choice?
Re:and your proof my flamming friend is? (Score:2)
Note that it states that the file is GPLed, with no mention of the BSD license or, in fact, of the BSD copyright ("original taken from" is not a copyright notice that I'm familiar with). I assume that they got permission to do this, or the the file was public-domain, especially since (I'm almost certain) 1993 pre-dates the removal of the advertising clause in the BSDL, which might have been sufficient reason to avoid using the file altogether. I can really see them stealing the header and leaving attribution, either.
Re:Try proof reading that (Score:2)
In mach, they most certainly do. There are a number of resources that are difficult to copy-on-write because they are too high-level to be managed by the VM. With mach's copy-on-write semantics, you can actually manage the copy in a user-space callback.
message passing ipc is more expensive than just invoking a user space signal handler
Expensive yes, but much richer. Sending a SIGFIZZ to the process is all well and good, but in most cases, the process then needs to go dip into some kernel datastructure or make a system call to get more information. With message passing, you get it all in one pass, and you can define richer message classes than the traditional POSIXish signal mechanism can deal with.
the whole point of a microkernel is to have a different fault domain for each subsystem
This is actually a kind of funny statement. Since microkernels are being used most often because they provide a conviniently small and flexible abstraction layer for monolithic operating systems, I think you have to revise your thinking here. Perhaps when microkernels were envisioned this was the idea, but throughout the late '90s and early '00s, we've certainly seen very little of this sort of microkernel use.
This use of microkernels is not invalid, nor is it rare. Would all monolithic OSes benefit from a microkernel-as-abstraction-layer? Yes I think so in the ideal, however many OSes (e.g. Linux) have seen tremendous benefit from the monolithic model that they started with, and to re-impliment on top of, e.g., mach, would be quite painful. I'm not convinced that the benefits would outweigh the cost.
Re:Try proof reading that (Score:2)
Neither one is a very fair statement, since development has progressed dramatically (including at least one major re-implementation along the way) in both cases.
Oh well, trolls can't be right all the time
Re:Try proof reading that (Score:2)
It is important to note that those three systems are monolithic systems running on top of a Mach microkernel. Mach has not, in any of those cases, been modified to the extent that it no longer functions as a true microkernel.
Also, the original post made no such distinction. It made a blanket statement that Mach had never been used in a production OS. This is untrue, and there is a fair deal of advantage in having the microkernel abstraction available, even if you run a monolithic kernel layer on top of it.
For example, take the fact that OSF/1 based systems use Mach message passing and VM, so they can handle such fun concepts as reserve-on-write memory allocation with message-callbacks on failure. In UNIX terms, that means that "malloc(1024*1024*1024)" does not reduce the amount of VM available... which is both scary and useful at the same time
The proliferation of copy-on-write semantics in Mach-derived systems is also very useful, and again benefits greatly from the way mach does message-passing instead just having signals to convey information from the kernel to user space.
Re:MacOS X? (Score:2)
MacOS X? (Score:2)
No more than COBOL, FORTRAN or BASIC stifled programming languages. In this community, such debates are won on the merits.
To most people microkernel == Mach (which has never been used successfully in a production system)
MacOS X?
Re:how is this different from darwin? (Score:2)
Re:Try proof reading that (Score:2)
Re:Try proof reading that (Score:2)
Re:Try proof reading that (Score:2)
Re:Proofreader, proofread thyself. (Score:2)
Re:Try proof reading that (Score:2)
Try proof reading that (Score:2)
try putting in a tiny bit of effort so thousands of people the world around dont have to. BTW - Mach has done more to stiffle microkernels than any theory or performance debate has ever. To most people microkernel == Mach (which has never been used successfully in a production system) or WinNT which just blows. No wonder we're still using monolythic kernels in the year 2001.
Re:Try proof reading that (Score:2)
Re:*BSD thy name is failure (Score:2)
Also, claims of fragmentation in the BSD community are completely bogus. The seperate BSD operating systems are closer in operation than half of the Linux Distributions. OpenBSD is closer to FreeBSD than Slackware is to Debian. If you do not believe that then you have not run them.
The different BSD's are distinct operating systems, like Solaris or HP/UX. They are not fragmented distributions. The Linux world is the fragmented one. There are some 180 linux distributions according to the LDL. Even if only the top 20 or so are reasonably large, that is still a far larger number of distributions than in the BSD camp. And as I already pointed out, half the time the Linux distributions are incompatible with each other, despite being the same OS! (By incompatible I mean that either there are inane library problems (glibc, etc) or they are completely different administratively.)
Do everyone here a favor and go troll somewhere else.
-sirket
Re:how is this different from darwin? (Score:2)
Re:Why wont MACH die? :( (Score:2)
BTW> I was thinking. From looking at the Win95 design, it seems to me that Win95 may just be the most "advanced" of any commerical OS design. Since most Windows95 components are user-level libraries mapped into each program's address space, it would seem that Win95 is the original exokernel!
Re:Why the BSD license is better (Score:2)
http://www.benews.com/cgi-bin/mwf/topic_show.pl?i
John has told me that he would fix it, and even today that he has fixed it, but beats me where the new binary is! :)
The moral of the story is, regardless of what license you choose, some people will try to rip you off anyway. So there's no point in further discouraging legitimate developers, who could possibly give back in the future, with a license that binds their soul to the project.
Re:"Mach is a bad microkernel implementation".. HO (Score:2)
As I recall, there were two really major problems with mach:
1) Buggy as all get out
2) Enormous message-passing latencies. System calls that take a couple of microseconds under HPUX took 100s of microseconds under mach on the same hardware.
Re:"Mach is a bad microkernel implementation".. HO (Score:2)
L4
Will someone please attempt to assert or refute, using some kind of solid logic or numbers or something, the statement that microkernels are a good idea but Mach is a bad implementation of that idea? What is done wrong in Mach, and can it be fixed?
search the l-k list archives for some examples. one point is that only one thread at a time can be in any module, as a result of messages being queued. mach is much slower than other microkernels when it comes to message passing. another issue is that when you shove use a monolithic unix server (eg, as do mklinux, bsd lites, next), you lose all the advantage of using a microkernel in the first place. if your single server dies, everthing's shot anyway. also, message passing is not the only way to isolate fault domains. (see here [nec.com].)
i don't believe that message passing really gains you much abstration. if you had all the vm calls/messages placed in a generic way, it wouldn't let you optimize for the specific pager implementation. but, to allow an easy drop in replacement, you wouldn't be able to depend on the current vm's subtle behaviors. this is just my thought; i haven't exactly done a lot of kernel design, so take that with a grain of salt.
and, btw, this is kind offtopic, but while we're VAGUELY near the subject: someone once told me that Mach has the ability to host multiple kernels on the same machine at the same time. Is this true?
yes, it's definetly true. i know the mklinux server has been debugged using another running instance of the linux server. people have often talked about run time switching between mac os x and mklinux, but nothing's come of it. and to be safe, it would need some resource locking, eg, so that you don't have the two servers writing to the same disk partition.
Re:Why the BSD license is better (Score:2)
"I may not have morals, but I have standards."
Re:Must Have Been My Post. (Score:2)
That's actually not true. L4 [l4ka.org] is GPL, and highly regarded. HURD will probably be ported to it soon, with a great performance increase.
"That old saw about the early bird just goes to show that the worm should have stayed in bed."
Re:"Mach is a bad microkernel implementation".. HO (Score:2)
I don't know enough of the Mach internals to know exactly why it's such a poor performer, but I have read alot of theories put forth. The most common(and accepted) reason is that Mach's memory management is too abstract and that because Mach is built on a hardware abstraction layer. Those two reasons are directly interrelated.
The Hardware abstraction layer(HAL) restricts the u-kernel to operation on a "generic machine". Everything is abstracted in the sense that the HAL contains the units which are common to all CPU architectures. This was done to improve portability. However, it sacrifices a great deal of performance because alot of issues are platform dependent. Things such as page size must be dictated by the architecture you are running on. But because Mach uses the HAL to abstract this away, Mach performance suffers a great deal in memory operations. Often, the HAL dictates a page size which is too small/large for the architecture. The hardware can't handle address translation anymore, so the kernel has to do this manually. This is very expensive.
In general, Mach's architecture just seems poorly designed from what I've read. Alot of research has been done on this topic, and they're coming to the realization that u-kernels are inherently non-portable. That's a very important point. This shouldn't be surprising either because the u-kernel is so small that mostly only platform dependent code end up in there. L4 is 12k, Eros is 32k(I think), VSTa is around 50k and QNX is less than 10k!
The good thing about this approach is that most(if not all) of the platform-dependent code is wrapped up in the u-kernel. The rest of the system is completely portable. So all you have to do is re-write about half of a 20k kernel for the new architecture, and you're done! Re-compile and off you go. Theoretically at least.
If mach is, indeed, a bad implementation of the microkernel, what would be a *good* implementation of the microkernel? Are any well-designed microkernels out there?
Good u-kernels that have implementations with performance comparable to or exceeding Linux:
If there are, then what is it that repeatedly leads projects like xMach/HURD/OS X/mkLinux to embrace Mach as opposed to one of the competing microkernels?
I have no idea. Ignorance of their existence probably.
Unless i am quite confused, supposedly, because the interaction between the microkernel and the OS is somewhat abstract, you ought to be able to replace the microkernel with a better one as long as the interface is the same. Is there any reason a better microkernel with the same software-side interface as Mach could not be written, and used to replace mach?
Yes you could. But then you'd just have Mach.
someone once told me that Mach has the ability to host multiple kernels on the same machine at the same time. Is this true? How does that work in terms of sharing the hardware? How do you go about doing this?
Yes that's true, but not in the way you're thinking. Both kernels don't run as kernels at the same time. A well-engineered u-kernel is so thin and provides such a minimal interface to the hardware, that by just slightly modifying Linux(or other kernel) you can get it to run on top of the u-kernel like any other application, and it could do everything that Linux does running on the bare hardware. See L4Linux, MkLinux, Darwin/MacOS X and even this xMach project as examples. The key to good performance is to provide as small a u-kernel with as minimal an interface as feasible to avoid performance problems. It will never run as fast as on bare hardware, but you can get pretty damn close.
I am just thinking that at this point, it would be an utterly useless but nifty parlor trick to try to get Mac OS X/Darwin, MkLinux, xMach and HURD running off the same mach microkernel on the same machine at the same time.
Not so useless as you might think. The problem with any new operating system or kernel is software. There's nothing written for it yet. But what if you could run the Linux kernel on top of your new OS? You'd have near instant access to whatever drivers and applications are currently available for Linux without any porting effort! (except for the initial Linux port) Then you can have a complete system and start writing native drivers for what you need.
-----
"Goose... Geese... Moose... MOOSE!?!?!"
Looking through the comments.. (Score:2)
To have fun and to meet likeminded people who all think they can contribute together to do something worthwile!
Re:"Mach is a bad microkernel implementation".. HO (Score:2)
xmach.org site (Score:2)
Re:What a worthy goal! (Score:2)
Re:"Mach is a bad microkernel implementation".. HO (Score:2)
As to why (so termed) 1st generation microkernels are still used as the base for newer systems, I can only speculate - but I believe that tradition is the main reason here (teaching an old dog new tricks tend to be hard). Just for the record, however, there is actually an effort to port it to L4 [gnu.org].
For more info on L4 related issues, you could have a look at L4Ka [l4ka.org], a C++ish implementation of the L4 API.
Re:I am very tired of the letter X (Score:2)
Bad news. Officially, MacOS X is "MacOS X 10.0". Future versions will be numbered "MacOS X x.y" and so on.
The idea is to distinguish it from MacOS Classic which isn't going away for a while. Too bad - I was hoping for a MacOS XI.II some day.
Unsettling MOTD at my ISP.
Re:Why the BSD license is better (Score:2)
The current person cannot remove or change the license. This does provide the greatest freedom for the next person to receive the code, because we are not asking any more of them than that they acknowledge that we wrote the code.
GPL = Kid who shares his toys but expects a return if the person enjoys it and makes it better. BSD = kid who gives his toys to the Goodwill and hopes that someone will find them useful, without demanding or expecting anything in return.
---
"Do not meddle in the affairs of sysadmins,
Re:What a worthy goal! (Score:2)
Haven't we all already adopted it?
Most (all?) GPL code says somethig to the effect of "This is licensed under GPL 2.2 or later"
Ryan T. Sammartino
Re:bashing the GPL.... (Score:3)
However, the xMach guys are not bashing the GPL. They are merely not desiring to use it. Can't you see the difference? Are you offended that "freedom" means that people don't have to make the same choices as you?
Re:"Mach is a bad microkernel implementation".. HO (Score:3)
Gladly. And I don't even have to do it myself.
For starters, check out On u-Kernel Construction [nec.com], a paper written by Jochen Liedke for the 15th ACM Symposium on Operating System Principles. It contains a thorough technical explanation of why Mach performs poorly, and provides corroborating evidence measured on multiple architectures.
Additionally, using Mach as a "hardware abstraction layer" for a userspace Unix server, rather than as a true microkernel, only compounds the kernel and related subsystems' poor performance.
Verizon (Score:4)
--
"Mach is a bad microkernel implementation".. HOW? (Score:5)
Will someone please attempt to assert or refute, using some kind of solid logic or numbers or something, the statement that microkernels are a good idea but Mach is a bad implementation of that idea? What is done wrong in Mach, and can it be fixed?
If mach is, indeed, a bad implementation of the microkernel, what would be a *good* implementation of the microkernel? Are any well-designed microkernels out there? If there are, then what is it that repeatedly leads projects like xMach/HURD/OS X/mkLinux to embrace Mach as opposed to one of the competing microkernels
Past that: Unless i am quite confused, supposedly, because the interaction between the microkernel and the OS is somewhat abstract, you ought to be able to replace the microkernel with a better one as long as the interface is the same. Is there any reason a better microkernel with the same software-side interface as Mach could not be written, and used to replace mach?
and, btw, this is kind offtopic, but while we're VAGUELY near the subject: someone once told me that Mach has the ability to host multiple kernels on the same machine at the same time. Is this true? How does that work in terms of sharing the hardware? How do you go about doing this?
I am just thinking that at this point, it would be an utterly useless but nifty parlor trick to try to get Mac OS X/Darwin, MkLinux, xMach and HURD running off the same mach microkernel on the same machine at the same time.
Thanx0r. I look forward to reading the xMach web page and finding out what it is as soon as their web provider recovers.
Must Have Been My Post. (Score:5)
It seems you are refering to this post [slashdot.org] of mine a while ago. For proof of Mach's deficiencies I linked to two research papers; On Microkernel Construction [nec.com] and The Impact of Operating System Structure on Memory System Performance [cmu.edu] in that post. If you want the capsule summary then here's a short list of Mach's deficiencies as posed by Liedtke
If mach is, indeed, a bad implementation of the microkernel, what would be a *good* implementation of the microkernel? Are any well-designed microkernels out there?
Neutrino [www.swd.de] and EROS [eros-os.org] to name two.
If there are, then what is it that repeatedly leads projects like xMach/HURD/OS X/mkLinux to embrace Mach as opposed to one of the competing microkernels?
The same reason most of us are using Java and C++ instead of SmallTalk, Lisp or Objective-C. Developer inertia and people falling to the more hyped and/or better sold technology.
and, btw, this is kind offtopic, but while we're VAGUELY near the subject: someone once told me that Mach has the ability to host multiple kernels on the same machine at the same time. Is this true? How does that work in terms of sharing the hardware? How do you go about doing this?
A microkernel can load different modules at runtime that may be OS emulation layers that mimic the behaviors of certain OSes even down to memory management and paging. Since you can theroetically load as many modules as you want, you can load various emulation layers and mimic several OSes at once. For instance OS X has a microkernel that loads modules to mimic BSD as well as old Apple APIs (Classic) as well as teh new stuff (Carbon). Here's a graphical look at how the MacOS X architecture [redshed.net].
--