Reason for Concurrency.
Modern operating systems allow few programs to be run at the same time, for example to play sound while capturing data from keyboard.
Running program is called process. Two copies of running program are two separate processes.
Process changes it's state during execution.
* new - process was created,
* active - instructions are executed,
* waiting - process waits for certain event (for example: end of input/output operation),
* ready - process waits for processor,
* zombie - process ended it's execution, but didn't release it's resources yet.
* stopped - process ended it's execution and released it's resources.
Process composition, technical details.
Process is more than just code section (often also called 'text section'). It's also program counter and processor register values. Often process also contains so called 'process stack', that stores temporary data such as procedure arguments, return addresses, temporary variables, and 'data section' containing global variable data.
Source: , UNIX man pages.