An executing instance

A program file contains instructions and initial data, while a process includes the state needed to execute them. Starting the same editor twice can create distinct processes with different open files and instruction positions. System identifiers and records distinguish those execution instances rather than relying only on the name of the source program.

References: [1]

The state a process needs

Instruction positions, registers, memory, and resource references describe an executing process. The operating system saves necessary information during a switch and restores it later. States such as running, ready, and blocked distinguish activities able to use a processor from those waiting for input, devices, or another required condition.

References: [2]

Creation and inherited resources

Unix-style fork creates a child process and specifies which state and resource references it inherits. Implementations can delay copying physical pages until writes require it, separating the visible address-space rules from the timing of copying. Process creation can also fail when resources or system limits prevent another instance from being established.

References: [1]

Isolation and cooperation

Separate address spaces help isolate data, while pipes, sockets, and shared memory support cooperation. Interfaces specify sharing, synchronization, and collection of exit status. A process is an important execution and resource boundary, but can itself contain several threads, allowing an application to organize additional concurrent work within that boundary.

References: [2]