A program is merely a passive entity (a file containing code stored on disk). A process, on the other hand, is an active entity: a program in execution. The Operating System is responsible for managing these processes, ensuring they execute fairly and securely.
As a process executes, it changes state. The state of a process is defined by its current activity:
Each process is represented in the operating system by a Process Control Block (PCB), also called a task control block. It contains many pieces of information associated with a specific process:
The objective of multiprogramming is to have some process running at all times to maximize CPU utilization. The objective of time-sharing is to switch the CPU among processes so frequently that users can interact with each program while it is running.
To meet these objectives, the Process Scheduler selects an available process for program execution on the CPU.