From Wikipedia, the free encyclopedia
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,[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.
[edit] Loadable modules
Most modern monolithic operating systems such as OpenVMS, Linux, BSD, and UNIX variants such as FreeBSD, NetBSD, SunOS, AIX and MULTICS 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.
[edit] Monolithic kernel examples
[edit] References
[edit] See also