#c #operating-system #cpu #multiprocessing #distributed-computing
#c #операционная система #процессор #многопроцессорная обработка #распределенные вычисления
Вопрос:
Являются ли распределенные системы полностью независимой концепцией по сравнению с симметричной многопроцессорной обработкой (поскольку в распределенной у нас есть отдельная память / дисковое хранилище на процессор, тогда как в симметричной у нас много процессоров, использующих одну и ту же память / дисковое хранилище)?
Ответ №1:
Я бы не сказал, что это совершенно разные концепции, потому что вы можете получить общую память в распределенных системах (используя распределенную общую память), а несколько процессов, запущенных на одном компьютере, не разделяют их адресное пространство. Таким образом, обе среды могут существовать на обеих архитектурах, но со стоимостью. В общем, разделяемую память легче программировать, но сложнее создавать (с аппаратной точки зрения), а распределенные системы сложнее программировать, но проще создавать.
Итак, разные концепции — это фактически разделяемая память и не разделяемая память, по крайней мере, с точки зрения программирования.
Ответ №2:
Распределенные вычисления и SMP — это не одно и то же, хотя DC может использовать SMP. DC — это способ распараллеливания независимых данных рабочей нагрузки на разнородные и слабо связанные разные системы.
SMP-система — это машина с тесно связанными процессорами и памятью, которая обеспечивает доступ к памяти с низкой задержкой и совместное использование данных между процессорами во время выполнения вычислений.
Пример для распределенных вычислений:
Einstein @Home — это проект, пытающийся найти гравитационные волны по экспериментальным данным, собранным с огромных лазерных интерферометров. Обрабатываемые данные довольно независимы, поэтому распределение данных по нескольким разным машинам не является проблемой.
- Хранилище: совместное хранилище не требуется.
- Разделяемая память: не требуется, поскольку процедуры БПФ, используемые для поиска желаемых результатов, работают с независимыми блоками данных.
- Распределение рабочей нагрузки: выполняется через пул разнородных машин.
Пример для симметричной многопроцессорной обработки:
для выполнения вычислений на больших таблицах / матрицах требуется определенная близость вычислительных узлов («процессоров» / «DC-узлов»), чтобы иметь возможность завершить вычисления. Если результат вычисления зависит от результата «соседнего» узла, парадигма распределенных вычислений вам не очень поможет.
- Хранилище: должно быть общим и доступным как можно быстрее
- Разделяемая память: необходима для обмена промежуточными результатами
- Распределение рабочей нагрузки: выполняется в составе цикла for; программист должен позаботиться о том, чтобы спроектировать свои циклы таким образом, чтобы связанные вычисления выполнялись почти одновременно
Надеюсь, это поможет… Алекс.