Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Образец пула потоков (зеленые прямоугольники) с очередями ожидающих задач (синий) и завершенных задач (желтый) в смысле задачи как «единицы работы».

В вычислениях , А задача является единицей выполнения или единица работы. Термин неоднозначный; точные альтернативные термины включают процесс , облегченный процесс , поток (для выполнения), шаг , запрос или запрос (для работы). На соседней диаграмме есть очереди входящей работы, которую нужно выполнить, и исходящей завершенной работы, а также пул потоков.потоков для выполнения этой работы. Либо сами рабочие единицы, либо потоки, которые выполняют работу, могут называться «задачами», и они могут называться соответственно запросами / ответами / потоками, входящими задачами / выполненными задачами / потоками (как показано) или запросами / ответы / задачи.

Терминология [ править ]

В смысле «единицы выполнения» в некоторых операционных системах задача синонимична процессу [ необходима цитата ] , а в других - потоку [ необходима цитата ] . В неинтерактивном исполнении ( пакетная обработка ), задача является единицей выполнения в работе , [1] [2] с самой задачей обычно процессом. Термин « многозадачность » , прежде всего , относится к смыслу обработки - нескольких задач , выполняющих одновременно - но есть нюансы смысла работы нескольких задач , которые выполняются одновременно.

В смысле «единицы работы» в задании (что означает «разовая часть работы») задача может соответствовать одному шагу (самому шагу, а не его выполнению), в то время как при пакетной обработке отдельные задачи могут соответствуют одному шагу обработки одного элемента в пакете или одному шагу обработки всех элементов в пакете. В онлайн-системах задачи чаще всего соответствуют одному запросу (в архитектурах запрос-ответ ) или запросу (при поиске информации ), либо отдельному этапу обработки, либо всей обработке в масштабе всей системы.

Примеры [ править ]

В языке программирования Java эти два понятия (единица работы и единица исполнения) объединяются при работе непосредственно с потоками, но четко различаются в среде Executors :

Когда вы работаете напрямую с потоками, a Threadслужит как единицей работы, так и механизмом ее выполнения. В структуре исполнителя единица работы и механизм исполнения разделены. Ключевой абстракцией является единица работы, которая называется задачей . [3]

Терминология IBM [ править ]

IBM, использование термина было влиятельным, хотя подчеркивает двусмысленность термина, в терминологии IBM, «задача» десятки конкретных значений, в том числе: [4]

  • Единица работы, представляющая один из этапов процесса.
  • Единица работы, выполняемая устройством или процессом.
  • Процесс и процедуры, запускающие этот процесс.
  • Набор действий, направленных на достижение определенного результата. Задача выполняется по набору целей по определенному расписанию.
  • Единица вычисления. В параллельном задании две или более параллельных задачи работают вместе посредством передачи сообщений и общей памяти. Хотя обычно выделяют одну задачу на физический или логический процессор, термины «задача» и «процессор» не являются взаимозаменяемыми.
  • Деятельность, имеющая ценность для бизнеса, инициируется пользователем и выполняется программным обеспечением.

В частности, в z / OS он определяется как: [5]

  • «В многопрограммной или многопроцессорной среде одна или несколько последовательностей инструкций, обрабатываемых управляющей программой как элемент работы, выполняемой компьютером».

Термин «задача» в OS / 360 - z / OS примерно эквивалентен «облегченному процессу»; задачи на этапе задания разделяют адресное пространство. Однако в MVS / ESA через z / OS задача или блок запроса на обслуживание (SRB) могут иметь доступ к другим адресным пространствам через свой список доступа.

Ядро Linux [ править ]

Термин задача используется в ядре Linux (по крайней мере, начиная с v2.6.13, [6] до v4.8 [7] включительно ) для обозначения единицы выполнения, которая может совместно использовать различные системные ресурсы с другими задачами на сервере. система. В зависимости от уровня совместного использования задача может рассматриваться как обычный поток или процесс . Задачи создаются с помощью clone()системного вызова [8], где пользователь может указать желаемый уровень совместного использования ресурсов.

История [ править ]

Термин задача для части задания относится к мультипрограммированию в начале 1960-х годов, как в этом примере из 1961 года:

Последовательная модель имеет возможность обрабатывать задачи одного задания независимо, аналогично работе IBM 709 . [9]

Этот термин был популяризирован с появлением OS / 360 (анонсированной в 1964 году), в которой было реализовано мультипрограммирование с фиксированным числом задач (MFT) и мультипрограммирование с переменным количеством задач (MVT). В этом случае задачи отождествлялись с легковесными процессами, задание состояло из ряда задач, а позже задачи могли иметь подзадачи (в современной терминологии - дочерние процессы ).

Сегодня термин «задача» используется очень неоднозначно. Например, диспетчер задач Windows управляет (запускает) процессы , а планировщик задач Windows планирует выполнение программ в будущем, что традиционно называется планировщиком заданий , и использует .jobрасширение. Напротив, термин « очередь задач » обычно используется в смысле «единиц работы».

См. Также [ править ]

  • Параллелизм задач
  • Очередь задач

Ссылки [ править ]

  1. ^ «Что такое задача? - Определение с сайта WhatIs.com» . WhatIs.com . Проверено 11 июня 2015 года .
  2. ^ "Что такое компьютерные процессы?" . liutilities.com . Проверено 11 июня 2015 года .
  3. ^ Блох, Джошуа . Эффективная Java (Третье изд.). п. п. 272 , поз.68.
  4. ^ Терминология IBM: T
  5. ^ Глоссарий терминов и сокращений z / OS : T
  6. ^ " " . GitHub.com . Линус Торвальдс. 29 августа 2005 г.include/linux/sched.h
  7. ^ " " . GitHub.com . Линус Торвальдс. 3 октября 2016 г.include/linux/sched.h
  8. ^ "clone, __clone2 - создать дочерний процесс" . Руководство программиста Linux . 17 июля 2016 . Проверено 6 ноября 2016 года .
  9. ^ Джеймс Ларримор МакКенни (1961). Одновременное мультипрограммирование ЭВМ . п. 154 .