# Kernel A kernel is the fundamental part of an [operating system](operating_system.md) which has full control of the machine is running on and is responsible of managing the fundamental functionality required for a full OS (like memory management, security, hardware [in monolithic kernels], etc.). ## Monolithic kernel Monolithic kernels include all relevant functionality in the kernel side, including drivers. Naturally, this mean that monolithic kernels are big and have a huge attack surface due to the amount of code running in kernel mode (with full privileges). Notable monolithic kernels are: the classical [Unix](unix.md), [Linux](linux.md) and the [BSD](bsd) kernels. ## Microkernel *See [Microkernel](microkernel.md)* A microkernel--unlike a monolithic one, has less functionality on the kernel side, moving most to the userland.