Hello, readers. After spending some time around Android or Linux forums or discussions, you must have come across the term “Kernel”. A kernel is not a unique part of Android or Linux OS but it is a very important part of every operating system including Windows, Mac OS, iOS, Blackberry’s QNX, Symbian, etc.
Most of the people even some programmers/developers misunderstands kernel and operating system to be one and the same thing. So, What is a Kernel? What does it do? What is the difference between a kernel and an Operating System? Let’s find out!
What is Kernel?
Kernel means ‘Core’. It is derived from corn or cyrnel means core.
Now, in the context of computer operating systems, it is the core of the operating system. It is the lowest level of software in a computer. It acts as a bridge between the user applications and the hardware. A kernel controls everything that happens in the system.
It loads first on startup and remains in main memory. As it stays in memory, it is important for it to be as tiny as possible while still performing all of its functions. The kernel code is usually loaded into a protected area of memory to prevent it from being overwritten by programs or other parts of the operating system.
What does it do?
The kernel is the first program to load on startup and also manages the remainder of the startup as well as manages the communication between the software (user level applications) and the hardware (CPU, disk memory etc). Its main tasks are:-
- Device management with the use of device drivers
- Process management for application execution
- File system
- Interrupt handling
- I/O communication
- Memory management
In short, the kernel is “brain” of the operating system, which controls everything from access to the hard disk to memory management. Whenever you want to do anything from the brightness of the screen to the volume level, to initiating a call, even what’s drawn on the display it goes through the kernel.
Now let us answer the big question —
What is the difference between a kernel and an Operating System?
There is a very narrow difference between a kernel and an OS. While for a normal user OS is a complete package that makes hardware usable. But for a programmer, it is a core piece of software, that does not include any utilities etc.
The kernel is the heart of OS which manages the core features of an OS while if some useful applications and features are added to the kernel, then the complete package becomes an OS.
Types of Kernel?
Kernels are of mainly two types:-
- Monolithic
- MicroKernel
Monolithic
The monolithic kernel consists of different modules which can be easily loaded and unloaded. This approach makes the maintainability of kernel very easy as only the concerned module needs to be altered every time there is a change or bug fix.
So, there is no need to recompile the whole kernel for a small change. With this approach, stripping of the kernel for various platforms became very easy as we can easily make changes or add/remove the modules according to our requirement.
Linux kernel is a very famous kernel which itself is a monolithic kernel. And that’ why it is used in many operating systems like Android, Ubuntu, etc. As Linux is open source, there are many custom kernels available for the android with which you can increase the performance or battery life of your device.
To use a custom kernel you need a rooted device with bootloader unlocked. Franco Kernel and the ElementalX Kernel are some of the best custom kernels which you can give a try.
MicroKernel
MicroKernel provides a solution to the problem of the ever-growing size of kernel code. This architecture allows some basic services like device driver management, protocol stack, file system etc to run in user space. MicroKernel is smaller in size than the monolithic and hence helps to increase the stability and security.
I hope that you clearly understood what a kernel is and how it is different from OS. Still, if you have any doubts or want to discuss more then you can mention it in the comments section below.