Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_Svoystva_i_klassifikatsia_protsessov.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
236.54 Кб
Скачать

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

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

П1 <=> П2

| |

ЛП1 ЛП2

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

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

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

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

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

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

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

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

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

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

Канал

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

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 получатель и несколько отправителей используется порт.

  1. Распределенное программирование. Фильтры и сети

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

Пример на процесс сортировки

process Sort{

получает все числа из канала input отсортирует числа

отрыв. Все числа в канале output}

Сортирующая суть

Для сортировки больших массивов данных используется сортировка слияния

  • мас. На части

  • кажд. Часть сортировки одельно

  • запись объеденяется части

Приемущества: сортировка на каждом уровне осуществляется паралельно.

Процесс — фильтр слияния

chan in1(int), in2(int), out(int);

Совокупность фильтров и каналов образующих сорт. Сеть. Для построения можно использовать как статические каналы. Так и динамически-определяемые.

Во 2 случае необходимо выделить специальный процесс (главный), который динамически создает кол-во входных каналов и распределяет их между элементами сети.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]