Основы многопоточного и распределенного программирования

Модели взаимодействия процессов


_______________________________Глава 9

Модели взаимодействия процессов

Как уже отмечалось, существуют три основные схемы взаимодействия процессов: произво­дитель-потребитель, клиент-сервер и взаимодействующие равные. В главе 7 было показано, как их программировать с помощью передачи сообщений, в главе 8 — с помощью RPC и рандеву.

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

•     управляющий-рабочие, представляющая собой распределенную реализацию порт­феля задач;

•     алгоритмы пульсации, в которых процессы периодически обмениваются информаци­ей, используя передачу, а затем прием сообщений;

•     конвейерные алгоритмы, пересылающие информацию от одного процесса к другому с помощью приема, а затем передачи;

•     зонды (посылки) и эхо (приемы), которые рассылают и собирают информацию в де­ревьях и графах;

•     алгоритмы рассылки, используемые для децентрализованного принятия решений;

•     алгоритмы передачи маркера — еще один способ децентрализованного принятия решений;

•    дублируемые серверные процессы, которые управляют несколькими экземплярами такого ресурса, как файл.

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



Содержание раздела