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

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

П1 <=> П2

| |

ЛП1 ЛП2

В распределенных системах для построения механизмов синхронизации вместо разделяемых переменных используются средства передачи сообщений. Для поддержки механизма обмена сообщениями узлы распределённой системы «соединяются» с помощью специальных аппаратно-программных средств, называемых каналами. Каналы бывают разные...;)

Передача сообщений:

Обмен сообщениями может быть осуществлён в 2 режимах: синхронная передача сообщений и асинхронная передача сообщений.

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

При асинхронной передаче такое подтверждение не требуется.

Соответственно для отправки сообщения используется примитив SEND, для получения сообщения RECIEVE.

SEND — поддерживает асинхронный режим передачи и является неблокирующим примитивом. Для синхронной передачи применяется SYNCH_SEND.

При блокировке — приостановка процесса.

Сообщения в общем случае состоят из служебного заголовка и порции данных. В случае пустого сообщения можно провести аналогию с семафорными механизмами синхронизации.

Каналы и передача сообщений

Канал

Для описания каналов используется следующая нотация:

chan ch(type1id1,...,typeNidN)

В скобках описываем имена полей и их типы

chan input(char)

chan disk_a(int cyl, int block, int count, char* buf)

chan result[n](int)

Процесс управляет сигналами используя send ch (expr1,...,expr n) //поле сообщ.

Recieve ch (var1,...,varn)

empty(ch)

Так как recieve является блокир. Вводится режим проверки в случае если сообщение в канале отсутствует.

Каналы являются глобальными для всех процессов, тоесть канал можнт и читать и писать данные в V канал.

Если канал используется как для передачи так и отправления сообщения его называют почтовым ящиком. Если у канала 1 получатель и несколько отправителей используется порт.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: