To protect data and functionality from fault or some unwanted access in Linux, virtual memory is divided into user space and kernel space.
- Userspace: all the user application runs on Userspace.
- Kernel Space: Kernel space is the privileged space where mainly operating system kernel and device driver execute.
- Gnu C-library: this library exposes APIs to use application which helps user application to interacts with the kernel by using System calls. Example: Suppose in our userspace application we generally use printf() which is defined in C-lib and internally calls write() system call.
- System Call Interface: System call interface provides the implementation of various System calls.
- Kernel: below system call interface we have kernel code which is architecture-independent code which is the same for all the processors.
- Device driver: Device driver is the program that actually interacts with controls the hardware.
The Linux Operating System consists of 3 basic model. These are working together to run a system named as:
- Boot Loader
- Root File System
The Boot Loader is the first part of the first program. This program will be executed after every boot-up or power-on reset or also you can say that first power connect cycle. The boot loader contains the source code to initialize the system, start execution of the kernel module, and commands for debugging and modifying the kernel environment. The Boot Loader also contains the source that is having some commands to download or update the kernel and system images into the flash memory.
The Kernel module is the heart of Operating System. The Kernel is responsible for handling of all the operations needed to run the Operating System. These modules are process management, memory management, I/O hardware operations etc.
Root File System
The root file system of Operating system contains all the application software binary files, scripts, libraries, configuration files, kernel loadable modules etc.