Организация ЭВМ и систем: Курс лекций (Позиционные системы счисления. Процессоры семейства IA-32. Лазерные принтеры), страница 48

—  pvm_recv, которая блокирует получателя до прихода подходящего сообщения;

—  pvm_trecv, которая блокирует получателя до прихода подходящего сообщения, но не долее, чем на заданное время;

—  pvm_nrecv, которая не блокирует получателя, а возвращает пришедшее сообщение или сообщение об отсутствии такового.

Кроме того, PVM поддерживает широковещание и мультивещание.

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

Существуют и другие процедуры.

Реализации PVM — небольшие и простые в использовании пакеты, наличные в большинстве вычислительных систем, в том числе в ОС UNIX и Microsoft Windows.

15.5.6. Message Passing Interface

Эта технология гораздо сложнее, чем PVM. Первая версия, MPI-1, существует уже не первое десятилетие.

MPI, в отличие от PVM, не связана с созданием процессов и управлением ими. Создаёт процессы пользователь сам с помощью локальных системных вызовов. После создания процессы организуются в группы, состав которых изменяться не может. Именно с этими группами и работает MPI.

В основе MPI лежат четыре понятия:

—  коммуникаторы,

—  типы передаваемых данных,

—  операции коммуникации,

—  виртуальные топологии.

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

Типы передаваемых данных могут быть стандартные, а могут быть образованы пользователем из уже существующих.

Операций коммуникаций существует множество. Операций отправки сообщения существует восемь видов:

—  синхронный: отправитель не может начать передачу данных, пока получатель не вызовет функцию MPI_Recv;

—  с буферизацией;

—  стандартный: зависит от реализации;

—  с проверкой доступности получателя, но без ожидания вызова им процедуры получения.

Четыре перечисленных вида могут быть блокирующими или неблокирующими, что всего даёт восемь видов.

Получение бывает двух видов: блокирующее и неблокирующее.

Кроме того, MPI поддерживает коллективную коммуникацию — широковещание, распределение и сбор данных, обмен данными, барьер и так далее.

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

В 1997 году появилась MPI-2. Существенным её отличием является возможность добавлять процессы в группу и удалять их из неё. Имеется ряд других усовершенствований.

Между лагерями PVM и MPI идёт война. PVM проще в изучении и использовании. MPI мощнее и официально стандартизирована.

15.6.  Обобщение памяти на уровне программного обеспечения

Одна из распространённых систем обобщения памяти на уровне программного обеспечения — Distributed Shared Memory, DSM.

Единицей хранения данных в этой системе является страница. Дублирование страниц запрещается.

Когда процессор обращается к странице, находящейся в ОЗУ его узла, чтение и запись происходит без задержки. Если процессу понадобились данные из страницы, хранящейся в ОЗУ другого узла, происходит ошибка из-за отсутствия страницы. Ошибку обрабатывает ОС, которая посылает сообщение в узел, имеющий требуемую страницу, чтобы тот отправил её в узел, которому она нужна. После размещения требуемой страницы в памяти последнего узла, выполнение приостановленного процесса продолжается. Из памяти другого узла страница удаляется.

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