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
Microkernel
(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!
==Performance== On most mainstream processors, obtaining a service is inherently more expensive in a microkernel-based system than a monolithic system.<ref name="Liedtke_96"/> In the monolithic system, the service is obtained by a single system call, which requires two ''mode switches'' (changes of the processor's [[ring (computer security)|ring]] or [[CPU modes|CPU mode]]). In the microkernel-based system, the service is obtained by sending an IPC message to a server, and obtaining the result in another IPC message from the server. This requires a [[context switch]] if the drivers are implemented as processes, or a function call if they are implemented as procedures. In addition, passing actual data to the server and back may incur extra copying overhead, while in a monolithic system the kernel can directly access the data in the client's buffers. Performance is therefore a potential issue in microkernel systems. The experience of first-generation microkernels such as [[Mach (kernel)|Mach]] and [[ChorusOS]] showed that systems based on them performed very poorly.<ref name="Chen_Bershad_93" /> However, [[Jochen Liedtke]] showed that Mach's performance problems were the result of poor design and implementation, specifically Mach's excessive [[CPU cache|cache]] footprint.<ref name="Liedtke_95"/> Liedtke demonstrated with his own [[L4 microkernel]] that through careful design and implementation, and especially by following the minimality principle, IPC costs could be reduced by more than an order of magnitude compared to Mach. L4's IPC performance is still unbeaten across a range of architectures.<ref name="Liedtke_ESHHIJ_97">{{cite conference | first1 = Jochen | last1 = Liedtke | author-link1 = Jochen Liedtke | last2 = Elphinstone | first2 = Kevin | last3 = Schönberg | first3 = Sebastian | last4 = Härtig | first4 = Hermann | author-link5 = Gernot Heiser | last5 = Heiser | first5 = Gernot | last6 = Islam | first6 = Nayeem | last7 = Jaeger | first7 = Trent | title = Achieved IPC performance (still the foundation for extensibility) | conference = 6th Workshop on Hot Topics in Operating Systems | pages = 28–31 | publisher = IEEE | date = May 1997 | location = Cape Cod, MA, USA | doi = 10.1109/HOTOS.1997.595177 }}</ref><ref name="Gray_CCMH_05">{{cite conference |first=Charles |last=Gray |author2=Chapman, Matthew |author3=Chubb, Peter |author4=Mosberger-Tang, David |author5-link=Gernot Heiser |author5=Heiser, Gernot |title=Itanium—a system implementor's tale |conference=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 }}</ref><ref name="vanSchaik_Heiser_07">{{cite conference | first1 = Carl | last1 = van Schaik | author-link2 = Gernot Heiser | last2 = Heiser | first2 = Gernot | title = High-performance microkernels and virtualisation on ARM and segmented architectures | conference = 1st International Workshop on Microkernels for Embedded Systems | pages = 11–21 | publisher = NICTA | date = January 2007 | location = Sydney, Australia | url = http://ertos.nicta.com.au/publications | access-date = 1 April 2007 | archive-url = https://web.archive.org/web/20070426092901/http://www.ertos.nicta.com.au/publications/ | archive-date = 26 April 2007 | url-status = dead }}</ref> While these results demonstrate that the poor performance of systems based on first-generation microkernels is not representative for second-generation kernels such as L4, this constitutes no proof that microkernel-based systems can be built with good performance. It has been shown that a monolithic Linux server ported to L4 exhibits only a few percent overhead over native Linux.<ref name="Hartig_97">{{cite conference | first1 = Hermann | last1 = Härtig | last2 = Hohmuth | first2 = Michael | author-link3 = Jochen Liedtke | last3 = Liedtke | first3 = Jochen | last4 = Schönberg | first4 = Sebastian | book-title = Proceedings of the sixteenth ACM symposium on Operating systems principles - SOSP '97 | title = The performance of μ-kernel-based systems | date = October 1997 | volume = 31 | issue = 5 | url = http://portal.acm.org/citation.cfm?id=266660&dl=ACM&coll=&CFID=15151515&CFTOKEN=6184618 | pages=66–77|doi=10.1145/268998.266660 | isbn = 0-89791-916-5 | s2cid = 1706253 | url-access = subscription }}</ref> However, such a single-server system exhibits few, if any, of the advantages microkernels are supposed to provide by structuring operating system functionality into separate servers. A number of commercial multi-server systems exist, in particular the [[Real-time operating system|real-time systems]] [[QNX]] and [[Integrity (operating system)|Integrity]]. No comprehensive comparison of performance relative to monolithic systems has been published for those multiserver systems. Furthermore, performance does not seem to be the overriding concern for those commercial systems, which instead emphasize reliably quick interrupt handling response times (QNX) and simplicity for the sake of robustness. An attempt to build a high-performance multiserver operating system was the IBM Sawmill Linux project.<ref name="Gefflaut_JPLEUTDR_00"> {{cite conference | first1 = Alain | last1 = Gefflaut | last2 = Jaeger | first2 = Trent | last3 = Park | first3 = Yoonho | author-link4 = Jochen Liedtke | last4 = Liedtke | first4 = Jochen | last5 = Elphinstone | first5 = Kevin J. | last6 = Uhlig | first6 = Volkmar | last7 = Tidswell | first7 = Jonathon E. | last8 = Deller | first8 = Luke | last9 = Reuther | first9 = Lars | display-authors=8 | title = The Sawmill multiserver approach | conference = 9th ACM SIGOPS European Workshop | location = Kolding, Denmark | pages = 109–114 | year = 2000 | citeseerx = 10.1.1.25.8376}}</ref> However, this project was never completed. It has been shown in the meantime that user-level device drivers can come close to the performance of in-kernel drivers even for such high-throughput, high-interrupt devices as Gigabit Ethernet.<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| author-link10=Gernot Heiser|last10=Heiser|first10= Gernot | 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|s2cid=1121537 }}</ref> This seems to imply that high-performance multi-server systems are possible.
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)