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

Я не вижу ничего, кроме for (var key in foo).

1454
задан too honest for this site 11 February 2018 в 15:25
поделиться

7 ответов

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

я не уверен, к каким "аппаратным средствам" по сравнению с потоками "программного обеспечения" Вы могли бы обращаться. Потоки являются функцией операционной среды, а не функцией CPU (хотя ЦП обычно начинает операции, которые делают потоки эффективными).

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

1324
ответ дан p1100i 11 February 2018 в 15:25
поделиться

И потоки и процессы являются атомарными единицами распределения ресурсов ОС (т.е. существует модель параллелизма описание, как процессорное время разделено между ними и моделью владения другими ресурсами ОС). Существует различие в:

  • Совместно используемые ресурсы (потоки совместно используют память по определению, они не владеют ничем кроме стека и локальных переменных; процессы могли также совместно использовать память, но существует отдельный механизм, для которого, сохраняемый ОС)
  • пространство Выделения (пространство ядра для процессов по сравнению с пространством пользователя для потоков)

Greg Hewgill выше был корректен о значении Erlang слова "процесс", и здесь существует обсуждение того, почему Erlang мог сделать легкий вес процессов.

12
ответ дан Sergey Mikhanov 11 February 2018 в 15:25
поделиться

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

24
ответ дан Gerald 11 February 2018 в 15:25
поделиться

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

Украденный от здесь .

48
ответ дан Node 11 February 2018 в 15:25
поделиться

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

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

<час>

Найденный этим на MSDN здесь:
О Процессах и Потоках

Microsoft Windows поддерживает вытесняющую многозадачность, которая создает эффект одновременного выполнения нескольких потоков от нескольких процессов. На многопроцессорном компьютере система может одновременно выполнить столько же потоков, сколько существуют процессоры на компьютере.

736
ответ дан Scott Langham 11 February 2018 в 15:25
поделиться

Процесс:

  • Выполняемый экземпляр программы называется процессом.
  • В некоторых операционных системах термин «задача» используется для обозначения выполняемой программы.
  • Процесс всегда хранится в основной памяти, также называемой первичной памятью или оперативной памятью.
  • Таким образом, процесс называется активным объектом. Он исчезает при перезагрузке машины.
  • Несколько процессов могут быть связаны с одной и той же программой.
  • В многопроцессорной системе несколько процессов могут выполняться параллельно.
  • В однопроцессорной системе, хотя истинный параллелизм не достигается, применяется алгоритм планирования процессов, и процессор планирует выполнять каждый процесс по одному, создавая иллюзию параллелизма.
  • Пример: Выполнение нескольких экземпляров программы «Калькулятор». Каждый из экземпляров называется процессом.

Поток:

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

Я позаимствовал приведенную выше информацию из Квеста Знаний! блог .

292
ответ дан 22 November 2019 в 20:15
поделиться

Процесс - Программа в выполнении

Поток - поток является выполнением самой маленькой последовательности запрограммированных инструкций

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

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

В Обоих результат случаев будет тем же.

0
ответ дан 22 November 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: