В чем разница между потоком / процессом / задачей? - PullRequest
33 голосов
/ 15 июня 2010

В чем разница между потоком / процессом / задачей?

Ответы [ 6 ]

44 голосов
/ 16 июня 2010

Процесс:

Процесс - это экземпляр выполняемой компьютерной программы. Содержит код программы и текущую активность. В зависимости от операционной системы (ОС) процесс может состоять из нескольких потоков выполнения, которые выполняют инструкции одновременно. Многозадачность на основе процессов позволяет запускать компилятор Java одновременно с использованием текстового редактора. При использовании нескольких процессов с одним ЦП используется контекстное переключение между различными контекстами памяти. Каждый процесс имеет полный набор своих переменных.

Тема:

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

Задача:

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

7 голосов
/ 20 мая 2014

Чтобы объяснить на более простых условиях

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

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

Задача : Задача не является широко используемой концепцией во всем мире. когда инструкция программы загружается в память, люди называют процесс или задачу. Задача и Процесс в настоящее время являются синонимами.

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

Краткий ответ:

Поток - это концепция планирования, это то, что ЦП фактически «выполняет» (вы не запускаете процесс).Для процесса требуется как минимум один поток, который выполняет ЦП / ОС.

Процесс - это концепция организации данных.Ресурсы (например, память для хранения состояния, разрешенное адресное пространство и т. Д.) Выделяются для процесса.

5 голосов
/ 11 февраля 2018

A process вызывает или запускает программу.Это экземпляр программы, которая может быть несколько и запускать одно и то же приложение.thread - это наименьшая единица выполнения, которая находится в процессе.Процесс может иметь несколько работающих потоков.Выполнение потока приводит к выполнению задачи.Следовательно, в многопоточной среде имеет место многопоточность.

A program в исполнении называется process.Программа может иметь любое количество процессов.Каждый процесс имеет свое собственное адресное пространство.

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

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

Для получения дополнительной информации см. Ссылку: http://www.careerride.com/os-thread-process-and-task.aspx

2 голосов
/ 20 ноября 2013

из вики ясное объяснение

1: 1 (многопоточность на уровне ядра)

Потоки, созданные пользователем, находятся в 1-1 соответствии с планируемыми объектами в ядре. [3] Это простейшая возможная реализация потоков. Win32 использовал этот подход с самого начала. В Linux обычная библиотека C реализует этот подход (через NPTL или более старые LinuxThreads). Такой же подход используется в Solaris, NetBSD и FreeBSD.

N: 1 (многопоточность на уровне пользователя)

Модель N: 1 подразумевает, что все потоки уровня приложения отображаются на один запланированный объект уровня ядра; [3] ядро ​​не знает о потоках приложения. При таком подходе переключение контекста может быть выполнено очень быстро и, кроме того, оно может быть реализовано даже на простых ядрах, которые не поддерживают многопоточность. Однако один из основных недостатков заключается в том, что он не может выиграть от аппаратного ускорения на многопоточных процессорах или многопроцессорных компьютерах: никогда не запланировано более одного потока одновременно. [3] Например: если одному из потоков необходимо выполнить запрос ввода-вывода, весь процесс блокируется, и преимущество использования потоков невозможно. В переносимых потоках GNU используются потоки на уровне пользователя, а также потоки состояний.

M: N (гибридная резьба)

M: N отображает некоторое количество M потоков приложений на некоторое число N объектов ядра, [3] или «виртуальных процессоров». Это компромисс между потоками на уровне ядра («1: 1») и на уровне пользователя («N: 1»). В общем случае системы потоков «M: N» более сложны для реализации, чем потоки ядра или пользователя, поскольку требуются изменения как ядра, так и кода пользовательского пространства. В реализации M: N библиотека потоков отвечает за планирование пользовательских потоков на доступных планируемых объектах; это делает переключение контекста потоков очень быстрым, поскольку позволяет избежать системных вызовов. Однако это увеличивает сложность и вероятность инверсии приоритетов, а также неоптимального планирования без обширной (и дорогостоящей) координации между планировщиком пользовательского пространства и планировщиком ядра.

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

Википедия довольно красиво подводит итог:

Темы по сравнению с процессами

Потоки отличаются от традиционных процессов многозадачной операционной системы тем, что:

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

Такие системы, как Windows NT и OS / 2, имеют «дешевые» потоки и «дорогие» процессы; в других операционных системах разница не так велика, за исключением стоимости коммутатора адресного пространства, которая подразумевает сброс TLB.

Задача и процесс используются как синонимы.

...