Задача против процесса, есть ли какая-то разница?

Я изучаю свои выпускные экзамены в моей основной группе по тематическим распределенным системам и операционным системам.

Мне нужно хорошее определение терминов task, process и threads. До сих пор я уверен, что процесс представляет собой представление запущенной (или приостановленной, но инициированной) программы со своей собственной памятью, счетчиком программ, регистрами, стеком и т.д. (Блок управления процессом). Процессы могут запускать потоки, которые обмениваются памятью, так что связь через общую память возможна в отличие от процессов, которые должны взаимодействовать через IPC.

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

Ответы

Ответ 1

Процессы и потоки - это механики, задача более концептуальна. Вы можете поставить очередь на работу, чтобы работать асинхронно, например, в Windows с .NET, это запускается в потоке из пула потоков. С помощью OpenMP задача будет частью цикла for, работающего на одном ядре.

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

Ответ 2

Термин "задача" в основном используется в контексте scheduling *, когда он может ссылаться либо на поток, либо на * процесс ***, который можно планировать для запуска на процессоре.
С точки зрения планировщика может существовать небольшая разница между потоком и процессом - оба представляют задачу, которая должна быть запланирована.

В последнее время термин "задача" получает более широкое распространение, особенно среди разработчиков .NET, благодаря, например, Параллельная библиотека задач. Внутри него задачи - это единицы работы, которые можно планировать для потоков из пула рабочих потоков.

*, например, в программировании ядра, особенно. на Linux
** теоретически, вы можете составить свои планируемые сущности

Ответ 3

Я - старая школа. Строго говоря, "обработка" - это работа, выполняемая в памяти, которая не включает операции ввода-вывода. "Задача" - это процесс, который включает операции ввода-вывода. Соответственно, многозадачная система может запускать параллельные потоки ввода-вывода, тогда как система многопроцессорной обработки должна переключать свой I/O. У ПК есть только одна мышь, клавиатура и т.д., Поэтому они не являются многозадачными системами. Я считаю, что мэйнфрейм является многозадачной системой.

Threading - это метод переключения контекста обработки. Позволяет физическому процессору управлять несколькими процессами. Нет прямого отношения к задачам.

Ответ 4

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

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

Задача в память загружается набор инструкций программы

Ответ 5

Это зависит от вашего контекста.

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

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

Ответ 6

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

Вы могли бы также подумать о задаче как пробеге кода. Тогда задача может быть частью потока или части процесса.