Ich hab mich gestern wieder ein bisschen schlau bezüglich grundlegendes Kerneldesign gemacht und für die, dies interessiert weiter unten ein weiterführender Link zum Thema exokernel:
Monolithic Kernels
Monolithic kernels are the oldest and longest living kernel design out there. A lot of operating systems are designed this way, either because other system designs are more complex, for performance reasons, or because it was the only design anyone had thought of at the time. In this design, the abstraction and resource management code of the operating system is all placed into the operating system kernel, which is mapped into each process.
Microkernels
In a microkernel design, as much abstraction and resource management code as possible is moved outside of the kernel in the interests of modularity. The interface between components of the system then becomes message passing from the application to whatever component provides the desired service. These components run as separate programs on the same operating system. Thus, the sound system may be a program. Some examples of microkernel architecture include Mach (the famous example), and QNX (a very good commercial microkernel system).
These system programs in a microkernel are called servers, and applications are their clients. Servers run as programs in the operating system just like applications do. The microkernel itself in a microkernel system needs to implement process control (because it's necessary in order to run the servers anyway) and message passing (necessary for the communication between servers or between applications and servers. If servers run as untrusted code (in the processor's user mode), then the microkernel must also access hardware on their behalf and at their direction. The microkernel must of course verify that only a server specified by the system administrator is allowed to do this.
Exokernels
Exokernels take a very interesting approach. They take as much out of the kernel as possible, but rather than placing that code into external programs as microkernels do, they place it into shared libraries linked to application code. The application then makes requests for protected resources simply by calling functions in this library. The library will only call across the protection boundary into the kernel when it needs to perform actual I/O access or do some other restricted operation. Essentially, the exokernel will leave any security-critical code in the kernel proper, but all the abstraction that's been such a big deal before is done inside of a library.
Another way to look at the exokernel is in a consideration of mechanism and policy. As a traditional operating system concept, mechanism refers to the actual implementation of a well-defined task. Policy refers to deciding how to do something. Policy questions are those that affect the appearance and behavior of the operating system. All of that is placed in the library, called the libOS. Mechanism, the actual physical accesses of hardware, will remain in the kernel.
This raises some very interesting issues with regard to security. Nothing in the library can really be trusted, because it's always possible to write an application that links to a different library in an attempt to subvert the system. Thus, the challenge is to design the smallest and least intrusive kernel component possible while stil providing the ability to do necessary tasks.
Exokernels are by far the most difficult type of kernel to design and implement, and in fact have not been used in any commercial operating system to the best of my knowledge (there is at least one experimental implementation by the name of Xok. But some experimental results show that they can achieve amazing performance benefits for critical applications, because the operating system itself can be customized and the application then relinked to use a different disk caching strategy, optimize filsystem usage, and so forth. I've seen figures indicating that a web server could be made about eight times faster than the best web server out there right now.
http://pdos.csail.mit.edu/exo/