A
multitasking operating system may just switch between processes to give the appearance of many processes
executing simultaneously (that is, in
parallel), though in fact only one process can be executing at any one time on a single
CPU (unless the CPU has multiple cores, then
multithreading or other similar technologies can be used). It is usual to associate a single process with a main program, and child processes with any spin-off, parallel processes, which behave like
asynchronous subroutines. A process is said to
own resources, of which an
image of its program (in memory) is one such resource. However, in multiprocessing systems
many processes may run off of, or share, the same
reentrant program at the same location in memory, but each process is said to own its own
image of the program. Processes are often called "tasks" in
embedded operating systems. The sense of "process" (or task) is "something that takes up time", as opposed to "memory", which is "something that takes up space". The above description applies to both processes managed by an operating system, and processes as defined by
process calculi. If a process requests something for which it must wait, it will be blocked. When the process is in the
blocked state, it is eligible for swapping to disk, but this is transparent in a
virtual memory system, where regions of a process's memory may be really on disk and not in
main memory at any time. Even portions of active processes/tasks (executing programs) are eligible for swapping to disk, if the portions have not been used recently. Not all parts of an executing program and its data have to be in physical memory for the associated process to be active.
Process states , with arrows indicating possible transitions between states An operating system
kernel that allows multitasking needs processes to have
certain states. Names for these states are not standardised, but they have similar functionality. ==Inter-process communication==