A kernel is a main component of an operating system that acts as an interface between the user applications and the hardware resources of the computer like CPU, devices, memory etc. The core purpose of the kernel is to manage the communication between the software that is the user level applications and the computer’s hardware components.
Kernel is situated at the core part of the operating system and has the complete control over everything that occurs in the system. It is the first one to get loaded into memory during system startup, and it remains in the main memory until the computer session is closed because its services are required continuously.
Kernel offers basic services for other parts of the OS to execute the user request, some of these include:
Actually these services are requested by other parts of the operating system or by other application programs through system callas (a specified set of program codes executed for requesting a service from kernel). Kernels even provide methods for synchronization and communication between processes that are referred as inter-process communication (IPC).
Contents of a kernel vary considerably according to the operating system, but normally they include the following components:
Categories of Kernel
Kernels can be classified into five broad categories: monolithic kernels, microkernels, hybrid kernels, nanokernels and exokernels. Each has its own uses that are listed below:
Monolithic kernels: These kernels are used by Unix-like operating systems and contain all the core functions of the operating system and the device drivers. They have the ability to load modules at runtime, thereby allowing the easy extension of the kernel's capabilities as and when required.
Microkernel: They usually provide minimal services, such as defining memory address spaces, inter-process communication (IPC) and process management. Examples of microkernel operating systems are Mac OS X, AIX, Mach, BeOS, Hurd, MINIX and QNX.
Hybrid kernels: These types of kernels are similar to microkernels, but they include additional code in kernel space to run more swiftly. Examples of Operating systems with hybrid kernels are including Microsoft Windows NT, 2000 and XP etc. DragonFly BSD, a recent variant of FreeBSD, is the first non-Mach based BSD operating system to employ hybrid kernel architecture.
Nano Kernels: these kernels simplify the memory requirement by delegating the services, including the interrupt controllers or timers to device drivers.
Exo Kernels: They are tailored to allocate physical hardware resources such as processor time and disk memory block to other programs that links to library operating system.