xMach Announces Core Team
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."
It's great to know that no one in the GPL community has ever bashed the BSD license. That's so righteous of you guys. We should follow your example.
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?
A Government Is a Body of People, Usually Notably Ungoverned
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?
Gladly. And I don't even have to do it myself.
For starters, check out On u-Kernel Construction, 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.
I would like to clarify to everyone that the site isn't in fact down, nor is any server related to the site. What happened is my DNS servers (which are on Verizon internet) became unreachable _NOT_ because of Slashdot, but because _my DSL is down_. To clarify, the site is hosted on soem rather fat pipes, not hosted by me. One mirror runs RedHat Linux, the other runs FreeBSD. They are both up and running. If you want to view the Core Team page complete with everyone's picture on the Canadian server, try http://www.velocet.ca/~smegsite/xmach/core.html , if you want to view the entire webpage, which is a few hours out of date, try http://xMach.FreeOS.com. Thanks. And to clarify one more thing, Mach Mach3 was monolithic, so all of you people talking about a lot of Mach 2.5 derivitives being exactly the same, you're wrong. And yes there have been a number of 'production' oses based on a microkernel Mach. Unicos comes to mind.
--
Someone made a statement along these lines (Microkernels are a good idea but Mach is a poor implementation of the idea of a microkernel) earlier, in the slashdot discussion on the kernel of Mac OS X and Linus' long-standing dislike for microkernels. Like you, they failed to back this assertion up with anything at all.
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.
Irritable, left-wing and possibly humorous bumper stickers and t-shirts
It seems you are refering to this post of mine a while ago. For proof of Mach's deficiencies I linked to two research papers; On Microkernel Construction and The Impact of Operating System Structure on Memory System Performance in that post. If you want the capsule summary then here's a short list of Mach's deficiencies as posed by Liedtke
- Inefficient kernel-user switching (i.e. system calls spend too much unecessary time in the kernel).
- Inefficient address switching (i.e. the number of cache and TLB misses in the Mach microkernel is also absurdly large).
- The performance of IPC operations and thread switching is subpar. (this is related to the above points).
- It isn't optimized for specific hardware and instead has a Hardware Abstraction Layer which slows it down considerably.
The paper is a few years old so the Mach people may have tackled some of these problems by now.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 and EROS 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.
--