The kernel is the core of the operating system. It is a single program (or sometimes a group of them) that manages the interaction of all other programs on a computer system, and the available resources of that system (like RAM, CPU or disk space).
"The kernel" is only one comparatively-small part of the total operating system system, and many users suppose that it does much more than it actually does. The rule of thumb is: "if you can see it and touch it, the kernel is what physically makes it run."
A kernel can be thought of as a telephone switch-board - it routes calls from place to place. It has no interest in what those calls are about, only that everyone who dials a number gets connected with the person they're calling. The kernel must make sure that no program gets either too little or too much of the system's attention.
Kernels are also thought of as monolithic, having all the functionality built into the kernel itself, or as modular (see kernel module), having much of the functionality acting separately as modules. Although Linux supports kernel modules, it is said to be monolithic because it is not built on a microkernel Some example production-ready kernels:
- The Linux kernel, developed by Linus Torvalds and contributors world-wide. The history of Linux goes back over a decade.
- Mach, a microkernel used by operating systems such as Apple's OS X.
A developmental kernel:
Although the kernel is the core of any operating system, for most users differences between Unix-style kernels are not immediately noticeable. For example, if you looked at a computer running GNOME on the HURD, there wouldn't be any visible differences between the same desktop environment on Linux. Differences in capabilities, performance, and stability might be rather striking, however.
Some important components of a kernel:
- Compiling a kernel
- Patching a kernel
- Kernel 2.6
- Graphs of the incidence of various swear words in the Linux kernel (Thanks Koalaman)