работа, задача и процесс, какая разница - PullRequest
27 голосов
/ 19 июня 2010

в чем разница между этими понятиями?

Ответы [ 5 ]

25 голосов
/ 03 июля 2015

«Процесс» четко определен; «Работа» и «задача» неоднозначны.

По сути, задание / задача - это что работа выполнена, в то время как процесс как выполняется, обычно антропоморфизируется как кто делает это. Работа - это общая единица работы и состоит из , состоящей из задач. На практике использование очень противоречиво и часто «задача» == «процесс», хотя формально процесс выполняет задачу.

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

Job и task сегодня являются неопределенными, неоднозначными терминами, особенно task . « задание » часто означает набор процессов, тогда как « задание » может означать процесс, поток, процесс или поток или, определенно, единицу работы сделано процессом или потоком.

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

Термин « работа » традиционно означает «часть работы» (в отличие от «занятия») и используется как таковой на производстве в фразе « работа на производстве * 1063». * », Что означает« производство на заказ », где оно противопоставляется серийное производство (много изделий одновременно, по одному шагу за раз) и поточное производство (много изделий одновременно, все шаги по пункту). Обратите внимание, что эти различия стали размытыми в вычислениях, особенно в оксюмороновом термине « пакетное задание ».

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

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

Традиционные задания (и партии) имеют ограниченные входные данные и должны завершить процесс.нг, успешно или нет. Напротив, при запуске сервера, такого как веб-сервер, ввод, такой как поток запросов, является неограниченным (формально codata). Это аналогично потоковому производству, и процесс (или «задание») никогда не завершается, хотя его можно прекратить или «отменить». В заключении «работа сервера никогда не выполняется» (формально, статус выхода будет ОТМЕНЕН, а не ЗАВЕРШЕН / УСПЕХ).

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

Формально « многозадачность » означает «одновременное выполнение нескольких задач», но на практике это означает, что операционная система (или виртуальная машина, или среда выполнения, или отдельный процесс) «выполняет несколько процессов / потоков одновременно».

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

Как вы можете видеть из этого последнего примера, часто бывает полезно отличать задачи от потоков или процессов, и в определенных контекстах «работа» и «задача» имеют определенные значения, хотя в целом они неоднозначны.

Таким образом, яснее всего избегать использования «задания» или «задачи» и вместо этого ссылаться на «набор процессов», «процесс» или «поток», а для серверов обращаться к запросам ( или запросы ), а не задачи .

15 голосов
/ 19 июня 2010

Их все можно считать одним и тем же, действительно зависит от контекста. Хотя процесс обычно является изолированным объектом, управляемым операционной системой. Работа - это скорее термин уровня приложения или просто какой-то сценарий, который выполняется для выполнения определенного набора задач. Задача часто является частью работы - иногда единственной частью.

9 голосов
/ 15 мая 2011

Работа - это единица работы, которая была отправлена ​​пользователем. Обычно это связано с периодическими системами. Пакетным заданием может быть запрос на запуск нескольких программ подряд [стр. 144]. Однако можно предположить, что задание - это запрос на запуск одной программы. Следовательно, в зависимости от контекста, задание может быть программой (мы обычно предполагаем это) или набором программ (например, пакетными системами) [стр. 8].

Процесс - это активный объект, для выполнения которого требуется набор ресурсов, в том числе процессор и специальные регистры. Это единственный экземпляр исполняемой программы. Отсюда вы можете увидеть связь между процессом и программой, а значит, и работой.

Ядро Linux внутренне представляет процессы как задачи [pg 742].

Источник : Современные операционные системы (3-е издание) от Tanenbaum, опубликовано Pearson Education, Inc, 2009

2 голосов
/ 11 июня 2012

Задача представляет выполнение одного процесса или нескольких процессов на вычислительном узле.Набор задач, который используется для выполнения вычислений, называется заданием.Задания используются для резервирования ресурсов, необходимых для задач.

источник: задания и задачи http://msdn.microsoft.com/en-us/library/bb525214%28v=vs.85%29.aspx

0 голосов
/ 30 июля 2018

Ну ... Это может быть не так ясно, как описано здесь.Это вполне может зависеть от операционной системы, с которой кто-то имеет дело.

Например, при компиляции ядра DIGITAL Equipment OSF1 (также известного как TruUnix64) - когда этот Unix еще существовалКонец девяностых, начало века - термин TASK был посвящен числу параллельных задач, которые ядро ​​могло выполнить.Это был фиксированный массив из задач , которые ядро ​​могло выполнять в данный момент.Таким образом, это была сумма процессов, которые он мог spawn, а также внутренних задач, которые он должен выполнять, даже если он не воспринимался как процессы ps.Тогда было очень низкое количество действий, разрешенных ядру на каждом узле NUMA , а не что-то доступное вне ядра.

С другой стороны, предыдущая операционная система, такая как DEC VMS был известен тем, что в качестве задания (в интерактивном режиме вошел в систему под job) базовый модуль ОС выполнял, возможно, (в зависимости от параметров системы и учетной записи, а также привилегий) множество процессов одновременно.image (исполняемый файл) затем занимал process и (большую часть времени) несколько потоков (ОС сама позаботилась о многопоточности).

Итак, работа былане связано с приложением, но действительно связано с ОС.

Примерно так же Windows , которая изначально не поддерживает fork() в качестве облегченного создателя процесса, имеет тенденцию создавать процессы (используяspawn - CreateProcess - примитив, который очень похож на тот, который существовал на VMS / OpenVMS 40 лет назад), который тяжелее, чем Unix.Здесь мы имеем одно и то же слово ( process ), чтобы описать (с точки зрения ОС) две совершенно разные реальности: процесс Windows, как правило, ближе к заданию VMS, чем настоящий процесс Unix.

Поскольку я не конфигурировал / не собирал ядро ​​Unix начиная с TrueUnix64, я не могу обсуждать параметр ядра TASK ОС Debian или Linux, если таковой имеется.Может быть интересно, что кто-то со внутренним знанием предела tasks таких ОС может объяснить нам эту концепцию в этих системах далее.

В заключение: task, process, job, spawn, fork, thread ... чем больше вы копаетесь в разных ОС, тем больше у вас вариантов и возможных противоречивых определений.

Жиль
[не носитель английского языка, простите мой английский].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...