Ever wondered what the Linux kernel is exactly?

We hear about Linux all the time these days, some people are experimenting with it via Live CDs and others have made the jump full time. One of the things you hear mentioned all the time is the kernel. But what does a kernel do?

In truth, every operating system has a kernel, not just Linux; so I found a great article over at MakeUseOf explaining what a kernel does, in simple terms too. Here’s a small part:

The kernel’s job is to talk to the hardware and software, and to manage the system’s resources as best as possible. It talks to the hardware via the drivers that are included in the kernel (or additionally installed later on in the form of a kernel module). This way, when an application wants to do something (say change the volume setting of the speakers), it can just submit that request to the kernel, and the kernel can use the driver it has for the speakers to actually change the volume.

The kernel is highly involved in resource management. It has to make sure that there is enough memory available for an application to run, as well as to place an application in the right location in memory. It tries to optimize the usage of the processor so that it can complete tasks as quickly as possible. It also aims to avoid deadlocks, which are problems that completely halt the system when one application needs a resource that another application is using. It’s a fairly complicated circus act to coordinate all of those things, but it needs to be done and that’s what the kernel is for.