Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
L4 microkernel family
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== History == The poor performance of first-generation microkernels, such as [[Mach (kernel)|Mach]], led a number of developers to re-examine the entire microkernel concept in the mid-1990s. The asynchronous in-kernel-buffering [[inter-process communication|process communication]] concept used in Mach turned out to be one of the main reasons for its poor performance. This induced developers of Mach-based operating systems to move some time-critical components, like file systems or drivers, back inside the kernel.{{Citation needed|date=August 2010}} While this somewhat ameliorated the performance issues, it plainly violates the minimality concept of a true microkernel (and squanders their major advantages). Detailed analysis of the Mach bottleneck indicated that, among other things, its [[working set]] is too large: the IPC code expresses poor spatial locality; that is, it results in too many [[CPU cache|cache]] misses, of which most are in-kernel.<ref name=Lie95 /> This analysis gave rise to the principle that an efficient microkernel should be small enough that the majority of performance-critical code fits into the (first-level) cache (preferably a small fraction of said cache). === L3 === [[Jochen Liedtke]] set out to prove that a well-designed thinner [[inter-process communication]] (IPC) layer, with careful attention to performance and machine-specific (in contrast to [[cross-platform software]]) design could yield large real-world performance improvements. Instead of Mach's complex IPC system, his L3 microkernel simply passed the message with no added overhead. Defining and implementing the required security policies were considered to be duties of the [[user space]] servers. The role of the kernel was only to provide the needed mechanism to enable the user-level servers to enforce the policies. L3, developed in 1988, proved itself a safe and robust [[operating system]], used for many years for example by [[Technischer Überwachungsverein]] (Technical Inspection Association).{{Citation needed|date=September 2010}} [[File:L4 family tree.svg|thumb|400px|L4 family tree (black arrows indicate code inheritance, green arrows ABI inheritance)]] === L4 === After some experience using L3, Liedtke came to the conclusion that several other Mach concepts were also misplaced. By simplifying the microkernel concepts even further he developed the first L4 kernel which was primarily designed for high performance. To maximise performance, the whole kernel was written in [[assembly language]], and its IPC was 20 times faster than Mach's.<ref name="Liedtke_93" /> Such dramatic performance increases are a rare event in operating systems, and Liedtke's work triggered new L4 implementations and work on L4-based systems at a number of universities and research institutes, including [[IBM]], where Liedtke started to work in 1996, TU Dresden and UNSW. At IBM's [[Thomas J. Watson Research Center]] Liedtke and his colleagues continued research on L4 and microkernel based systems in general, especially the Sawmill OS.<ref name="Gefflaut_JPLEUTDR_00">{{cite conference |last1=Gefflaut |first1=Alain |last2=Jaeger |first2=Trent |last3=Park |first3=Yoonho |last4=Liedtke |first4=Jochen |author4-link=Jochen Liedtke |last5=Elphinstone |first5=Kevin |last6=Uhlig |first6=Volkmar |last7=Tidswell |first7=Jonathon |last8=Deller |first8=Luke |last9=Reuther |first9=Lars |date = 2000 |url=http://dl.acm.org/citation.cfm?id=566726.566751 |title=The Sawmill multiserver approach |book-title=ACM SIGOPS European Workshop |pages=109–114 |location=Kolding, Denmark }}</ref> === L4Ka::Hazelnut === In 1999, Liedtke took over the Systems Architecture Group at the [[University of Karlsruhe]], where he continued the research into microkernel systems. As a proof of concept that a high performance microkernel could also be constructed in a higher level language, the group developed ''L4Ka::Hazelnut'', a [[C++]] version of the kernel that ran on [[IA-32]]- and [[ARM architecture|ARM]]-based machines. The effort was a success, performance was still acceptable, and with its release, the pure assembly language versions of the kernels were effectively discontinued. === L4/Fiasco === In parallel to the development of L4Ka::Hazelnut, in 1998 the Operating Systems Group TUD:OS of the TU Dresden started to develop their own C++ implementation of the L4 kernel interface, named L4/Fiasco. In contrast to L4Ka::Hazelnut, which allows no concurrency in the kernel, and its successor L4Ka::Pistachio, which allows interrupts in the kernel only at specific preemption points, ''L4/Fiasco'' was fully preemptible (with the exception of extremely short atomic operations) to achieve a low [[interrupt latency]]. This was considered necessary because L4/Fiasco is used as the basis of DROPS,<ref>{{cite web |url=http://os.inf.tu-dresden.de/drops/overview.html |title=DROPS – Overview |website=[[Dresden University of Technology]] |access-date=2011-08-10 |url-status=live |archive-url=https://web.archive.org/web/20110807170107/http://os.inf.tu-dresden.de/drops/overview.html |archive-date=2011-08-07}}</ref> a hard [[real-time computing]] capable operating system, also developed at the TU Dresden. However, the complexities of a fully preemptible design prompted later versions of Fiasco to return to the traditional L4 approach of running the kernel with interrupts disabled, except for a limited number of preemption points.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)