
Introduction
An operating system (OS) is a software program that serves as a conduit between computer hardware and the user. It is a piece of software that coordinates the execution of application programs, software resources, and computer hardware. It also aids in the control of software and hardware resources such as file management, memory management, input/output, and a variety of peripheral devices such as a disc drive, printers, and so on. To run other applications, every computer system must have at least one operating system. Browsers, MS Office, Notepad Games, and other applications require an environment to execute and fulfill their functions. This blog explains the objectives of operating systems.
Also See, FCFS Scheduling Algorithm, Multiprogramming vs Multitasking
Kernel
The kernel is a computer program present at the very core of the OS. It acts as the central controlling part of the OS.
- The kernel manages hardware and software operations and acts as an interface between user applications and hardware.
- The bootstrap program locates and loads into memory the operating system kernel.
- The main functions of the kernel are process management, memory management, device management, I/O communication, and interrupt handling.
- A Kernel has its own protected ‘kernel space, a separate memory space inaccessible to other application programs. The kernel's code is loaded into the kernel space. The memory used by other applications is known as ‘user space’.

Also see, Kernal in I/O Subsystem
Types of Kernel
There are five types of kernel
- Monolithic Kernel
- Microkernel
- Hybrid Kernel
- Nano Kernel
- Exo Kernel
In this blog, we will be focusing on monolithic kernels.
Click here to read about Yarn vs NPM here.
Monolithic Kernel
A monolithic Kernel is a computer system architecture where user and kernel services are implemented using the same memory space.
- As the same memory space is used, the size of the kernel and the size of the operating system increases.
- Monolithic kernels provide CPU scheduling, device management, file management, memory management, process management, and other OS functions using system calls.
- One disadvantage of this kernel is that if any system process or service fails, the entire system will crash.
- The execution of processes is fast in the case of a monolithic kernel.
Some monolithic kernel operating systems are Unix, Linux, OS/360, OpenVMS, Multics, AIX, BSD, etc.

Advantages
- Process execution is faster in monolithic kernels.
- The various services provided by monolithic kernels are CPU scheduling, device management, file management, memory management, process management, and other OS functions.
- Fewer lines of codes need to be written for a monolithic kernel.
- This kind of kernel is easy to design and implement.
Disadvantages
- The whole system will crash if one component fails.
- For adding a new service in a monolithic kernel, the user has to modify the entire operating system.
- The code written in this OS is difficult to port.
- There is a tendency to generate errors in the monolithic kernel as the user and kernel processes use the same memory.
-
It is challenging to manage and debug.
You can also read about the memory hierarchy, Open Source Operating System.