Monday, February 26, 2007

What is Linux Kernel?

The Kernel is the central/core component of Linux (and almost every other) Operating System. It's responsibilities include management of the system resources and providing communication between hardware and software.

The development of the Kernel is very complex and difficult. In another way we can say that it is the most complex component in the O/S development. The reason for this is that the Kernel must have good performance since every other component depends on it. The correct design and implementation is very crucial.

When we talk about management of computer resources our main concerns are the CPU, Memory and the Input and Output devices.

The CPU is the brain of the system, and it's primary job is to execute programs. The Kernel controls this program execution by deciding which program (one from many running programs) should be allocated to the CPU.

Both instructions and data are stored in memory while an execution of a program. Since we normally run many programs at the same time, the demand for space will go higher and higher and at one point it will exceed the memory capacity. The Kernel come to the play! It is responsible for deciding the memory usage for each process and determine the steps to be taken when memory is not enough.

The connection (or interface) of the system with the external environment is handled by the Input Output devices. The Kernel allocates the requests of s/w programs to relevant I/O devices and provide methods for using those devices. Because of this the s/w doesn't need to know the implementation details of the particular device. Everything is handled by the Kernel it self!!

~Thanks Wikipedia