Mark As Completed Discussion

In this lesson, we will learn about Linux operating system, with a focus on the following key points,

  1. Linux OS and its architecture.
  2. Important concepts to understand about Linux OS.

An operating system is a core program of a computer that manages all the application programs. It offers a user interface, and also allows application programs to interact with the hardware systems of the machine. Windows, Linux, and MacOS are perhaps the most common operating systems out there, and in this tutorial, we'll discuss some key points regarding the Linux operating system.

Linux

Linux is an open-source, free, and a multi-user operating system. This means that as an open-source OS, the code for Linux is publicly available, and as a multi-user system it allows multiple users to access the system at once. Linux is also a highly secure system with enhanced authentication features, especially providing controlled access for its files.

Linux Kernel and Distributions

Linux operating systems exist in different forms. The term Linux actually refers to the Linux kernel, which is a core part of an operating system. It controls everything in the system, creates, kills, and manages the processes in the system, and also enables them to access the devices of the computer.

Most Linux operating systems are based on this Linux kernel. They are termed as Linux distributions (also known as Linux distros). Ubuntu, Debian, and Fedora are famous Linux distributions.

Linux Architecture

Linux OS is composed of several components which work in accordance to keep the system running. Let's discuss them below.

Linux Architecture

Hardware

Peripheral devices such as RAM, HDD, CPU, are part of the hardware layer. They receive function calls from the kernel to perform the desired operations.

Kernel

The core part of an operating system is the kernel. Kernels are responsible for the execution, controlling, and allocating memory of processes in a system. It directly interacts with the machine hardware and hides the low-level details during the execution of programs.

Shell

Shell is an interface between a user and a kernel, which takes commands from the user and executes them according to the kernel's functionality. This interface makes sure that the user gives the required commands only.

System Utilities and Applications

System utilities and other applications are the softwares that send kernel commands to perform required operations.

Try this exercise. Fill in the missing part by typing it in.

____ is the core part of Linux architecture.

Write the missing line below.

Processes in Linux

In Linux systems, processes are of great importance. Any application, program, or file that runs on a Linux system is termed as a process. Linux OS can have multiple processes running at the same time.

  • Each process is given a unique process ID (or PID for short).
  • Each process is allocated a separate block of memory (also known as address space) where they run.

States of a Process

At any given time, only one process can run. A process can be in one of the three states below.

  • Ready State: When the processes are waiting for the currently running process to end and are ready to be run.
  • Blocked State: These processes are waiting for some input or output and are waiting for a certain incident to happen before they can be run.
  • Running State: The process is currently being executed.

As soon as the process is created, they immediately go into the ready state. They are stored in a special data structure and wait until the current process finishes executing.

Let's test your knowledge. Is this statement true or false?

If a process is waiting for the completion of an I/O operation it is in blocked state.

Press true if you believe the statement is correct, or false otherwise.

File Hierarchy System in Linux

Linux systems perform most of their operations on files. They have a specific file hierarchy structure, which describes where files and directories should be and what they should contain. Note that most distributions follow this structure however there may be changes in the structure depending on differences in distributions.

Important directories in the file hiearchy system are,

  • Root directory: All files and directories come under the root directory. It's located at /root, where the forward slash / represents the system root directory.
  • Home directory: Home directory contains a home folder for each user which contains user-specific files and configurations. It is located at /home/<username>.
  • Bin directory: Contains binary executables for system program and utilities are stored in this directory. It is located at /bin.
  • Lib directory: This directory is located at /lib and contains necessary libraries required by the binaries in /bin directory.
  • User directory: This directory contains user specific binaries and data, instead of the system specific files. It is located at /usr, and has folders for binaries and their libraries for applications that are installed by the user.

Build your intuition. Is this statement true or false?

/usr directory is the same as /home directory.

Press true if you believe the statement is correct, or false otherwise.

Build your intuition. Click the correct answer from the options.

Forward slash / is the ____ directory.

Click the option that best answers the question.

  • root
  • home
  • user
  • system root

File Permissions in Linux

As most operations in Linux are performed using files, knowing file permissions have significant importance in Linux OS. As a multi-user system, Linux needs to be extra careful regarding file access permissions for different users to prevent data breach. Every file can have one or more of the following 3 permissions defined.

  • Read: This permission allows the user to read and list the file's content. They cannot modify the file.
  • Write: This permission allows the user to modify the file's contents by adding, removing, or renaming the file. This permission limits the user to move or remove the file.
  • Execute: This permission allows the user to execute programs. Without this permission you can either read or write to programs, but not execute them.

File type and access permissions for a specific file can also be checked by running ls -l on the bash terminal.

One Pager Cheat Sheet

  • We will learn about Linux OS and its architecture, and important concepts to understand about it.
  • Linux is an open-source, free, and multi-user operating system that provides enhanced security and authentication features, tends to be made up of various distributions based on the kernel, and is used by multiple users at once.
  • The Linux OS is composed of several components such as Kernel, Shell, Hardware, and System Utilities and Applications, which interact with each other to keep the system running.
  • The kernel is the core of the Linux architecture responsible for executing commands from the shell, peripheral devices, and system utilities to control memory, hardware, and applications.
  • In Linux systems, aprocesscan be "Ready", "Blocked" or "Running" and each is given an uniqueprocess ID(orPID) with a separateaddress spaceto run in.
  • The process can be in any one of the three states - Ready, Blocked, or Running - depending on if it is waiting for an I/O operation to complete.
  • Linux has a file hierarchy structure, including a root directory, home directory, bin directory, lib directory, and user directory, for organizing system programs, utilities, libraries, and user-specific files and configurations.
  • No /usr directory is not the same as /home directory; the /home directory is user-specific for files and configurations, while /usr has user-specific binaries and data for applications installed by the user.
  • The system root directory, indicated by a forward slash (/), is the parent directory of all other directories and serves as the root from which all other files and directories stem.
  • Knowing Read, Write, and Execute permissions help define data access control for different users in Linux and can be checked using ls -l on the bash terminal.