Skip to main content

Want to know about LINUX KERNEL ?




 
You must have come across the term LINUX KERNEL.

So lets get to know what is a LINUX KERNEL, why is it so important, and from where did it come ?

The most interesting fact is that the computers are usually dumb. All the complex tasks they seem to perform is usually obeying and executing one instruction after the another.

These instructions are meant for performing the required tasks. Set of instructions is known as a program and a set of programs is known as software. Thus computers need softwares for each and every task. Even to boot up, they require a software.
When you are using your android phone and  using an application which may be a  browser, music player, camera, wifi, networking or anything, there’s a lot much activity happening beneath what you see and experience. 

There’s a bunch  of android services being running including google play services, JVM and below that there is a lowest level of android architecture called as LINUX KERNEL which uses the core of what’s going on. 
 
The Android Architecture

Every computing system uses a kernel. Windows , IOS, UNIX, Android , all use something called as a kernel. Windows 2000 and above uses Windows NT kernel, IOS uses Darwin Kernel, and android uses a LINUX Kernel. 
Everything from a wearable or an IoT device to a Super Computer use a kernel.

KERNEL is a thing that manages CPU resources, Memory resources and processes. It  also has device drivers for networking via Bluetooth or wireless fidelity, that goes through a kernel. Every time you make an attempt to open an app, It is the kernel who loads the app from the storage into the memory(RAM). 
If the app needs some memory, it is the kernel who allocates it. If app wants to do some networking or run any background process, it is the kernel who makes all this stuff possible. It also deallocates the  allocated resources when an application closes. Thus, it can be considered as the centre of all the activities that is going on.

As you can interpret that the KERNEL that handles all the processing would contain a complex design and architecture, that’s not so tough and also not pretty simple.
A kernel is indispensable and therefore the most important part of an operating system. However, there are different design principles governing developing of a kernel.


 On the one end of the spectrum, there is the Monolithic kernel architecture and at the other end is the microkernel architecture.

A kernel can be designed in two ways

1.     Monolithic Kernel

2.     Microlithic Kernel

Andrew.S.Tanenbaum - the creator of Minix operating system is a staunch supporter of the microkernel architecture. He believes that microkernel architecture is a better design principle and is ideal in critical situations where reliability is of uttermost importance like military or aerospace industries.

Where as Linus Torvalds who is the father of Linux kernel thinks microkernel architecture has its flaws and is very hard to debug. 

You can read the famous "Tanenbaum - Linus debate" on which kernel architecture is better - Monolithic or Microkernel at 
oreilly.com/catalog/opensources/book/appa.html  oreilly.com/catalog/opensources/book/appa.html and www.cs.vu.nl/~ast/reliable-os/ www.cs.vu.nl/~ast/reliable-os/.

Linux Kernel is monolithic kernel. All the services that are going on, i.e. all the drives, memory management, process management all occurs in one memory space.

In a microlithic kernel, kernel itself occupies a separate space in the memory, and all the other resource management processes occupy separate memory blocks. They appear to be user processes and the kernel communicates separately with the each one and if one of them crashes, the kernel doesn’t crash.

A monolithic kernel can be quite big and complicated. The LINUX KERNEL has 15 million lines of code in the LINUX KERNEL out of which 70 % are for device drivers and not all the code is used at once and only the selective part is used at a time for the system management.

Comparison Chart


BASIS FOR COMPARISONMICROKERNELMONOLITHIC KERNEL
BasicIn microkernel user services and kernel, services are kept in separate address space.In monolithic kernel, both user services and kernel services are kept in the same address space.
SizeMicrokernel are smaller in size.Monolithic kernel is larger than microkernel.
ExecutionSlow execution.Fast execution.
ExtendibleThe microkernel is easily extendible.The monolithic kernel is hard to extend.
SecurityIf a service crashes, it does effect on working of microkernel.If a service crashes, the whole system crashes in monolithic kernel.
CodeTo write a microkernel, more code is required.To write a monolithic kernel, less code is required.
ExampleQNX, Symbian, L4Linux, Singularity, K42, Mac OS X, Integrity, PikeOS, HURD, Minix, and Coyotos.Linux, BSDs (FreeBSD, OpenBSD, NetBSD), Microsoft Windows (95,98,Me), Solaris, OS-9, AIX, HP-UX, DOS, OpenVMS, XTS-400 etc.


You can also build your custom kernel as it is open source. Custom Kernel can greatly enhance your device’s performance but at the cost of battery life and battery backup.


Comments