Monolithic kernel

The monolithic model differs from other architectures such as the microkernel[1][2] in that it alone defines a high-level virtual interface over computer hardware.

Modular operating systems such as OS-9 and most modern monolithic-kernel operating systems such as OpenVMS, Linux, FreeBSD, NetBSD, DragonFly BSD, Solaris, and AIX can dynamically load (and unload) executable kernel modules at runtime.

Modular monolithic operating systems are not to be confused with the architectural level of modularity inherent in server-client operating systems (and its derivatives sometimes marketed as hybrid kernel) which use microkernels and servers (not to be mistaken for modules or daemons).

Practically speaking, dynamically loading modules is simply a more flexible way of handling the operating system image at runtime—as opposed to rebooting with a different operating system 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 or those with limited hardware resources.

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