Divides the processor time amongst a number of tasks, so that in a multi-user system each user appears to have interrupted access to the powerful computer, and on a single computer with its own processor, several programs appear to be running at the same time