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/.
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 COMPARISON | MICROKERNEL | MONOLITHIC KERNEL |
|---|---|---|
| Basic | In 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. |
| Size | Microkernel are smaller in size. | Monolithic kernel is larger than microkernel. |
| Execution | Slow execution. | Fast execution. |
| Extendible | The microkernel is easily extendible. | The monolithic kernel is hard to extend. |
| Security | If a service crashes, it does effect on working of microkernel. | If a service crashes, the whole system crashes in monolithic kernel. |
| Code | To write a microkernel, more code is required. | To write a monolithic kernel, less code is required. |
| Example | QNX, 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
Post a Comment