This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Monolithic kernel" – news ·newspapers ·books ·scholar ·JSTOR(October 2025) (Learn how and when to remove this message) |

Amonolithic kernel is anoperating systemarchitecture with the entire operating system running inkernel space. The monolithic model differs from other architectures such as themicrokernel[1][2] in that it alone defines a high-level virtual interface overcomputer hardware. A set of primitives orsystem calls implement all operating system services such asprocess management,concurrency, andmemory management.
Device drivers can be added to the kernel asloadable kernel modules.
Modular operating systems such asOS-9 and most modern monolithic-kernel operating systems such asOpenVMS,Linux,FreeBSD,NetBSD,Solaris, andAIX can dynamically load (and unload) executablekernel modules at runtime.
This modularity of the operating system is at the binary (image) level and not at the architecture level. Modular monolithic operating systems are not to be confused with the architectural level of modularity inherent inserver-client operating systems (and its derivatives sometimes marketed ashybrid 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. The modules allow easy extension of the operating systems' capabilities as required.[3] Dynamically loadable modules incur a small overhead when compared to building the module into the operating system image.
However, in some cases, loading modules dynamically (as-needed) helps to keep the amount of code running inkernel space to a minimum; for example, to minimize operating system footprint for embedded devices or those with limited hardware resources. Namely, an unloaded module need not be stored in scarcerandom access memory.