The L4 MicroKernel
family. See http://os.inf.tu-dresden.de/L4/overview.html
"Kernels based on the L4 ApplicationProgrammingInterface are second-generation microkernels. They are very lean and feature fast, message-based, synchronous InterProcessCommunication, simple-to-use external paging mechanisms, and a security mechanism based on secure domains (tasks, clans and chiefs). The kernels try to implement only a minimal set of abstractions on which OperatingSystems can be built flexibly."
The L4 API consists of only seven system calls.
is in the process of being ported to L4. See http://www.nongnu.org/l4hurd/
. The L4 subprojects hurd-l4 and fabrica are currently the only active subprojects of the Hurd on savannah.
L4Linux is a port of Linux 2.2 that runs in user-mode on top of the microkernel. See http://os.inf.tu-dresden.de/L4/LinuxOnL4/overview.html
) is a SingleAddressSpaceOperatingSystem
(SASOS) implemented on top of the L4 microkernel. Quoting "The Mungi Manifesto" (http://mungi.org/manifesto.html
): "The single address space incorporates all memory objects on all nodes in a distributed system. Any memory object is potentially persistent, i.e. can outlive its creator process. All objects are uniquely identified by their virtual address, which is a 64-bit number. Any object is potentially accessible by any process, provided the process is authorised to do so."
) is a small OS containing the IoLanguage
on top of the L4 microkernel.
The best example I've seen of a true MicroKernel
is the L4 microkernel (whose main author has unfortunately passed away). They ported Linux to run on top of this kernel (L4/Linux) and there is a rewrite-in-C++ project going on, etc.
L4 has only three abstractions (or two, depending on how you count). It has only 7 API functions! A far cry from Windows with its HAL, or the MachMicrokernel
, or even normal Linux. :)
I actually think the 'big idea' of microkernels is that the system's kernel should contain only the concepts, and the functionality, which *absolutely must* be in the kernel in order to build a secure, high-performance system. Many first-generation microkernels like Mach include a lot of stuff in the microkernel which doesn't strictly need to be there. Microkernels like L4 are much closer to this ideal, and perform much better as a result. L4 includes almost nothing besides threads, address-space construction and IPC. Everything else can be built efficiently out of these in user-mode servers.
Here are some research papers from 1997 about L4 and the design of efficient microkernels:
Smallness (and fastness) have been achieved in some modern microkernels like L4. The failure of Mach and other first-generation microkernels is not due to a fundamental flaw in the microkernel idea. The flaws were implementation-specific. They were large and complicated and that's why they were slow.
Why do microkernels matter? Because a properly-designed microkernel system can be as fast as a monolithic kernel, and yet provide significantly more safety and flexibility. -- WylieGarvin
Fallacy! See WellDesignedFooCanBeBetterThanBar
It is true that the reason given (a properly-designed microkernel system can be as fast as a monolithic kernel, and yet provide significantly more safety and flexibility) does not support the case (microkernels matter), but it is still true that MicroKernels matter.
I would suggest that MicroKernels matter because they can be smaller, more targeted, more flexible, easier to verify, and allow modules to be interchanged more readily, possibly even while the system is live.
[This discussion should probably be moved to the MicroKernel
page.] Move specific discussion about L4 to a general page on MicroKernel? Makes as much sense as moving C++ or Lisp or Smalltalk discussions to a ProgrammingLanguage page.
[The last part of this page seems to be discussing MicroKernel
s in general, not L4 specifically. Parts of the page should be back there. -- WikiGnome
, considering doing the move if no one else does.]
The problem is that the topic is not relevant to MicroKernel
s, but to SecondGenerationMicroKernel?
s. If a refactoring should be done, it should go there, since it's conceptually possible that L4 isn't the only 2nd-generation kernel. --SamuelFalvo?
Also see WikiAlphabet
See also ExoKernel