stringtranslate.com

Задача (вычисления)

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

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

Терминология

В смысле «единицы выполнения» в некоторых операционных системах задача является синонимом процесса [ нужна цитата ] , а в других — потока [ нужна цитата ] . При неинтерактивном выполнении ( пакетная обработка ) задача является единицей выполнения в задании , [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 (по крайней мере с версии 2.6.13, [6] вплоть до версии 4.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. ^ Блох, Джошуа . Эффективная Ява (Третье изд.). С. 272, Пункт 68.
  4. ^ Терминология IBM: T
  5. ^ Глоссарий терминов и сокращений z/OS: T
  6. ^ "include/linux/sched.h". GitHub.com . Линус Торвальдс. 29 августа 2005 г.
  7. ^ "include/linux/sched.h". GitHub.com . Линус Торвальдс. 3 октября 2016 г.
  8. ^ "clone, __clone2 - создать дочерний процесс". Руководство программиста Linux . 17 июля 2016 г. Получено 6 ноября 2016 г.
  9. ^ Джеймс Ларримор Маккенни (1961). Одновременное мультипрограммирование электронных компьютеров . стр. 154.