What is Kernel?
Spend enough time around Android, or even PCs, and eventually you will come across the term, “the Linux kernel,” since Android uses the Linux kernel. The “Linux” part is easy enough to understand, it is a play-on-words of Linus, as in Linus Torvalds, the original creator of Linux. But kernel? What is Kernel? What do we mean by the Linux kernel? Let’s find out!
The kernel is the central module of an operating system (OS). It is the part of the operating system that loads first, and it remains inmain memory. Because it stays in memory, it is important for the kernel to be as small as possible while still providing all the essential services required by other parts of the operating system and applications. The 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.
Typically, the kernel is responsible for memory management,process and task management, and disk management. The kernel connects the system hardware to the application software. Every operating system has a kernel. For example the Linux kernel is used numerous operating systems including Linux, FreeBSD, Android and others.
From the moment a computer starts it needs instructions, it can’t do anything without them. Even while your Android device is booting and showing some boot logo, the CPU is just following instructions. Once your phone is fully booted you get Android. What we see of Android is a nice launcher, some apps like the Chrome web browser and maybe some games. But there is more going on than meets the eye.
Under the user interface there are a bunch of different systems including the Java virtual machine (i.e. Dalvik or ART) and the SurfaceFlinger, which is responsible for compositing all the different things that needs to be drawn into a single buffer that is then displayed on the screen.
Go down deeper, really deep – beyond the permafrost, and you reach the kernel, the Linux kernel to be precise. All multi-tasking operating systems have a kernel of one form or another. Windows has a kernel, OS X has a kernel, iOS has a kernel, Windows Phone has a kernel, and of course Android has a kernel. But of those only Android uses the Linux kernel. Windows and Windows Phone/Mobile have their own kernel often referred to as the NT kernel, while OS X and iOS use a kernel known as Darwin.
Monolithic vs microkernel
As with all complex systems, there are different approaches that can be used when it comes to designing a kernel. The Linux kernel is what is known as a monolithic kernel. That means that the kernel is one program using one memory space. The main alternative is the microkernel approach. With microkernels the essentials of the kernel are placed in the smallest possible program and it interacts with other kernel level programs which run as separate servers or services.
Pros and cons?
First the downsides, to put a new kernel on your Android device you are going to need root access. Some people are very comfortable with having root access on their devices, others aren’t. It also implies a certain level of technical expertise. Putting on a new kernel isn’t within everyone’s skill set.
Also you need to trust the kernel builder. Probably, hopefully, not because there could be nefarious code included in the new kernel build, but more in terms of how reliable the kernel builder is in terms of fixing bugs. There is also the danger of “bricking” your device. When you get an Android smartphone from a reliable OEM then the firmware has had lots of testing before it is released. If you start playing with new kernels you could find yourself in the position where the kernel isn’t working properly and the kernel builder isn’t responding to bugs requests or questions. Other than a bricked phone, the answer will be to install a different kernel.