Early computer systems allowed only one program to be executed at a time. This program had complete control of the system, and had access to all the system's resources.
Current-day computer systems allow multiple programs to be, loaded into memory and to be executed concurrently. This evolution required, firmer control and more compartmentalization of the various programs. These needs resulted in the notion of a process, which is a program in execution. A process is the unit of work in a modern time-sharing system.
A system consists of a collection of processes: Operating system processes executing system code, and user processes executing user code. All these processes can potentially execute concurrently, with the CPU (or CPUs) multiplexed among them. By switching the CPU between processes, the operating system can make the computer more productive.
A batch system executes jobs, whereas a timeshared system has user programs, or tasks. Even on a single-user system, such as Microsoft Windows and Macintosh OS, a user may be able to run several programs at one time: a word processor, web browser, and e-mail package. Even if the user can execute only one program at a time, the operating system may need to support its own internal programmed activities, such as memory management. In many respects, all these activities are similar, so we call all of them processes.
The terms job and process are used almost interchangeably in this text. Although we personally prefer the term process, much of operating-system theory and terminology was developed during a time when the major activity of operating systems was job processing.