What is the “kernel”? We have thrown the term around quite a bit, but we haven’t really dug into what it is and what it means, and why is it called that? The term doesn’t derive from “colonel”, a rank in the military, instead, it refers to fruits and nuts.
In the practical world, the kernel is the softer, usually edible part of a nut, or seed and is contained within its hard shell. When talking about smartphones, tablets, and even computers, the kernel isn’t that much different… though I wouldn’t recommend you eat it.
Think of it like popcorn. If you try to eat a popcorn kernel without cooking it you’ll probably chip a tooth! The outside shell is hard and protects the inside. If you’ve got the right mixture of oil and heat you can unlock all the goodness that’s inside that hard shell.
In computing, the kernel isn’t all that different. Wikipedia sums it up fairly well:
“… the kernel is the main component of most computer operating systems; it is a bridge between applications and the actual data processing done at the hardware level.”
The kernel provides the lowest-level abstraction layer for the resources (processors and I/O devices) and is responsible for managing the system’s resources. Apps can talk through the kernel to the various hardware components in the system.
To run an app, the kernel usually sets up an “address space” for that app, and loads the app into memory. The app must run inside this address space. If it tries to run outside of that space an exception is thrown. Using this structure an operating system tries to protect itself from malicious code being run. That’s why most viruses and other nasty code exploits vulnerabilities in apps that already have the full faith and trust of the end-user and the kernel.
Sounds complicated, right? In all honesty, it is. However, understanding basically what the kernel is, and why it does what it does is usually enough for most Android Power Users.