Введение

Единица выполнения или работы в программном обеспечении

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

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

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

Ядро Linux

Термин "задача" используется в ядре Linux (как минимум, начиная с версии 2.6.13 и до версии 4.8 включительно) для обозначения единицы выполнения, которая может совместно использовать различные системные ресурсы с другими задачами в системе. В зависимости от степени совместного использования ресурсов, задача может рассматриваться как обычная нить или процесс. Задачи создаются с помощью системного вызова `clone`, где пользователь может указать желаемую степень совместного использования ресурсов.