Языки программирования - концепции и принципы

биваются на параллельные компоненты, которые


Программы раз­ биваются на параллельные компоненты, которые выполняются на разных компьютерах. Модель с разделяемой памятью уже не годится; проблема син­хронизации и связи переносится на синхронную передачу сообщений (syn­chronous message passing), изображенную на рис. 12.2. В этой модели канал связи с может существовать между любыми двумя процессами. Когда один процесс посылает сообщение m в канал, он приостанавливается до тех пор, пока другой процесс не будет готов его получить. Симметрично, процесс, ко­торый ожидает получения сообщения, приостанавливается, пока посылаю­щий процесс не готов послать. Эта приостановка используется для синхро­низации процессов.

   Синхронная модель параллелизма может быть реализована в самом языке программирования или в виде услуги операционной системы: потоки (pipes),



гнезда (sockets) и т.д. Модели отличаются способами, которыми процессы адресуют друг друга, и способом передачи сообщений. Далее мы опишем три языка, в которых методы реализации синхронного параллелизма сущест­венно различны.

12.6. Язык параллельного программирования оссаm

 

Модель синхронных сообщений была первоначально разработана Хоаром (С. A. R. Ноаге) в формализме, называющемся CSP (Communicating Sequential Processes — Взаимодействующие последовательные процессы). На практике он реализован в языке оссат, который был разработан для про­граммирования транспьютеров — аппаратной многопроцессорной архитек­туры для распределенной обработки данных.

   В языке оссаm адресация фиксирована, и передача сообщений односто­ронняя, как показано на рисунке 12.2. Канал имеет имя и может использо­ваться только для отправки сообщения из одного процесса и получения его в другом:

CHAN OF INT с :

PAR

   INT m:

   SEQ

                                       -- Создается целочисленное значение m

   с! m

  INT v:

SEQ

    c? v

                                        -- Используется целочисленное значение в v


Содержание  Назад  Вперед