The main purpose of a computer is to run a predefined sequence of instructions, known as a program. A program under execution is often referred to as a process. Now, most special purpose computers are meant to run a single process, but in a sophisticated system such a general purpose computer, are intended to run many processes simulteneously. Any kind of process requires hardware resources such are Memory, Processor time, Storage space, etc.
In a General Purpose Computer running many processes simulteneously, we need a middle layer to manage the distribution of the hardware resources of the computer efficiently and fairly among all the various processes running on the computer. This middle layer is referred to as the kernel. Basically the kernel virtualizes the common hardware resources of the computer to provide each process with its own virtual resources. This makes the process seem as it is the sole process running on the machine. The kernel is also responsible for preventing and mitigating conflicts between different processes.
This schematically represented below:
The Core Subsystems of the Linux Kernel are as follows:
- The Process Scheduler
- The Memory Management Unit (MMU)
- The Virtual File System (VFS)
- The Networking Unit
- Inter-Process Communication Unit
For the purpose of this article we will only be focussing on the 1st three important subsystems of the Linux Kernel.
The basic functioning of each of the 1st three subsystems is elaborated below:
- The Process Scheduler:
This kernel subsystem is responsible for fairly distributing the CPU time among all the processes running on the system simulteneously.
- The Memory Management Unit:
This kernel sub-unit is responsible for proper distribution of the memory resources among the various processes running on the system. The MMU does more than just simply provide separate virtual address spaces for each of the processes.
- The Virtual File System:
This subsystem is responsible for providing a unified interface to access stored data across different filesystems and physical storage media.
- Initializing and Cache Mechanism in Linux Kernel
- Linux Kernel Module Programming: Hello World Program
- Difference between Operating System and Kernel
- Kernel I/O Subsystem in Operating System
- Monolithic Kernel and key differences from Microkernel
- Compile our own Android Kernel in 5 Simple Steps
- Allocating kernel memory (buddy system and slab system)
- Linux Virtualization : Linux Containers (lxc)
- Difference between User Level thread and Kernel Level thread
- Fun Commands in Linux
- Linux | Nmon
- Different Shells in Linux
- Run Levels in Linux
- 10 Best Linux VPS Hosting
- Filters in Linux
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.