Kernel Madness: Basic Kernel Knowledge

For a fair number of people not accustomed to the operating system concept of a kernel, installing a Linux, BSD, or Hurd based distributions typically involves crossing your fingers and hoping that the installer can detect all of your hardware properly. If you’re unlucky and something isn’t working, you’re likely to spend some time browsing forums and following how to’s in hopes that you find something that makes your device works. In this article, I want to give an overview of what a kernel is and how you can use knowledge of kernels to further your understanding of kernels.

First, I think that defining ‘kernel’ is a good place to start. A kernel is the heart of an operating system. It is the chunk of code that decides how the computer’s resources are allocated, and how to interact with the actual hardware. It is a hardware specific code base that allows for the software abstractions that we rely on so heavily. For instance, when you want to play sound through your speakers, your audio program talks to the kernel and the kernel, in turn, takes what it knows about the sound board (through the sound board’s driver) and is able to produce the sound that you want played. First I will discuss approaches for writing a kernel, then I will delve into specific types of kernels in use everyday.

Types of Kernels:

More Here