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!
== Cross-platform == === L4Ka::Pistachio === Up until the release of L4Ka::Pistachio and newer versions of Fiasco, all L4 microkernels had been inherently tied close to the underlying CPU architecture. The next big shift in L4 development was the development of a cross-platform (platform-independent) application programming interface ([[API]]) that still retained the high performance characteristics despite its higher level of portability. Although the underlying concepts of the kernel were the same, the new API provided many significant changes relative to prior L4 versions, including better support for multi-processor systems, looser ties between threads and address spaces, and the introduction of user-level thread control blocks (UTCBs) and virtual registers. After releasing the new L4 API (version X.2 a.k.a. version 4) in early 2001, the System Architecture Group at the University of Karlsruhe implemented a new kernel, ''L4Ka::Pistachio'', completely from scratch, now with focus on both high performance and portability. It was released under the [[BSD licenses#2-clause license ("Simplified BSD License" or "FreeBSD License")|two-clause BSD license]].<ref>[https://www.l4ka.org/65.php l4ka.org: L4Ka::Pistachio microkernel] Quote: "...The variety of supported architctures makes L4Ka::Pistachio an ideal research and development platform for a wide variety of systems..."</ref> === Newer Fiasco versions === The L4/Fiasco microkernel has also been extensively improved over the years. It now supports several hardware platforms ranging from x86 through AMD64 to several ARM platforms. Notably, a version of Fiasco (Fiasco-UX) can run as a user-level application on Linux. L4/Fiasco implements several extensions to the L4v2 API. Exception IPC enables the kernel to send CPU exceptions to user-level handler applications. With the help of [[alien thread]]s, it is possible to perform fine-grained control over system calls. X.2-style UTCBs have been added. Also, Fiasco contains mechanisms for controlling communication rights and kernel-level resource use. On Fiasco, a collection of basic user level services are developed (named L4Env) that among others are used to para-virtualise the current Linux version (4.19 {{as of|2019|05|lc=y}}) (named [[L4Linux|L<sup>4</sup>Linux]]). === University of New South Wales and NICTA === Development also occurred at the [[University of New South Wales]] (UNSW), where developers implemented L4 on several 64-bit platforms. Their work resulted in ''L4/MIPS'' and ''L4/Alpha'', resulting in Liedtke's original version being retrospectively named ''L4/x86''. Like Liedtke's original kernels, the UNSW kernels (written in a mix of assembly and C) were unportable and each implemented from scratch. With the release of the highly portable L4Ka::Pistachio, the UNSW group abandoned their own kernels in favor of producing highly tuned ports of L4Ka::Pistachio, including the fastest-ever reported implementation of message passing (36 cycles on the [[Itanium]] architecture).<ref name=Gray_CCMH_05>{{cite conference |last1=Gray |first1=Charles |last2=Chapman |first2=Matthew |last3=Chubb |first3=Peter |last4=Mosberger-Tang |first4=David |last5=Heiser |first5=Gernot |author5-link=Gernot Heiser |title=Itanium: A system implementor's tale |book-title=USENIX Annual Technical Conference |pages=264β278 |date=April 2005 |location=Annaheim, CA, USA |url=http://www.usenix.org/publications/library/proceedings/usenix05/tech/general/gray.html |url-status=live |archive-url=https://web.archive.org/web/20070217224750/http://www.usenix.org/publications/library/proceedings/usenix05/tech/general/gray.html |archive-date=2007-02-17}}</ref> The group has also demonstrated that [[device driver]]s can perform equally well at user-level as in-kernel,<ref name=Leslie_CFGGMPSEH_05>{{cite journal |last1=Leslie |first1=Ben |last2=Chubb |first2=Peter |last3=FitzRoy-Dale |first3=Nicholas |last4=GΓΆtz |first4=Stefan |last5=Gray |first5=Charles |last6=Macpherson |first6=Luke |last7=Potts |first7=Daniel |last8=Shen |first8=Yueting |last9=Elphinstone |first9=Kevin |last10=Heiser |first10=Gernot |author10-link=Gernot Heiser |date=September 2005 |title=User-level device drivers: achieved performance |journal=Journal of Computer Science and Technology |volume=20 |issue=5 |pages=654β664 |doi=10.1007/s11390-005-0654-4 |citeseerx=10.1.1.59.6766 |s2cid=1121537}}</ref> and developed [[Wombat (operating system)|Wombat]], a highly portable version of [[Linux]] on L4 that runs on [[x86]], [[ARM architecture|ARM]], and [[MIPS architecture|MIPS]] processors. On [[XScale]] processors, Wombat context-switching costs are up to 50 times lower than in native Linux.<ref name=vanSchaik_Heiser_07>{{cite conference |last1=van Schaik |first1=Carl |last2=Heiser |first2=Gernot |author2-link=Gernot Heiser |date=January 2007 |title = High-performance microkernels and virtualisation on ARM and segmented architectures |book-title = 1st International Workshop on Microkernels for Embedded Systems |pages = 11β21 |publisher = [[NICTA]] |location = Sydney, Australia |url = http://ssrg.nicta.com.au/publications/papers/vanSchaik_Heiser_07.abstract.pml |access-date = 2015-10-25 |archive-url = https://web.archive.org/web/20150301150250/http://ssrg.nicta.com.au/publications/papers/vanSchaik_Heiser_07.abstract |archive-date = 2015-03-01 |url-status = live }}</ref> Later the UNSW group, now at [[NICTA]] (formerly ''National ICT Australia, Ltd''.), forked L4Ka::Pistachio into a new L4 version named ''NICTA::L4-embedded''. It was for use in commercial [[embedded system]]s, and consequently the implementation trade-offs favored small memory size and reduced complexity. The API was modified to keep almost all system calls short enough that they need no preemption points in order to ensure high real-time responsiveness.<ref name=Ruocco_08>{{cite journal |last=Ruocco |first=Sergio |date=October 2008 |title = A Real-Time Programmer's Tour of General-Purpose L4 Microkernels |journal = EURASIP Journal on Embedded Systems |doi = 10.1155/2008/234710 |volume = 2008 |pages = 1β14 |doi-broken-date=1 November 2024 |s2cid = 7430332 |doi-access=free }}</ref>
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)