Kernel in OS
What is Kernel in OS?
The kernel is the core component in the operating system. The job of the kernel is to handle the communication between the hardware and the software.
In other words, a kernel is defined as the computer program, which is like a heart or nucleus of the computer operating system along with full control over everything in the system. On most of the systems, a kernel is the first program that is loaded on start-up (after the boot-loader) and also controls the remaining other start-ups and requests of Input/output from software, converting them into the data-processing instructions for the CPU.
It manages peripherals devices such as Monitors, keyboards, speakers, and Printer. The kernel is the deepest part of the operating system.
The kernel handles the following:
- Resource management
- Device management
- Memory management
- CPU/GPU
- Input/output device
- System calls
- Memory
The processes of the user can access the space of the kernel with the help of system calls only. If a program wants to access the area of kernel directly, then it will result in a fault.
Features of Kernel
The features of the kernel are:
- Inter-process communication
- Context switching
- Low-level scheduling of processes
- Process synchronization
Types of Kernel
There are various types of the kernel:
- Microkernel
- Monolithic kernel
- Nano kernel
- Exo kernel
- Hybrid Kernel
Monolithic Kernel: - In a monolithic kernel, the kernel and operating system, both run in the same memory, and it is mainly used where security is not a major concern. The result of the monolithic kernel is fastly accessible. But in some situations, like if a device driver has a bug, then there may be chances of a whole system crash.
Microkernel: - A Microkernel is the derived version of the monolithic kernel. In microkernel, the kernel itself can do different jobs, and there is no requirement of an additional GUI.
Nano kernel: - Nano kernel is the small type of kernel which is responsible for hardware abstraction, but without system services. Nano kernel is used in those cases where most of the functions are set up outside.
Exo kernel: - Exo kernel is responsible for resource handling and process protection. It is used where you are testing out an inhouse project, and in up-gradation to an efficient kernel type.
Hybrid kernel: - Hybrid kernel is a mixture of microkernel and monolithic kernel. The Hybrid kernel is mostly used in Windows, Apple’s macOS. Hybrid kernel moves out the driver and keeps the services of a system inside the kernel.