Подтвердить что ты не робот

Работа, задача и процесс, какая разница

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

4b9b3361

Ответ 1

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

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

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

Работа и задача сегодня расплывчаты, неоднозначны, особенно задача. А " работа " часто означает набор процессов, в то время как " задача " может означать процесс, нить, процесс или нить, или, отчетливо, единицу работы, проделанный с помощью процесса или потока.

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

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

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

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

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

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

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

Таким образом, эта работа не была связана с приложением, а была связана с ОС.

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

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

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

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

Ответ 6

Работа была RSTS/E, Задача была RSX/11M, Процесс был VMS... это было так же ясно, как грязь для нас old_Deccies, а?