How the process works in Linux
It’s insufficient to provide the computer with binary code that tells it what to execute a program. Running the program requires a lot of memory and other resources from the operating system. So, the “Process” is a program loaded into memory with all of the required resources. Managing the resources of your program is the job of the operating system.
A program counter, registers, and stack are all critically important resources for every process. A CPU contains a set of registers for holding data. Registers can hold information needed by a process, such as instructions or storage addresses. Computers keep track of where they are in their programs using the “program counter,” also known as the “instruction pointer”. Stacks of data are used as scratch space in computer programs because they contain information about active subroutines. Dynamically allocated memory is distinguished from the “heap,” a process that is autonomous and unconstrained.
An individual program can run in more than one instance, and each one is referred to as a “Process“. The memory address space for each process is separate, so it can run independently and be isolated from the other processes. The application cannot directly access data that is shared between other processes. Switching one process to another saves and loads registers, memory maps, and other resources, which will take some time to load.
Operating systems attempt to separate processes on their own so that when one process fails, it doesn’t impact the other processes. For example, you have probably run into a situation where one of your computer applications freezes or crashes, and yet you have been able to stop it without affecting any other applications. Each process has its own address space, so each one has a different set of data.
How the thread works in Linux
“Thread” is the set of instructions executed within a process that can range from a single thread to multiple. The process is the one that allocates the memory and resources that are later used by the thread. It is sometimes called a lightweight process because they can access shared data while having their own stack. As it operates in parallel, the application’s performance will also be improved. Having the same address space of threads and processes means that communication between threads costs little. The disadvantage is that a failure of one thread will most definitely affect other threads and make the process less viable. In the graphical representation below, you can see how the process works and the threads.
Difference between the Process and Threads Linux
Notable differences are mentioned in the following image:
Conclusion
The terms “Process” and “thread” might be confusing for newcomers. So this article has been written keeping this point in mind, and you should be able to have the basic idea after reading the article. After that, it explained the key differences between them. Thread is the subpart of the process which distributes its resources to other threads. This will improve the application performance as the resources are now shared.