Симметричная многопроцессорная обработка и распределенные системы?

#c #operating-system #cpu #multiprocessing #distributed-computing

#c #операционная система #процессор #многопроцессорная обработка #распределенные вычисления

Вопрос:

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

Ответ №1:

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

Итак, разные концепции — это фактически разделяемая память и не разделяемая память, по крайней мере, с точки зрения программирования.

Ответ №2:

Распределенные вычисления и SMP — это не одно и то же, хотя DC может использовать SMP. DC — это способ распараллеливания независимых данных рабочей нагрузки на разнородные и слабо связанные разные системы.

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

Пример для распределенных вычислений:
Einstein @Home — это проект, пытающийся найти гравитационные волны по экспериментальным данным, собранным с огромных лазерных интерферометров. Обрабатываемые данные довольно независимы, поэтому распределение данных по нескольким разным машинам не является проблемой.

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

Пример для симметричной многопроцессорной обработки:
для выполнения вычислений на больших таблицах / матрицах требуется определенная близость вычислительных узлов («процессоров» / «DC-узлов»), чтобы иметь возможность завершить вычисления. Если результат вычисления зависит от результата «соседнего» узла, парадигма распределенных вычислений вам не очень поможет.

  • Хранилище: должно быть общим и доступным как можно быстрее
  • Разделяемая память: необходима для обмена промежуточными результатами
  • Распределение рабочей нагрузки: выполняется в составе цикла for; программист должен позаботиться о том, чтобы спроектировать свои циклы таким образом, чтобы связанные вычисления выполнялись почти одновременно

Надеюсь, это поможет… Алекс.