Задача против процесса, есть ли разница? - PullRequest
15 голосов
/ 01 апреля 2010

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

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

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

Ответы [ 6 ]

14 голосов
/ 01 апреля 2010

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

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

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

5 голосов
/ 01 апреля 2010

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

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

2 голосов
/ 20 января 2015

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

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

1 голос
/ 07 декабря 2011

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

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

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

0 голосов
/ 01 апреля 2010

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

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

0 голосов
/ 01 апреля 2010

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

В Ada задача - это конструкция на языке программирования для обеспечения параллелизма.

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

...