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.
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.
- Linux Kernel Module Programming: Hello World Program
- Initializing and Cache Mechanism in Linux Kernel
- 5 Tips to Make a Career as a Linux Kernel Developer
- Difference between User Level thread and Kernel Level thread
- Monolithic Kernel and key differences from Microkernel
- Allocating kernel memory (buddy system and slab system)
- Kernel I/O Subsystem in Operating System
- Difference between Operating System and Kernel
- Compile our own Android Kernel in 5 Simple Steps
- Relationship between User level thread and Kernel level thread
- Difference between Process and Kernel Thread
- Kernel in Operating System
- What is Terminal, Console, Shell and Kernel?
- User mode and Kernel mode Switching
- Linux Virtualization : Linux Containers (lxc)
- Difference Between Arch Linux and Kali Linux
- How to find time taken by a command/program on Linux Shell?
- Terminal Mail and Linux Security Mail
- Linux Virtualization - Chroot Jail
- Formatted text in Linux Terminal using Python
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.