Kernel is the core part of a computer, smartphone operating system. The kernel operates in the lowest layer according to the operating system architecture which is responsible for different tasks like memory management, device management, process management, etc. Without a kernel, the operating system, applications, the software couldn’t run.
How Kernel Works?
In order to run the kernel first, it should be loaded which is done during the boot of the system or computer. The boot loader software will first load the kernel and then pass the execution to the kernel. The kernel will load different modules, services, and initialize the hardware. After all, these tasks are completed the operating system software and userspace software and applications will be started.
The kernel has different functions and jobs in order to run an operating system.
Resource Management: A computer or system contains different resources like processes, devices, interrupts, address space, etc. All of these should be properly managed in order to prevent lock or problems. The kernel manages these resources properly and efficiently.
Memory Management: Memory is an important part of the kernel where RAM and similar memory types are managed by the kernel. The kernel uses virtual addressing, paging, segmentation, etc to manage memory.
Device Management: A computer or system owns a lot of different types of devices like a disk, GPU, CPU, Network Interface Card, sound system, modem, the mainboard. All of these devices should be managed accordingly by using their firmware and software.
System Calls: The operating system capabilities are provided to the user space applications, software, and programs via system calls. System calls are used to make request different functions like network communication, IP packet transmission, using graphical functions, reading the keyboard input, putting some graphics into the screen or monitor.
Process Management: Process is a base structure used to run applications and store data. Every application will create single or multiple processes in order to run. Processes
Kernels can differ according to their architecture and modularity. Below we will list some popular kernel types.
- Monolithic Kernel
- Micro Kernel
- Hybrid or Modular Kernels
- Nano Kernels
Monolithic Kernel runs all internal OS services in the main kernel thread. All kernel components and tasks share the same memory area, resources without a restriction. This has advantages like easy and fast implementation and access. but the disadvantage is less isolation will cause less security and an error may crash the complete kernel. Linux Kernel, AIX, HP-UX, and Solaris kernels are categorized as monolithic kernels.
Micro Kernel is designed to create little kernel-space and more user-space. Kernel designed with less and minimal functions. Microkernels are easy to maintain where provides rapid development. Microkernel requires more interaction between components with larger running memory footprint and complicated process management. GNU Hurd, MINIX, MkLinux, QNX, and Redox OS kernels are categorized as microkernels.
Hybrid or Modular Kernels
Hybrid or Modular Kernel is very similar to the microkernel except some extra code implementation is used to use both monolithic and microkernel advantages. Hybrid kernels are designed to gain advantages and remove the disadvantages of both micro and monolithic kernels. Hybrid or modular kernels provide faster development time for drivers and faster integration of third party technology. Most commercial operating system kernels Micorosft Windows NT 3.1, NT 3.5, NT 4.0, 200, XP, Vista, 7, 8, 10, and Apple MacOS XNU and FreeBSD kernels are hybrid or modular kernels.
Nano kernels are designed to be very small and designed to delegate all services like interrupt controller or timer etc.
Exokernels are designed to run on raw hardware with less or no abstraction. They are still experimental and not so popular. They provide real time control on the system hardware and resources.
Linux Kernel is a free and open-source, monolithic, Unix-like kernel. It is created in 1991 by “Linux Torvalds”. Linux kernel is by different operating systems, devices, and platforms like PC, Laptop, Smartphone, SmartTV, embedded devices, NAS appliances. As an open-source kernel the source code is available on the kernel.org web site.
NT (Windows) Kernel
NT Kernel is the name of the Windows family operating systems kernel. It is first released in 1993. Windows NT Kernel is categorized as a hybrid kernel and used different platforms like IA-32, x86-64, ARM. NT Kernel is a closed-source kernel which is commercially available.