Kernel is software that is the most fundamental module of the Operating System. It provides a set of functions and services to support various OS functionalities. The rest of the OS is organized as a set of non-kernel routines.
Kernel is the main component of OS which controls and manages the main feature of an OS while if some of the useful applications, routines, and utilities are added on the kernel, and then it becomes a complete OS. After boot loader, the kernel is the first program loaded on start-up and it handles the rest of the start-up. It remains a separate portion of the main memory and is protected by other application programs.
It also controls all input/output requests from application software and then translating them into data-processing instructions for the CPU. The kernel manages several services like scheduling, process switching, exception, interrupt handling, multiprocessor synchronization, and device reservation.
OS functionality | Example of Kernel Functions and Services
|
Process Management | Save context of the interrupted program, dispatch a process, manipulate scheduling lists.
|
Process communication | Send and receive interprocess messages.
|
Memory Management | Set memory protection information, swap-in/swap out, handle page fault.
|
I/O management | Initiate I/O, process I/O completion interrupt, recover from I/O errors.
|
File management | Open a file, read/write data.
|
Security and protection | Add authentication information for a new user, maintain information for file protection.
|
Network management | Send/receive data through a message.
|
Interrupt handling | Kernel gets control when an interrupt such as a timer interrupt or an I/O interrupt notifies occurrence of an event to it, or when software interrupt instruction is executed to make a system call. |
Example:
Linux and XNU is a kernel of Unix and MacOS Operating System correspondingly. Now adding utilities, GUI, System Administrator, commands, compiler, and some other applications with Linux then it became a Unix operating system like redHat, ubuntu, suse, centOS, etc.
There are five different types of kernels
1. Monolithic Kernel
2. Micro Kernel
3. Hybrid Kernel
4. Nano Kernel
5. Exo Kernel