What Is A Kernel In An Operating System? (With Types)

By Indeed Editorial Team

Published 19 July 2022

The Indeed Editorial Team comprises a diverse and talented team of writers, researchers and subject matter experts equipped with Indeed's data and insights to deliver useful tips to help guide your career journey.

A kernel is a computer program which acts as the brain and centre of an operating system (OS). It provides the medium between the user and the system's hardware parts. Understanding how the kernel works can help you become a better computer engineer. In this article, we answer the question, 'What is a kernel?', enlist its functions, look at its various types and answer some frequently asked questions about the kernel.

What Is A Kernel In An Operating System?

If you are trying to answer 'What is a kernel in an operating system?', it is the core internal part that handles data processing at the hardware level. It controls memory, process and input-output management. When an operating system loads up, the kernel loads first and stays in memory until you turn off the operating system. The kernel is in charge of many activities, including memory management, task management and disc management.

It chooses which processes to keep in primary memory for execution and which ones to allocate to the processor for execution. In simple terms, it serves as a connection between hardware and user software. The core function of the kernel is to control communication between user-level applications and hardware components, like the CPU and disc memory.

Related: Common Operating System Interview Questions (With Sample Responses)

Functions Of A Kernel

An OS's kernel controls the system's hardware and is responsible for carrying out a number of tasks. Following are some of the kernel's primary functions:

Device management

Processes require access to peripheral equipment that is attached to the computer, such as a mouse or keyboard, to perform a variety of tasks. The kernel uses device drivers to control various devices. A device driver is a software application that helps or permits the OS to interface with the device's hardware. A kernel keeps a list of all devices available. This list may depend on pre-existing knowledge, user configuration or OS runtime detection.

Related: 50 Linux Interview Questions (With Example Answers And Tips)

Memory management

The kernel has complete authority over memory access on the computer. Each process requires some memory to function, and the kernel gives the processes access to the memory in a secure manner. The initial step in allocating memory is virtual addressing by applying segmentation. Virtual addressing is the technique of giving processes virtual address spaces. This stops the application from crashing itself.

Related: What Is The Tree Data Structure? (With Advantages And Types)

Resource management

Sharing resources between different processes is one of the kernel's key features. It requires distributing the resources such that each process can access them consistently. The kernel also offers a means of synchronisation and inter-process communication (IPC). It is in charge of changing the context of many processes.

Related: How Much Does An IT Engineer Make? (With Skills And Duties)

Accessing computer resources

You access computer resources like RAM and input-output (I/O) devices via a kernel. Random-access memory (RAM) stores data and instructions. All programs require memory access to start, and most of them demand more memory than is easily available. In such a situation, the kernel determines which memory each process may utilise and decides what to do if sufficient memory is not accessible. The kernel also handles requests from programs to access I/O devices like keyboards, microphones and printers.

Related: 20 Jobs With Computers (With Primary Duties And Advantages)

Types Of Kernel

Following are a few major types of kernels:

Monolithic kernels

Both kernel services and user services occupy the same memory region in monolithic kernels. This helps to increase the kernel's size as the operating system grows. The operations are much quicker with monolithic kernels, as there is no distinction between user space and kernel space.

Micro-kernel

In a micro-kernel, the space allocation is a little different. The kernel services and user services occupy different regions. This setup helps reduces the kernel's size, which in turn reduces the size of the operating system, by utilising user space and kernel space independently. The message parsing helps to carry out the communication between applications and services as user and kernel services lie in separate areas, which can slow down execution.

Hybrid kernel

The hybrid kernel comprises a monolithic kernel and a micro-kernel together. It makes use of the micro-kernel's modularity and the monolithic Kernel's speed. For the code to run more quickly than it runs in user space, hybrid kernels are small kernels that contain some non-essential code. To reduce performance overhead, several services, including file systems and network stacks, run in kernel space.

Nano kernel

As the name nano kernel suggests, the kernel's complete source code is very compact. This also applies to the hardware's privileged mode. A nano kernel's key feature is its ability to offer hardware abstraction without system services. Often the term nano kernel also refers to a kernel which can support clock resolution as low as nanoseconds.

Related: Popular Careers After A Computer Engineering Course

Exokernel

Exokernel architecture decouples resource protection and management, which enables hardware resource management at the application level. The exokernel differs from a monolithic kernel and micro-kernel, as there is no force abstraction. But this has the disadvantage of a complicated design. The exokernel often has a very intricate design.

Related: 60 Examples Of UNIX interview Questions (With Answers)

Frequently Asked Questions

Following are some frequently asked questions about kernel and its role in the operating system:

How do a kernel thread and a process differ?

The process is the act of carrying executing a program. User processes and system processes are the two distinct categories. The process control block manages the process. There is no sharing of space among multiple processes. A kernel thread is a type of thread in which the kernel manages the threads of a process. Operating systems help schedule kernel threads. Kernel threads also share address space.

Related: 30 Java Multithreading Interview Questions And Answers

How does a user-level thread (ULT) relate to a Kernel-level thread (KLT)?

User-level threads are threads created by the application developer using a thread library in the user space to carry out particular subtasks. Kernel-level threads are those in the kernel area that OS developers create to carry out particular OS functions, such as interrupting a handler in function. User-level threads and kernel-level threads closely relate to one another in the following ways:

Use of thread library

The application developer uses the thread library as an interface to construct and manage a number of threads. Both kernel space and user space may implement this API for a process. They built the required thread library in user space for real-time applications. This minimises the number of times the kernel is to be called by the application to perform thread creation, scheduling or management operations. It results in faster thread creation as it only needs to call processes' own functions. It gives each thread a user address space that is allocated at runtime.

Synchronisation

Depending on the application, the subtasks within each task can run simultaneously or concurrently. Single-threaded processing is inappropriate in that situation. It evokes multithreaded processing there. It gave each thread in the process a distinct subtask. The data portion these threads employ can be the same or different. Threads running in the same process often share the code section, data section, address space, open files and other resources.

How does a user mode differ from kernel mode?

Following are some key differences between a user mode and kernel mode:

  • In user mode, the application program executes and starts out, but in kernel mode, the program has direct access to system resources.

  • When an interruption happens in user mode, it affects only one process, but when an interruption happens in kernel mode, the entire operating system can crash.

  • User mode works as the restricted mode, the unprivileged mode and the slave mode, but the kernel-mode acts as the master mode, the privileged mode and the system mode.

  • In user mode, all processes get independent virtual address space, but all processes share a single virtual address space in kernel mode.

  • The user mode cannot access kernel apps directly. It requires accessing them via the kernel, but the kernel mode can access both user and kernel programs.

Related: 42 Examples Of Computer Technician Interview Questions

What are kernel panics?

The kernel is in charge of the entire computer system. If it fails, the entire system can crash. Various operating systems refer to such unwanted occurrences as kernel panic. Often the system requires a manual restart to get the kernel panic under control. Generally, problems with hardware communication trigger these kernel panics. If kernel panics keep happening, consider unplugging any superfluous or less-essential devices to see if that fixes the issue.

Explore more articles