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.
Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.
- Initializing and Cache Mechanism in Linux Kernel
- Linux Kernel Module Programming: Hello World Program
- Monolithic Kernel and key differences from Microkernel
- Difference between Process and Kernel Thread
- Difference between Operating System and Kernel
- Kernel I/O Subsystem in Operating System
- Compile our own Android Kernel in 5 Simple Steps
- Difference Between Arch Linux and Kali Linux
- Allocating kernel memory (buddy system and slab system)
- Linux Virtualization : Linux Containers (lxc)
- Difference between User Level thread and Kernel Level thread
- Relationship between User level thread and Kernel level thread
- Why Linux is Better?
- SED command in Linux | Set 2
- Filters in Linux
- Linux vs Unix
- Different Shells in Linux
- du Command in LINUX
- od command in Linux with example
- Linux | Nmon
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. 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.