Microkernel Modularity with Integrated Kernel Performance


Michael Condict, Don Bolinger, Dave Mitchell, Eamonn McManus
Open Software Foundation
Research Institute
1 Cambridge Center
Cambride, MA 02142
{condict, bolinger, dwm, emcmanus}@osf.org

Abstract

Microkernel-based operating systems are often much slower than comparable integrated kernels, mainly because system calls use RPC between protection domains, and because data copies between user processes and the OS require VM manipulations. The use of multiple domains has traditionally been viewed as the basis for microkernel modularity , but in fact modularity within the OS need not be imple- mented with this overhead, because the modules trust one another . By collocating the OSF/1 server and the Mach microkernel within a single domain, and transparently short-circuiting the message-based RPC's into a more efficient form, we obtained performance no worse than 8% slower than the equivalent OSF/1 integrated kernel on demanding workload benchmarks. When collocated, a server's threads remain pre-emptible and all of its text and data remain pageable. Because the location transparency of Mach RPC is preserved, the same binary server program can run collocated with Mach, or as an ordinary user task (with lower performance). Further , since the short-circuiting code is generated by MIG, multiple servers can be simultaneously collocated with Mach, as performance needs dictate, with no changes to the MIG declarations. For all of these reasons, we preserve modularity while significantly improving performance.