"Linux is a monolithic kernel, which means that the kernel runs
in the supervisory mode of the processor. The kernel implements the
basic interfaces to the hardware and presents APIs to user-space
(and kernel) applications that require access to it. This is in
contrast to micro-kernel architecture, which implements only basic
services in the kernel, and pushes higher-level services outside of
the kernel core. One of the primary advantages to micro-kernels is
that they are eminently extensible. Since most services are
implemented outside of the kernel proper, it's easy to start and
stop services based upon their need.
"Fortunately, while Linux is a monolithic kernel, it does
provide the means for dynamic extension through the use of kernel
modules. Kernel modules are special objects that can be inserted
into the kernel, as well as removed, dynamically. Upon insertion,
they extend services to the kernel as well as use services (through
a process known as dynamic binding)."