Kernel is nothing but the core of any operating system. It is the kernel that makes an OS entirely different from others. A kernel is actually a large block of code which keeps the system up and running from the time of booting, till shutdown. Kernel is that part of an OS which directly communicates with the hardware of the machine in which it runs and also with external hardware devices.
The kernel can be viewed as resource managing code of an OS. It is responsible for managing and allocating resources like memory, processors etc. It also allows OS to communicate and control various external hardware devices like pendrive, memory card, keyboard etc.
User program Vs Kernel program:
User program or applications runs in a memory area called “user space”. The kernel program runs in another memory area called “kernel space”. Kernel program always runs in a supper access mode. So from programming point of view, kernel programming means power to access anything and everything in a system.
Why kernel programming:
Through kernel programming we can access or control the basic subsystems of kernel like, scheduling, memory management, file system management, networking management, inter-process communication etc. We can develop separate kernel modules which can be inserted into the kernel while the system is running.
The most attractive part of the kernel programming is device driver coding, through which we can interface various external hardware devices like USB, disk drives, data card or any other latest peripheral devices in the market.