Pattern:
Microkernel


Author

Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal

Intent

"The Microkernel architectural pattern applies to software systems that must be able to adapt to changing system requirements. It separates a minimal functional core from extended functionality and customer-specific parts. The microkernel also serves as a socket for plugging in these extensions and coordinating their collaboration." (Buschmann, F., R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal. Pattern-Oriented Software Architecture: A System Of Patterns. West Sussex, England: John Wiley & Sons Ltd., 1996)

Motivation

The microkernel includes functionality that enables other components running in separate processes to communicate with each other. It is also responsible for maintaining system-wide resources such as files or processes. In addition, it provides interfaces that enable other components to access its functionality. Core functionality that cannot be implemented within the microkernel without unnecessarily increasing its size or complexity should be separated in internal servers. External servers implement their own view of the underlying microkernel. To construct this view, they use the mechanisms available through the interfaces of the microkernel. Every external server is a separate process that itself represents an application platform. Hence, a Microkernel system may be viewed as an application platform that integrates other application platforms. Clients communicate with external servers by using the communication facilities provided by the microkernel. For a more detailed Motivation description for this pattern see: Buschmann, F., R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal. Pattern-Oriented Software Architecture: A System Of Patterns. West Sussex, England: John Wiley & Sons Ltd., 1996.

Known Uses

This pattern has been used on the following systems: The Mach operating system developed at Carnegie-Mellon-University was intended to form a base on which other operating systems can be emulated. (Tanenbaum, A.S., Modern Operating Systems, Prentice Hall, 1992.) The Amoeba operating system uses the microkernel itself as well as servers that are used to implement the majority of Amoebas functionality. (Tanenbaum, A.S., Modern Operating Systems, Prentice Hall, 1992.) INRIA (French research institute) developed a microkernel system called Chorus for real-time applications. (Chorus systemes, Chorus Kernel v3.2, Implementation Guide, CS/TR-90-5.) Microsofts Windows NT operating system was developed for high-performance servers. Architecturally it is a Microkernel system with three external servers: OS/2 1.x, POSIX, and Win32. (Custer, H., Inside Wiindows NT, Microsoft Press, 1993.) MKDE (Microkernel Datenbank Engine). This system introduces an architecture for database engines. The microkernel is responsible for fundamental services (i.e. physical data access, caching of data, etc.). External servers run on top of the microkernel and give different conceptual views (i.e. data model of a relational SQL database). (Woodward, D.W., Ein Microkernel fur die Datenbank, Software-Entwicklung, Awi Verlag, April 1996, S. 28-31.)

See Also

Broker and Reflection patterns

Thumbnail

Keywords

Broker pattern, Microkernel pattern, Reflection pattern, Buschmann patterns, architectural patterns, adaptable systems, socket

Business Domains

development of several applications that use similar programming interfaces that build on the same core functionalityfinancial applicationsinformation systemoperating systems

Problem Forces

need a mechanism to expose customizable elements of a system while hiding core elementsneed application to cope with continuous hardware and software evolutionneed multiple views of the functionality of the underlying application

Benefits

enhanced maintainability and extensibility of the systemreusability

Liabilities

complexity of design and implementationrestricted efficiency

Implementation Files

Simple implementation of the pattern - Microkernel. Microkernel.javaSimple implementation of the pattern - InternalServer. InternalServer.javaSimple implementation of the pattern - ExternalServer. ExternalServer.javaSimple implementation of the pattern - Client. Client.javaSimple implementation of the pattern - Adapter. Adapter.javaSimple implementation of the pattern. microkernel.h



Generated on Fri Oct 20 11:16:45 GMT+02:00 2000 by Framework Studio