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. ^ Блох, Джошуа . Эффективная Java (Третье изд.). п. п. 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. ^ «клонировать, __clone2 — создать дочерний процесс». Руководство программиста Linux . 17 июля 2016 г. Проверено 6 ноября 2016 г.
  9. ^ Джеймс Ларримор МакКенни (1961). Одновременное мультипрограммирование электронных вычислительных машин . п. 154.