multitasking
Mode of computer operation in which the computer works on multiple tasks at the same time. A task is a computer program (or part of a program) that can be run as a separate entity. On a single-processor system, the CPU can perform preemptive (also called time slicing or time sharing) multitasking, where it executes part of one program, then switches to another program, and then returns to the first one. On multiprocessing systems, each processor can handle a separate task.
The running of two or more programs in one computer at the same time. The number of programs that can be effectively multitasked depends on the sophistication of the operating system, the speed of the CPU and the speeds and capacities of memory and disk. See preemptive multitasking.
Input/Output Vs. Processing
Programs can be run simultaneously in the computer because of the difference between I/O and processing speed. While one program is waiting for input, instructions in another can be executed. During the milliseconds one program waits for data to be read from a disk, millions of instructions in another program can be executed. In interactive programs, thousands of instructions can be executed between each keystroke on the keyboard.
Channels and Multicore Provide Simultaneity
In mainframes and mainframe-like architectures, multiple I/O channels allow for simultaneous I/O operations to take place. Multiple streams of data, sometimes hundreds, are being read and written at the exact same time.
If a computer has more than one CPU, one program can be running in one CPU and another program in the second CPU, and so on (see multicore).
A Note on Ancient Terminology
In the days of mainframes only, multitasking was called "multiprogramming," and multitasking meant "multithreading." See multithreading.
| (computer, parallel) | multitasking - (Or "multi-tasking", "multiprogramming",
"concurrent processing", "concurrency", "process scheduling")
A technique used in an operating system for sharing a single
processor between several independent jobs. The first
multitasking operating systems were designed in the early
1960s.
Under "cooperative multitasking" the running task decides
when to give up the CPU and under "pre-emptive multitasking"
(probably more common) a system process called the
"scheduler" suspends the currently running task after it has
run for a fixed period known as a "time-slice". In both
cases the scheduler is responsible for selecting the next task
to run and (re)starting it.
The running task may relinquish control voluntarily even in a
pre-emptive system if it is waiting for some external event.
In either system a task may be suspended prematurely if a
hardware interrupt occurs, especially if a higher priority
task was waiting for this event and has therefore become
runnable.
The scheduling algorithm used by the scheduler determines
which task will run next. Some common examples are
round-robin scheduling, priority scheduling, shortest job first and guaranteed scheduling.
Multitasking introduces overheads because the processor
spends some time in choosing the next job to run and in saving
and restoring tasks' state, but it reduces the worst-case time
from job submission to completion compared with a simple
batch system where each job must finish before the next one
starts. Multitasking also means that while one task is
waiting for some external event, the CPU to do useful work
on other tasks.
A multitasking operating system should provide some degree of
protection of one task from another to prevent tasks from
interacting in unexpected ways such as accidentally modifying
the contents of each other's memory areas.
The jobs in a multitasking system may belong to one or many
users. This is distinct from parallel processing where one
user runs several tasks on several processors. Time-sharing
is almost synonymous but implies that there is more than one
user.
Multithreading is a kind of multitasking with low
overheads and no protection of tasks from each other, all
threads share the same memory. | |