Linux Operating System
Before understanding the popularity of Linux, we need to go back in past few years. When computer started to develop, no any fixed OS for computer. Computer size was very large and every computer had different OS. Software of one computer could not work on another computer and difficult to working with one computer to another computer. Over all computers was became more expensive and hard to work with computer.
In 1969, some developers in the Bell Lab laboratories started to work on software solution of compatible OS which is run any computer. They developed advanced OS with highly feature written in C language named UNIX operating system. UNIX was very simple and able to recycle the code. C language was newly developed for creating UNIX. UNIX is run on any computer and needed only small pieces of code called kernel.
UNIX is compatible with different systems and initially developed for mainframes and minicomputers especially for university. When started to develop small computer for individual user like home computer called microcomputer. That time Many UNIX version supported PC architecture but not fully compatible and slow. So users started to run MS-DOS or window on their home computer.
In 1990, PC were fully powered by UNIX and well featured but not fully open source means not available free software. In 1991, Linus Torvalds began developed an operating system called Linux which is member of large family UNIX-like OS. Linux is developed for IBM- compatible personal computer based on Intel 80386 micro processor. All feature of UNIX were added in Linux in few years, which make the mature operating system Linux. Today Linux is supported to any workstations, home user PC and both server and client.
What is Linux?
Linux is fully customizable free operating system. It is supported any hardware components. Due to advent open source feature of Linux, everyone can download the source code of Linux and modify it. On the server side Linux is well known stable and reliable OS. Day by day Linux became more popular and user friendly. Modern Linux is not only supported high end server, workstations and home PC but also run on various gadgets.
Linux is totally UNIX kernel but not fully UNIX OS because it does not include whole UNIX application like file system, Window system, text editor, Compiler and so on. Linux is just a kernel. Whole Linux distribution is collection of Linux Kernel, GUI, GNU C/C++ compiler, text editors and various applications under GPL. Linux is used only POSIX (Portable Operating System Interface Standards) of UNIX. POSIX is standards specified by IEEE computer society for maintaining compability between OS.
Figure 1: Linux Operating System
Linux is needed standard GNU C compiler and GPL (General Purpose License). GNU is collection of computer software that can be used in build an OS like UNIX or Linux.GNU is organization which implements whole OS freely usable by everyone. Various GNU components used to develop Linux like GNU compiler, debugger and hardware. Linux was licensed under the GPL. Without paying any charge, you can download source code of Linux to use, share and modify it. GPL (General Public License) is used free license software which provides freedom to run, share, modify and study it.
Before we discuss Linux in brief, I mentioned advantages of Linux:
- Open Source
- Run on both low and high end hardware
- Compatible with others OS
- More powerful
- Low failure time
- Well supported
- Well Secure
- Fully customizable in all its components
Feature of Linux
Linux is fully featured OS. Linux adopted the various feature from different UNIX version.
Linux is supported multithreading environment. More than one thread can run at a same time in Linux. Thread is small code within process. I will explain in brief about thread in another tutorial.
Linux kernel is Monolithic kernel. Monolithic kernel is operating system architecture where entire OS run in kernel mode instead of user mode. When program or applications want to use hardware, send request to kernel mode by system call. Kernel evaluate request from system call and interact with proper hardware. All operating services like memory management, file management, process management are working in kernel.
Whole Linux kernel consists of based on file system architecture. Linux supported many file types such as a directory file, link, pipe, named pipe, special file and block device file. Each file types have its own characteristic and feature. File system is not only holding the data of file but also contain the structure of file and all information about file.
Linux OS share the same resource like memory, hard disk etc. for multi users. Multi users can access same resource using individual terminal (i.e. client PC).
Architecture of LInux OS
Figure 2: Architecture of LInux OS
Linux OS architecture is consists of following layers:
Hardware consists of all peripheral devices like RAM, HDD, CPU etc. User can not interact direct with hardware from user space (where application or program is run).
Kernel is small special code which is core component of OS. Kernel is directly interacts with hardware. Kernel is provides low level service to user mode’s components. Kernel is fully developed in C language and file system architecture.
Shell is interface medium between user mode and kernel mode. Any program or application can interface with kernel through shell. Shell is hiding the complexity of kernel’s function from user. It is takes the command from user mode (i.e. command terminal) and executes function of kernel. For example if you entered any command from terminal (which is run in user mode), behind the terminal shell is take command from terminal and interact with kernel and execute the corresponding function related with command.
User or Utilities:
This is upper layer of OS also called user mode where application or program is run. In User layer, various users, applications, software and program can run at a same time.
Difference between User mode and Kernel mode
All kernel programs executes in kernel mode. Kernel mode directly accesses the memory and hardware. It can execute any CPU instruction and access any memory address. It is provide the low level service which is fully trusted. Whole PC is halt and OS is corrupted if crashes occurred in Kernel mode. It is prevent the user mode application from damaging the system. This mode is reserved for device driver which operate on low level and run upon requesting by API.
All user programs and applications are executes in user mode. User mode cannot directly access the memory and hardware. Program which is running in user mode can access the memory and hardware by calling API. Due to full protection, crashes in user mode are recoverable.
Linux Distribution is fully operating system which is collection of Linux kernel and package management system. User can download any distribution and run on PC or hardware. Various distributions are supported different platform like desktop environment, embedded platform etc. Linux distribution includes Linux, GNU tool, Software and collection of libraries. Some distribution is specially developed for specific hardware.
Here some popular distributions of Linux are following:
Debian is Linux operating system composed only of free and open source software. It is introduced in 1993 and till now it is stable and used in system. Debian is much slowly than ubuntu and Linux mint. Debian is user friendly preferred for server.
Ubuntu is well known Linux distribution for desktop environment. It is based on debian but it has its own repository (central location in which data is stored and manage). It is well user friendly.
Linux mint also Linux distribution for desktop environment similar to Ubuntu. It is used ubuntu’s repository. Same packages are available for ubuntu and Linux mint. Linux mint included media codec which is not included in ubuntu by default.
Some more Linux distributions are mentioned here:
- Cent OS
- Kali Linux
- Arch Linux
- Slackware Linux
Project Source Code
Project Source Code