Monolithic kernel


Structure of monolithic kernel, microkernel and hybrid kernel-based operating systems

A monolithic kernel is a kernel architecture where the entire operating system is working in the kernel space and alone as supervisor mode. In difference with other architectures (Server-Client, or layered structure[1]), the monolithic kernel defines alone a high-level virtual interface over computer hardware, with a set of primitives or system calls to implement all operating system services such as process management, concurrency, and memory management itself and one or more device drivers as modules.

Loadable modules

Most modern monolithic operating systems such as OpenVMS, Linux, BSD variants such as FreeBSD, NetBSD; SunOS, and AIX can dynamically load (and unload) executable modules at runtime. This modularity of the kernel is at the binary (image) level and is not at the kernel architecture level. Modular monolithic kernels are not to be confused with the architectural level of modularity inherent in microkernel (and derivatives sometimes marketed as hybrid kernel). Practically, dynamically loading modules is simply a more flexible way of handling the kernel image at runtime — as opposed to rebooting with a different kernel image. The modules allow easy extension of the kernel's capabilities as required. Dynamically loadable modules incur a small overhead when compared to building the module into the kernel image. However in some cases loading modules dynamically (as-needed) helps to keep the amount of code running in kernel space to a minimum for example to minimize operating system footprint for embedded devices with limited hardware resources. Namely, an unloaded module need not be stored in the scarce random access memory.

Monolithic kernel examples

See also







stock | retire | vm
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History