Computer multitasking

multitaskingmulti-taskingmultitaskmultiprogrammingcooperative multitaskingmulti-programmingmultitasking operating systemmultitaskedmulti-taskmultitasker
In computing, multitasking is the concurrent execution of multiple tasks (also known as processes) over a certain period of time.wikipedia
336 Related Articles

Process (computing)

processprocessesprocessing
In computing, multitasking is the concurrent execution of multiple tasks (also known as processes) over a certain period of time.
Multitasking is a method to allow multiple processes to share processors (CPUs) and other system resources.

Cooperative multitasking

co-operative multitaskingcooperativecooperative task
This "context switch" may be initiated at fixed time intervals (pre-emptive multitasking), or the running program may be coded to signal to the supervisory software when it can be interrupted (cooperative multitasking).
Cooperative multitasking, also known as non-preemptive multitasking, is a style of computer multitasking in which the operating system never initiates a context switch from a running process to another process.

Context switch

context switchingtask switchingswitch
This "context switch" may be initiated at fixed time intervals (pre-emptive multitasking), or the running program may be coded to signal to the supervisory software when it can be interrupted (cooperative multitasking).
This allows multiple processes to share a single CPU, and is an essential feature of a multitasking operating system.

Time-sharing

timesharingtime sharingtime-sharing system
In a time-sharing system, multiple human operators use the same processor as if it was dedicated to their use, while behind the scenes the computer is serving many users by multitasking their individual programs.
In computing, time-sharing is the sharing of a computing resource among many users by means of multiprogramming and multi-tasking at the same time.

Scheduling (computing)

schedulingschedulerscheduling algorithm
In multiprogramming systems, a task runs until it must wait for an external event or until the operating system's scheduler forcibly swaps the running task out of the CPU.
Scheduling is fundamental to computation itself, and an intrinsic part of the execution model of a computer system; the concept of scheduling makes it possible to have computer multitasking with a single central processing unit (CPU).

Concurrent computing

concurrentconcurrent programmingconcurrency
In computing, multitasking is the concurrent execution of multiple tasks (also known as processes) over a certain period of time.

Preemption (computing)

preemptive multitaskingpreemptivepre-emptive multitasking
This "context switch" may be initiated at fixed time intervals (pre-emptive multitasking), or the running program may be coded to signal to the supervisory software when it can be interrupted (cooperative multitasking).
The term preemptive multitasking is used to distinguish a multitasking operating system, which permits preemption of tasks, from a cooperative multitasking system wherein processes or tasks must be explicitly programmed to yield when they do not need system resources.

Operating system

operating systemsOScomputer operating system
This approach, which was eventually supported by many computer operating systems, is known today as cooperative multitasking.
A single-tasking system can only run one program at a time, while a multi-tasking operating system allows more than one program to be running in concurrency.

Unix

UNIX operating systemAT&T UnixUnix-like
Preemptive multitasking was implemented in the PDP-6 Monitor and MULTICS in 1964, in OS/360 MFT in 1967, and in Unix in 1969, and was available in some operating systems for computers as small as DEC's PDP-8; it is a core feature of all Unix-like operating systems, such as Linux, Solaris and BSD with its derivatives, as well as modern versions of Windows.
Unix (trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, development starting in the 1970s at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others.

Real-time computing

real-timereal timereal-time systems
Real-time systems such as those designed to control industrial robots, require timely processing; a single processor might be shared between calculations of machine movement, communications, and user interface.
In the context of multitasking systems the scheduling policy is normally priority driven (pre-emptive schedulers).

Virtual memory

virtual storagememoryswap
The use of multiprogramming was enhanced by the arrival of virtual memory and virtual machine technology, which enabled individual programs to make use of memory and operating system resources as if other concurrently running programs were, for all practical purposes, non-existent and invisible to them.
To allow for multiprogramming and multitasking, many early systems divided memory between multiple programs without virtual memory, such as early models of the PDP-10 via registers.

LEO (computer)

LEOLEO computerLEO I
The first computer using a multiprogramming system was the British Leo III owned by J. Lyons and Co. During batch processing, several different programs were loaded in the computer memory, and the first one began to run.
It was microprogrammed and was controlled by a multitasking operating system.

Sinclair QDOS

QdosQdos 1.10
The earliest preemptive multitasking OS available to home users was Sinclair QDOS on the Sinclair QL, released in 1984, but very few people bought the machine.
QDOS is the multitasking operating system found on the Sinclair QL personal computer and its clones.

RISC OS

ArthurRISC-OSArthur (operating system)
Cooperative multitasking is still used today on RISC OS systems.
While most current desktop OSes use preemptive multitasking (PMT) and multithreading, RISC OS remains with a CMT system.

Parallel computing

parallelparallel processingparallelism
Multitasking does not require parallel execution of multiple tasks at exactly the same time; instead, it allows more than one task to advance over a given period of time.

Amiga

Commodore AmigaAmiga ComputerAmiga 500/600 (OCS/ECS)
Commodore's Amiga, released the following year, was the first commercially successful home computer to use the technology, and its multimedia abilities make it a clear ancestor of contemporary multitasking personal computers.
TRIPOS was a multitasking system that had been written in BCPL during the 1970s for minicomputer systems like the PDP-11, but later experimentally ported to the 68000.

Windows NT 3.1

NT 3.13.1Microsoft Windows NT 3.1
Microsoft made preemptive multitasking a core feature of their flagship operating system in the early 1990s when developing Windows NT 3.1 and then Windows 95.
While Microsoft had a major foothold on the personal computer market due to the use of its MS-DOS as the de facto operating system of IBM PC compatibles, Nathan Myhrvold (who had joined Microsoft after its acquisition of Dynamical Systems Research) identified two major threats to Microsoft's monopoly—the RISC architecture, which proved to be more powerful than the equivalent Intel processors that MS-DOS ran on, and Unix, a family of cross-platform multitasking operating systems with support for multiprocessing and networking.

Windows 9x

9xWindows 95/98Microsoft Windows 9x
A similar model is used in Windows 9x and the Windows NT family, where native 32-bit applications are multitasked preemptively.
In addition to improved capabilities given to native applications, Windows also allowed users to better multitask older MS-DOS based software compared to Windows/386, thanks to the introduction of virtual memory.

Polling (computer science)

pollingpollpolled
In primitive systems, the software would often "poll", or "busywait" while waiting for requested input (such as disk, keyboard or network input).
In a simple single-purpose system, even busy-wait is perfectly appropriate if no action is possible until the I/O access, but more often than not this was traditionally a consequence of simple hardware or non-multitasking operating systems.

Thread (computing)

threadthreadsmultithreading
Depending on the operating system, a task might be as large as an entire application program, or might be made up of smaller threads that carry out portions of the overall program.

Process state

Process statesblockblocked state
In a multitasking computer system, processes may occupy a variety of states.

CPU-bound

CPU boundcompute-boundprocessor intensive
At any specific time, processes can be grouped into two categories: those that are waiting for input or output (called "I/O bound"), and those that are fully utilizing the CPU ("CPU bound").
With the advent of multiple buses, parallel processing, multiprogramming, preemptive scheduling, advanced graphics cards, advanced sound cards and generally, more decentralized loads, it became less likely to identify one particular component as always being a bottleneck.

Multiprocessing

multiprocessormulti-processormulti-processing
Even on multiprocessor computers, multitasking allows many more tasks to be run than there are CPUs.
When used with this definition, multiprocessing is sometimes contrasted with multitasking, which may use just a single processor but switch it in time slices between tasks (i.e. a time-sharing system).

CPU time

CPU usageprocess timeCPU time usage
In the early days of computing, CPU time was expensive, and peripherals were very slow.
The second use, with the advent of multi-tasking, is to quantify how the processor is shared between computer programs.

Computing

computer technologycomputing technologyapplied computing
In computing, multitasking is the concurrent execution of multiple tasks (also known as processes) over a certain period of time.