Task (computing)

A sample thread pool (green boxes) with task queues of waiting tasks (blue) and completed tasks (yellow), in the sense of task as "unit of work".

In computing, a task is a unit of execution or a unit of work. The term is ambiguous; more precise alternative terms include process, thread (for execution), or step, request, or query (for work). In the diagram at right, there are queues of incoming work to do and outgoing completed work, and a thread pool of threads to perform this work. Either the work units themselves or the threads that perform the work can be referred to as "tasks", and these can be referred to respectively as requests/responses/threads, incoming tasks/completed tasks/threads (as illustrated), or requests/responses/tasks.

Terminology

In the sense of "unit of execution", in some operating systems, a task is synonymous with a process, and in others with a thread. In non-interactive execution (batch processing), a task is a unit of execution within a job,[1][2] with the task itself typically a process. The term "multitasking" primarily refers to the processing sense – multiple tasks executing at the same time – but has nuances of the work sense of multiple tasks being performed at the same time.

In the sense of "unit of work", in a job (meaning "one-off piece of work") a task can correspond to a single step (the step itself, not the execution thereof), while in batch processing individual tasks can correspond to a single step of processing a single item in a batch, or to a single step of processing all items in the batch. In online systems, tasks most commonly correspond to a single request (in request–response architectures) or a query (in information retrieval), either a single stage of handling, or the whole system-wide handling.

IBM terminology

IBM's use of the term has been influential, though underlining the ambiguity of the term, in IBM terminology, "task" has dozens of specific meanings, including:[3]

In z/OS specifically, it is defined precisely as:[4]

History

The term task for a part of a job dates to multiprogramming in the early 1960s, as in this example from 1961:

The serial model has the ability to process tasks of one job in an independent manner similar to the functioning of the IBM 709.[5]

The term was popularized with the introduction of OS/360 (announced 1964), which featured Multiprogramming with a Fixed number of Tasks (MFT) and Multiprogramming with a Variable number of Tasks (MVT). In this case tasks were identified with processes, a job consisted of a number of tasks, and, later, tasks could have sub-tasks (in modern terminology, child processes).

Today the term "task" is used very ambiguously. For example, the Windows Task Manager manages (running) processes, while Windows Task Scheduler schedules programs to execute in future, what is traditionally known as a job scheduler, and uses the .job extension. By contrast, the term "task queue" is commonly used in the sense of "units of work".

See also

References

  1. "What is task? - Definition from WhatIs.com". WhatIs.com. Retrieved June 11, 2015.
  2. "What are computer processes?". liutilities.com. Retrieved June 11, 2015.
  3. IBM Terminology: T
  4. Glossary of z/OS terms and abbreviations: T
  5. James Larrimore McKenney (1961). Simultaneous multiprogramming of electronic computers. p. 154.


This article is issued from Wikipedia - version of the Monday, February 29, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.