logo
ЯП / ЯП / ЯП экзамен

Параллельная обработка данных и параллелизм. Параллельное и распределенное программирование.

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

Параллельное программирование.

Два события называют одновременными, если они происходят во время одного и того же временного интервала, при этом говорят, что они выполняются параллельно.

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

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

Два основных подхода в достижении параллельности.

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

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

Распределенное программирование

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

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