Domain: l4ka.org
Stories and comments across the archive that link to l4ka.org.
Comments · 79
-
Re:Why not expect QNX-like reliability everywhere?
What's disappointing is that the Hurd kernel was such a dud. They've been trying to write a microkernel for a decade. Unfortunately, they started with the Mach interprocess communication model, and never escaped.
Well, they've learned the lesson and are beginning to switch the system to the much simpler and faster L4. Problem is that it doesn't have as much features as Mach (which is not a surprise, really, if you know Mach), and replacing them in user space is going to take some time. Still, the work is on, and in two years or so...
-
Re:Obligatory 'talking out of arse' comment
Neal H. Walfield is in charge of porting the Hurd to L4. He's waiting for the Pistachio implementation to be released (which is promised to be soon).
L4 is independent of the Hurd. It's a research-project started by Prof. Jochen Lietdke. It's performance seems to be good (unlike Mach's), and its structure is very different from that of Mach, so the Hurd developers want to port the Hurd to L4.
-
Re:Tha HURD
Actually, microkernels have the potential to increase the performance of applications such as databases and multimedia.
A very good read that I recommend to anyone interested in operating systems is Towards Real Microkernels by Jochen Liedtke. It explains the advantages of microkernel-based systems, what is wrong with older microkernels like Mach, and why current second-generation microkernels are better.
-
Re:Will they have to change the name?
Actually, when distinguishing between implementations of the Hurd on different microkernels, we ususally say Hurd/Mach versus Hurd/L4. This is consistent with GNU/Linux and GNU/Hurd, ie. HigherLayer/LowerLayer.
OSKit-Mach is just a superior implementation of Mach, so we'd still call it Hurd/Mach if we needed to make a distinction.
Real improvements to the Hurd will come with the eventual port to the microkernel which is much superior to Mach (and the answer to current anti-microkernel FUD).
-
Re:Corporate backing?
The short version of the story is that it is an object oriented paradigm in which every class is a process and every instance is a thread. It needs hyper fast messaging and process/thread swapping. No other OS will do that.
Someone obviously hasn't done their research:
L4
EROS
Both of these kernels are vastly superior to anything they will be able to build for message passing and context switching speed. -
Re:not trustful
Opening up the source code for the QNX Neutrino kernel would be excellent for many companies, except for QSSL which would probably go bankrupt soon afterwards.
There is no need for Neutrino -- the L4ka project creates -kernels that match Neutrino in quality and speed.Such agreements do not need to convince you, but Consumer Electronic Giants.
No. It matters to me even more than to those giants. They have at least the money to buy proprietary solutions or even other giants. I am not talking here about an embedded OS inside of my toaster. Im arguing against those who try to convince me to develop for AmigaDE or Intent. As a developer I have to choose development tools and platforms which either have a huge market backing or are "future-safe" which equals to open source. Elate/Intent and AmigaDE neither has market forces behind it nor is it future-safe. ;) As a developer or consumer this is what mainly should matter to you. :) -
perhaps it should be based on this
-
Re:OS XWe're diverging off topic here, but we're getting into one of my favorite areas...
Yeah, NeXT was waayyy ahead of it's time. The same thing goes for apple, just somewhat less so. As my friend Eric said, "Apple's problem is that it tries to sell stuff that's ahead of it's time to people who don't appreciate it." I REALLY like Apple hardware, and if I weren't a poor college student, I'd have a G4 machine (or a used UltraSPARC). Did anyone notice that the slashdot article last week about the dual CPU machines for artists had some benchmarks with dual 400 MHZ G4s lagging not so far behind dual 1.7 GHz Xeons?
Now, if only Apple would throw a more modern micokernel (caugh port l4 caugh) under Darwin, I'd pretty much be forced to sell my soul for a new machine. Provided of course, the kernel was still open source.
Microsoft wanted NT to be a microkernel OS, but they couldn't quite pull it off for performance reasons. Apple managed to pull it off with an old microkernel. Imagine how OS XI would fly with a higher performance (and smaller and simpler) micokernel under the hood.
Warning: Micokernel rant
I don't mean to start a flame war, but Mach has way too many features to make implementation and optimization easy. Small micokernels rock! I had to benchmark the memory latency of several systems for my systems design class. I chose my personal box running Linux and my personal box running QNX for two of the systems. Linux showed the expected gradual transition from cache latency to RAM latency as the size of the buffer used in the benchmark approached the cache size. However, under QNX the memory latency managed to stay very low until the benchmark buffer size got very close to the cache size, and then there was a rapid transition to the RAM latency. This shows that small microkernels are more resistant to cache thrashing (yes, I did boot Linux into runlevel 2 and kept applications to a minimum) because you have fewer bites of kernel code that are continually pushing stuff out of the cache. I'm not sure why the user-level servers didn't offset this. Maybe QNX tries to buffer system requests and run the user-level servers in batches for performance reasons. In any case, there was a marked difference in the benchmarks on the same hardware. If you combine this with L4's very fast messge passing, modern microkernels make a lot more sense than older microkernels like Mach. If you've got x86 or ARM hardware, check out the L4Ka site. Uwe posted an updated snapshot of the Hazelnut implementation of L4 today. (Supposedly the IPC is blazingly fast. I don't know how they teaked their C to be faster than Jochen's x86 assembly kernel but they did it. I suppose that with only about 11 system calls, you have a lot of time to tweak them all.) It's been almost a year since the last snapshot was posted, but the mailing lists show that devlopment is going strong. L4 really shows the elegance of simplicity. It has a very small set of well designed features that are very flexible and powerful, which allows L4 to get away with fewer than 10% of the number of system calls used by Mach. -
Re:Hurd SpeedBasically, 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.
First, if you've designed your system in a way that you have to copy large amounts of data between time critical components, you've been doing a terrible job at the design board. Why not share/map the data between different components instead? Second, copying data in and out of the kernel is usually completely unnecessary. The kernel can simply copy the data from one address space to another (no extra copy cost and cache polution by having a temporary copy buffer inside the kernel).
If you have to switch address spaces to switch kernel tasks, you're going to pay for it (in cache misses).
Now, why do you assume that you're going to pay for it in cache misses. True, there may be some cache misses incurred by context switches, but a properly designed kernel can get this down to 12 misses or less (i.e., the kernel touches 12 cache lines doing an IPC between two address spaces, cache lines which may flush out some of the working set of the applications).
-
Re:Hurd Speed
The limitations are going away in the upcoming L4 Version 4 API without hurting the performance. Actually, intra-AS IPC is going to be 10 times faster (~15 cycles).
-
Re:Hurd Speed
The limitations are going away in the upcoming L4 Version 4 API without hurting the performance. Actually, intra-AS IPC is going to be 10 times faster (~15 cycles).
-
Re:microkernel == too slow on x86
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).
-
My Ultimate HandHeldAs far as ideal portables go heres my take:
Power:
Methane powered fuel cell, which provides for at least a months worth of continuous use.The Screen:
Light emitting polymer screen is good here. Nice choice. The screen should also have some mechanism for eliminating finger grease automatically.Form Factor:
A6, there should be no border, so that the screen takes up the entire front. Perhaps with fanned screens like the Psion Protoypes. (can't find a link)Communications:
An array of Software Defined Radios, allows the device to keep in touch with the outside world. Depending on your current usage, they may be configured for Wireless Ethernet, BlueTooth, 3G+, TV, Radio etc. No need for multiple cards and slots. When a bug or security risk is found in any of the protocols, a simple software patch will fix the problem.When data is huge, perhaps something like Infiniband over fibre optic would be useful.
Input:
Touch screen will be supported, along with a slide-out or otherwise concealed keyboard for when you actually want to enter some data. Voice recognition would also be nice, but only when your on your own.CPU
Since were obviously way off into the future here, I would like a micro-distributed memory architecture, with approx 32 CPUs, each with at least 64 MB of memory. The CPU should probably be something like a 64bit ARM, running at whatever clockspeed is fashionable at the time. See this for similar stuff. The interconnects between CPU modules should use something like AMD's HyperTransportOS
For linux fans, the CPU the architecture would support a micro-Beowulf style mode of operation.For me, I'll roll my own Actor Model based system, running on a microkernel, like L4 but with better real-time response. Built in cryptography will keep ALL comms secure.
-
Re:328 registers???
Substantiated claims? Ever heard of Jochen Liedtke and the L4 microkernel? He and many other researchers wrote the following papers if you'd care to read them:
The performance of microkernel based systems
Achieved IPC performance
Microkernels must and can be small
On Microkernel construction
Improved Address-Space Switching on Pentium Processors by Transparently Multiplexing User Address Spaces
If you'd like a breakdown, here it is: x86 sucks for context switch times for two main reasons, a)user/supervisor transition times are an order of magnitude slower than other architectures and b) a poorly designed TLB cache results in a flush whenever a context switch occurs(only if the address space changes of course). Any advantage the x86 architecture gains by having few registers is lost(and then some) by these other factors. This can be readily seen in operating systems and kernels that rely heavily on context switching such as microkernels.
For quick and dirty evidence: here. That's a link showing context switching times for Linux running on an 850 MHz PIII. The times typically hover around 12 microseconds. The papers I linked to above show achieved IPC times for L4 which are steady around 3 microseconds on much lower-end hardware. That's IPC, not just context switching, ie. context switch and copying data to another address space. The L4 teams have tweaked their implementation as fast as it can go on x86, and have achieved performance an order of magnitude higher than Linux(at least in this area). This demonstrates some pretty solid expertise. Given this, they say admit that x86 is very poor in this respect and a great hindrance in designing a good operating system. I believe some of the papers briefly discuss other architectures, but most of the focus is on the x86 platform because it's such a performance problem.
P.S. the fact that the x86 is register poor is not a good thing. Having two few registers to manipulate data is often a hindrance. Saving 3 times as many registers doesn't take that long anyhow.
-
Re:328 registers???
Substantiated claims? Ever heard of Jochen Liedtke and the L4 microkernel? He and many other researchers wrote the following papers if you'd care to read them:
The performance of microkernel based systems
Achieved IPC performance
Microkernels must and can be small
On Microkernel construction
Improved Address-Space Switching on Pentium Processors by Transparently Multiplexing User Address Spaces
If you'd like a breakdown, here it is: x86 sucks for context switch times for two main reasons, a)user/supervisor transition times are an order of magnitude slower than other architectures and b) a poorly designed TLB cache results in a flush whenever a context switch occurs(only if the address space changes of course). Any advantage the x86 architecture gains by having few registers is lost(and then some) by these other factors. This can be readily seen in operating systems and kernels that rely heavily on context switching such as microkernels.
For quick and dirty evidence: here. That's a link showing context switching times for Linux running on an 850 MHz PIII. The times typically hover around 12 microseconds. The papers I linked to above show achieved IPC times for L4 which are steady around 3 microseconds on much lower-end hardware. That's IPC, not just context switching, ie. context switch and copying data to another address space. The L4 teams have tweaked their implementation as fast as it can go on x86, and have achieved performance an order of magnitude higher than Linux(at least in this area). This demonstrates some pretty solid expertise. Given this, they say admit that x86 is very poor in this respect and a great hindrance in designing a good operating system. I believe some of the papers briefly discuss other architectures, but most of the focus is on the x86 platform because it's such a performance problem.
P.S. the fact that the x86 is register poor is not a good thing. Having two few registers to manipulate data is often a hindrance. Saving 3 times as many registers doesn't take that long anyhow.
-
Re:328 registers???
Substantiated claims? Ever heard of Jochen Liedtke and the L4 microkernel? He and many other researchers wrote the following papers if you'd care to read them:
The performance of microkernel based systems
Achieved IPC performance
Microkernels must and can be small
On Microkernel construction
Improved Address-Space Switching on Pentium Processors by Transparently Multiplexing User Address Spaces
If you'd like a breakdown, here it is: x86 sucks for context switch times for two main reasons, a)user/supervisor transition times are an order of magnitude slower than other architectures and b) a poorly designed TLB cache results in a flush whenever a context switch occurs(only if the address space changes of course). Any advantage the x86 architecture gains by having few registers is lost(and then some) by these other factors. This can be readily seen in operating systems and kernels that rely heavily on context switching such as microkernels.
For quick and dirty evidence: here. That's a link showing context switching times for Linux running on an 850 MHz PIII. The times typically hover around 12 microseconds. The papers I linked to above show achieved IPC times for L4 which are steady around 3 microseconds on much lower-end hardware. That's IPC, not just context switching, ie. context switch and copying data to another address space. The L4 teams have tweaked their implementation as fast as it can go on x86, and have achieved performance an order of magnitude higher than Linux(at least in this area). This demonstrates some pretty solid expertise. Given this, they say admit that x86 is very poor in this respect and a great hindrance in designing a good operating system. I believe some of the papers briefly discuss other architectures, but most of the focus is on the x86 platform because it's such a performance problem.
P.S. the fact that the x86 is register poor is not a good thing. Having two few registers to manipulate data is often a hindrance. Saving 3 times as many registers doesn't take that long anyhow.
-
Re:328 registers???
Substantiated claims? Ever heard of Jochen Liedtke and the L4 microkernel? He and many other researchers wrote the following papers if you'd care to read them:
The performance of microkernel based systems
Achieved IPC performance
Microkernels must and can be small
On Microkernel construction
Improved Address-Space Switching on Pentium Processors by Transparently Multiplexing User Address Spaces
If you'd like a breakdown, here it is: x86 sucks for context switch times for two main reasons, a)user/supervisor transition times are an order of magnitude slower than other architectures and b) a poorly designed TLB cache results in a flush whenever a context switch occurs(only if the address space changes of course). Any advantage the x86 architecture gains by having few registers is lost(and then some) by these other factors. This can be readily seen in operating systems and kernels that rely heavily on context switching such as microkernels.
For quick and dirty evidence: here. That's a link showing context switching times for Linux running on an 850 MHz PIII. The times typically hover around 12 microseconds. The papers I linked to above show achieved IPC times for L4 which are steady around 3 microseconds on much lower-end hardware. That's IPC, not just context switching, ie. context switch and copying data to another address space. The L4 teams have tweaked their implementation as fast as it can go on x86, and have achieved performance an order of magnitude higher than Linux(at least in this area). This demonstrates some pretty solid expertise. Given this, they say admit that x86 is very poor in this respect and a great hindrance in designing a good operating system. I believe some of the papers briefly discuss other architectures, but most of the focus is on the x86 platform because it's such a performance problem.
P.S. the fact that the x86 is register poor is not a good thing. Having two few registers to manipulate data is often a hindrance. Saving 3 times as many registers doesn't take that long anyhow.
-
Re:328 registers???
Substantiated claims? Ever heard of Jochen Liedtke and the L4 microkernel? He and many other researchers wrote the following papers if you'd care to read them:
The performance of microkernel based systems
Achieved IPC performance
Microkernels must and can be small
On Microkernel construction
Improved Address-Space Switching on Pentium Processors by Transparently Multiplexing User Address Spaces
If you'd like a breakdown, here it is: x86 sucks for context switch times for two main reasons, a)user/supervisor transition times are an order of magnitude slower than other architectures and b) a poorly designed TLB cache results in a flush whenever a context switch occurs(only if the address space changes of course). Any advantage the x86 architecture gains by having few registers is lost(and then some) by these other factors. This can be readily seen in operating systems and kernels that rely heavily on context switching such as microkernels.
For quick and dirty evidence: here. That's a link showing context switching times for Linux running on an 850 MHz PIII. The times typically hover around 12 microseconds. The papers I linked to above show achieved IPC times for L4 which are steady around 3 microseconds on much lower-end hardware. That's IPC, not just context switching, ie. context switch and copying data to another address space. The L4 teams have tweaked their implementation as fast as it can go on x86, and have achieved performance an order of magnitude higher than Linux(at least in this area). This demonstrates some pretty solid expertise. Given this, they say admit that x86 is very poor in this respect and a great hindrance in designing a good operating system. I believe some of the papers briefly discuss other architectures, but most of the focus is on the x86 platform because it's such a performance problem.
P.S. the fact that the x86 is register poor is not a good thing. Having two few registers to manipulate data is often a hindrance. Saving 3 times as many registers doesn't take that long anyhow.
-
Re:Must Have Been My Post.
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.
That's actually not true. L4 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".. HOWill 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?
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:- QNX: Everyone's heard of this one. They have a very good u-kernel.
- Opearting Systems Group at Dresden: They do alot of great work with u-kernels. They have code for L3 and L4, the first very promising, high-performance u-kernels(though they may not have designed them). They even have Linux running as a service on top of L4, so you may be able to run it right now! Also see This University and the L4KA page for other implementations of L4(ie. other architectures).
- Eros: EROS is a new operating system based on the architectures of earlier high-security capability systems(KeyKOS). Very promising and has performance comparable to L4. The measurements are in the papers section(usually towards the end of the paper). System is GPL'd.
- VSTa: a cool GPL'd hobby u-kernel system(in that it has no university or company backing). This one has a somewhat complete system, ie. self-hosted with gcc, vi, emacs, etc. Runs on a windows partition and uses GRUB to boot(all of which you'll need to run it). No performance metrics that I'm aware of.
- Fluke: No working system as far as I know. The kernel is complete and some performance measurements have been made. Looks promising and source is available(GPL I think).
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. :-) You might be able to engineer the Mach implementation a little better, but having the same interface for the most part means making the same tradeoffs, and then all you'll have left is a bastard child of Mach. *shudder* ;-)
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!?!?!" -
Re:"Mach is a bad microkernel implementation".. HOThe classical paper that contains the numbers suggesting that Mach is... er... suboptimal with respect to performance, is this comparison of L4 versus Mach (and a number of other kernels). This paper does suggest that microkernels need not necessarily be slow if designed and implemented correctly.
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.
For more info on L4 related issues, you could have a look at L4Ka, a C++ish implementation of the L4 API.
-
Re:"Mach is a bad microkernel implementation".. HOThe classical paper that contains the numbers suggesting that Mach is... er... suboptimal with respect to performance, is this comparison of L4 versus Mach (and a number of other kernels). This paper does suggest that microkernels need not necessarily be slow if designed and implemented correctly.
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.
For more info on L4 related issues, you could have a look at L4Ka, a C++ish implementation of the L4 API.
-
Dont forget about L4 and Mach.COMP9242 - Advanced Operating Systems at The University of New South Wales uses the L4 Microkernel as the basis of its course:
http://www.cse.unsw.edu.au/~cs9242/intro/intro.htm lThe textbook that the University of Colorado has a good deal of information about the Mach microkernel (orginally derived from BSD), (although most implementations of Mach are somewhat old and/or abandoned). Mach had its hayday a few (like 8 or more) years ago (with Digital's OSF/1 and the NextSTEP system using the Mach2.5 implementation), but is currently pretty obsolete. The Hurd uses the GnuMach implementation (based on Mach3, i think), but is moving toward a better microkernel abstraction and to the L4 microkernel specifically.
There is a small OS that was build on top of the L4Ka implementation for a class project, called ChacmOS, and the authors graciously GPL'd the source. This is a wonderful source of information regarding the L4:
http://www.l4ka.org/projects/ChacmOS/And a page dedicated to L4:
http://www.cse.unsw.edu.au/~disy/L4/ -
Re:the last i hurd
Plus there is work on doing it for PowerPC and also plans for upcoming 64 bit architectures like IA-64. A fairly new member of the L4 kernel family, the L4Ka kernel is actually quite portable. Doing ports to other architerures is as such not a big of a hurdle as it used to be.
-
Re:HURD? Not now, the worlds moved on.By core service i pressume that you here mean a service that is offered by the microkernel. Now, if you build a monolithic system on top of a microkernel (i.e., an opereating system kernel running as a single task in user-mode -- usually called an OS personality), this task will be able to perform most of the responsibilities that a normal os kernel does -- without using any of the core services. This is possible because the os kernel (running as a task) has exclusive acccess to any of the hardware resouces it needs (e.g., devices), and is the approach taken by L4Linux (running on top of L4) and MkLinux (running on top of Mach).
Of course, in a real system you also have other tasks which needs to interact with the OS task. This occurs (almost) exclusively through IPC mechanisms, and IPC mechanisms have therefore been identified as the main performance bottleneck for microkernel systems. The IPC mechanism basically deals with transferring (usually a small) amount of words from one task/thread to another, and performing a context switch between the tasks/threads. There are three sides to the cost associated with this:
- The added number of processor cycles used to actually perform the context switch.
- The added number of flushed cache lines due to the microkernel design.
- The added number of TLB invalidations/flushes.
-
Re:s/Mach/L4/g
Hehe. Showing a screenshot of,e.g., a Linux server running on top of L4 doesn't seem to impress to many people. That's one of the problems we usually have to face when we demonstrating what we do to non-insiders. And, by the way, the ``most official'' L4 site is now located on the L4Ka website.
-
Microkernel technology and SawMillMicrokernel technology is hard to sell. Despite this fact though, people are still developing new -kernels and doing active research in the area. BeOS has been mentioned as one example. Pebble from Bell Labs is another. One would hardly call the technology a relic of the past.
As for the performance degradation that the -kernel architecture imposes on the system, there has been quite a lot of research in the last ten years indicating that this effect can be alleviated. Moreover, much of the performance degradation due to the added number of context switches in -kernel systems is due to inneficient/inapropriate hardware mechanisms and design. By harnessing state of the art hardware design (e.g., IA-64), we may come to see that the added overhead of context switches is ignorable. There is work underway to create efficient -kernels for these more arcane architectures, and only time will tell whether our hopes can be reached or not.
Also, -kernel technology is believed to pose a compelling soultion to the one-size-fits-all problem that you address in conjunction with Linux. To put it short, one would compile the operating system components so that they match the exact requirements that you meet in, e.g., pervasive computing or big irons. In fact, IBM is doing joint research with a number of universities aiming at providing a multiserver version of Linux - SawMill Linux - with these exact goals in mind. This work may of course fail (that's the beauty of research), but I think it is a bit early yet to put the last nail in the coffin for multiserver operating systems.
And just for the records: SawMill is hopefully going GPL any time soon now, enabling people to use it with the GPLed Fiasco or newly developed L4Ka -kernels. (That should probably make you GPL zealots happy.
;-) -
Microkernel technology and SawMillMicrokernel technology is hard to sell. Despite this fact though, people are still developing new -kernels and doing active research in the area. BeOS has been mentioned as one example. Pebble from Bell Labs is another. One would hardly call the technology a relic of the past.
As for the performance degradation that the -kernel architecture imposes on the system, there has been quite a lot of research in the last ten years indicating that this effect can be alleviated. Moreover, much of the performance degradation due to the added number of context switches in -kernel systems is due to inneficient/inapropriate hardware mechanisms and design. By harnessing state of the art hardware design (e.g., IA-64), we may come to see that the added overhead of context switches is ignorable. There is work underway to create efficient -kernels for these more arcane architectures, and only time will tell whether our hopes can be reached or not.
Also, -kernel technology is believed to pose a compelling soultion to the one-size-fits-all problem that you address in conjunction with Linux. To put it short, one would compile the operating system components so that they match the exact requirements that you meet in, e.g., pervasive computing or big irons. In fact, IBM is doing joint research with a number of universities aiming at providing a multiserver version of Linux - SawMill Linux - with these exact goals in mind. This work may of course fail (that's the beauty of research), but I think it is a bit early yet to put the last nail in the coffin for multiserver operating systems.
And just for the records: SawMill is hopefully going GPL any time soon now, enabling people to use it with the GPLed Fiasco or newly developed L4Ka -kernels. (That should probably make you GPL zealots happy.
;-) -
Re:Code Forks/What have the Romans ever done for u"There are the L4Linux, L4KALinux and MkLinux microkernels."
Well, there is actually no such thing as L4KaLinux. There is L4Ka though, which is another implementation of the L4 -kernel, and which is able to host the L4Linux kernel (leaves you with one less code fork
;-).