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