Многопроцессорность против многопоточности заблуждение? - PullRequest
0 голосов
/ 03 февраля 2020

Насколько я понимаю, многопоточность подразумевает под одним процессом, несколько потоков, которые содержат инструкции, регистры, стек и т. Д. c, 1, работают одновременно на одноядерном процессоре с центральным процессором 2, параллельно на многоядерном процессоре (просто например, 10 потоков на 10-ядерном процессоре)

А многопроцессорность, как я думал, означает, что разные процессы выполняются параллельно на многоядерном процессоре.

И сегодня, прочитав статью, я подумал, что я неправильно или статья не так.

https://medium.com/better-programming/is-node-js-really-single-threaded-7ea59bcc8d64

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

Разве это не то же самое, что многопоточный процесс, который выполняется на многоядерном процессоре? ??

Что я пропустил? или, может быть, я не совсем понимаю многопроцессорность.

1 Ответ

1 голос
/ 03 февраля 2020

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...