A process is the most common computational abstraction in a multi-tasking operating system. It is effectively a 'virtual computer' (but not in the sense of a virtual machine), to which the OS provides resources (memory, computing time, I/O, etc) as required.
The virtual computer is basically a restricted version of the underlying CPU, but also enhanced with other capabilities, provided by the OS (e.g. I/O to a file system, as well as devices attached to the system).
(The limitations are to remove the ability to peform those operations which could damage/etc other processes; these limitations are usually enforced by the hardware of the CPU, as directed by the OS.)
Other capabilities usually provided to a proceess by the OS include:
- the ability to run programs;
- tools to debug programs;
- the ability to communicate with other processes;
- the ability to create new processes, or shut this one down;
- the ability to wait for some event.