multitasking

from The Free On-line Dictionary of Computing (8 July 2008)
multitasking
concurrency
concurrent processing
multiprogramming
process scheduling

   <computer, parallel> (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.

   (1998-04-24)
    

[email protected]