What is an operating system process? How is it different from a program? Why do we need the concept of a process, rather than simply talk about programs running in memory?
The execution environment in which the class instances and the instances of subsystems run and reside and its unique address space is combined known as Operating system process. The execution environment may be divided into one or more threads of control.
Difference between program & operating system process
The process may be called the active state of a program. It also gives the status of given task mentioned in that particular program, it provides the information to main memory about the task's state and other details, for example the position it has executed up-to that instance. It keeps track of the status of registers and instances of the resources it hold and required resources, what cost it incurs on the CPU after it is done with its work.
Program is an active entity, it can be seen as the overall information on what has to be done with CPU and other resources which are likely to be needed or liable to complete that given task. In some cases it simply is a combination of Lighten weight processes (known as threads) and thick weight processes as we may require running various modules of different programs in some single program. Thus the process is similar to a platform on CPU for executing various tasks of given program and part of the main set of process.
Why do we need the concept of a process?
Processes are inert. We know that process is basically the active state of a program which is the set of instruction destined to execute some specific job. Prior to execution, the instructions must be converted to binary code form in order to be understood by loader OS. It is stored in Portable Executable (PE) Format on Secondary Memory Like hard disk. in windows this is generally the file with .exe extension.
A process consists of a kernel object which keeps statistical information about the process and an address space containing the entire executable or DLL module's code, data and dynamic memory allocations such as thread stacks and heap allocations.
The code contained in the process's address space is run by a thread of the process
One process may contain n number of threads, and all of them execute the code simultaneously in the address space of the process. Each thread has its own set of stack and CPU registers.
If no threads were executing the code in the process's address space the system would automatically destroy the process and its address space.