In computing, multitasking is a concept of performing multiple tasks over a certain period of time by executing them concurrently. As a result, a computer executes segments of multiple tasks in a manner, while the tasks share common processing resources such as central processing units. Multitasking does not necessarily mean that multiple tasks are executing at exactly the same time, even on multiprocessor or multicore computers, which have multiple CPUs/cores so more than one task can be executed at once, multitasking allows many more tasks to be run than there are CPUs. In the case of a computer with a single CPU, only one task is said to be running at any point in time, multitasking solves the problem by scheduling which task may be the one running at any given time, and when another waiting task gets a turn. The act of reassigning a CPU from one task to one is called a context switch. Multiprogramming systems are designed to maximize CPU usage, in time-sharing systems, the running task is required to relinquish the CPU, either voluntarily or by an external event such as a hardware interrupt. Time sharing systems are designed to allow programs to execute apparently simultaneously. In real-time systems, some waiting tasks are guaranteed to be given the CPU when an event occurs. Real time systems are designed to control devices such as industrial robots. The term multitasking has become a term, as the same word is used in many other languages such as German, Italian, Dutch, Danish. In the early days of computing, CPU time was expensive, when the computer ran a program that needed access to a peripheral, the central processing unit would have to stop executing program instructions while the peripheral processed the data. The first computer using a system was the British Leo III owned by J. Lyons. During batch processing, several different programs were loaded in the memory. When the first program reached an instruction waiting for a peripheral, the context of program was stored away. The process continued until all programs finished running, multiprogramming doesnt give any guarantee that a program will run in a timely manner. Indeed, the very first program may very well run for hours without needing access to a peripheral. As there were no users waiting at a terminal, this was no problem, users handed in a deck of punched cards to an operator. Multiprogramming greatly reduced wait times when multiple batches were being processed, the expression time sharing usually designated computers shared by interactive users at terminals, such as IBMs TSO, and VM/CMS
Modern desktop operating systems are capable of handling large numbers of different processes at the same time. This screenshot shows Linux Mint running simultaneously Xfce desktop environment, Firefox, a calculator program, the built-in calendar, Vim, GIMP, and VLC media player.
Multitasking capabilities of Microsoft Windows 1.01 released in 1985, here shown running the MS-DOS Executive and Calculator programs