Unix - kernel in unix
1. What is a Kernel?
The kernel is the core component of any operating system (Linux, Unix, Windows, etc.).
It acts as a bridge between hardware and software.
In Linux/Unix, the kernel is responsible for:
-
Managing system resources (CPU, memory, I/O devices).
-
Handling system calls (requests from applications).
-
Providing abstraction so applications don’t directly deal with hardware.
Think of it as the “heart” of the operating system.
2. Functions of the Kernel in Linux/Unix
-
Process Management
-
Creates, schedules, and terminates processes.
-
Example: Running
ps -aux
in Linux lists all running processes.
-
-
Memory Management
-
Allocates/deallocates memory to processes.
-
Manages virtual memory and paging.
-
-
Device Management
-
Provides drivers so applications can use hardware (disk, keyboard, printer).
-
Example:
/dev/sda
represents a storage device.
-
-
File System Management
-
Provides a way to read/write files.
-
Example: Linux uses ext4, xfs, etc.
-
-
System Calls Interface
-
Provides APIs that applications use to interact with the kernel.
-
Example:
open()
,read()
,write()
system calls.
-
3. Example
Suppose you run the command:
cat file.txt
Here’s what happens:
-
Shell sends request to kernel to open
file.txt
. -
Kernel looks up the file in the file system.
-
Kernel asks disk driver (hardware) to fetch the data.
-
Kernel passes data back to the shell.
-
Shell displays content on your terminal.
You didn’t need to write instructions for disk hardware — kernel handled it!
4. Visual Diagram of Kernel in Linux/Unix
Here’s a simple layered diagram:
+---------------------------------------------------+
| User Applications |
| (Shell, Browsers, Editors, Compilers, etc.) |
+---------------------------------------------------+
| System Call Interface (API) |
+---------------------------------------------------+
| Kernel |
| - Process Management |
| - Memory Management |
| - File System Management |
| - Device Drivers |
| - Networking |
+---------------------------------------------------+
| Hardware (CPU, RAM, I/O) |
+---------------------------------------------------+
5. Types of Kernels
-
Monolithic Kernel (Linux, traditional Unix)
-
All OS services run in kernel space.
-
Faster, but large in size.
-
-
Microkernel (Minix, QNX)
-
Only essential parts (CPU, memory, IPC) in kernel space.
-
Other services run in user space (safer, but slower).
-
Linux uses a Monolithic Kernel, but with modular support (drivers can be loaded/unloaded at runtime using modprobe
).
In summary:
The Linux/Unix kernel is the core program that manages hardware resources, allows multiple processes to run, and provides a safe interface for applications. Without the kernel, applications cannot run or interact with hardware.