
- •1 Свойства и классификация процессов
- •2. Управление процессами в ос. Граф существования и трасса процесса
- •3. С войства и классификация ресурсов. Критический ресурс.
- •4. Свойства и классификация ресурсов. Потребляемые и восстанавливаемые ресурсы
- •5. Типовые задачи синхронизации. Взаимное исключение
- •6. Типовые задачи синхронизации. Производитель-потребитель
- •7. Типовые задачи синхронизации. Читатели и писатели
- •8. Типовые задачи синхронизации. Обедающие философы
- •9. Механизмы синхронизации. Свойства и классификация
- •10. Механизмы синхронизации. Использование механизма прерываний
- •11. Механизмы синхронизации. Двухступенчатая схема
- •12. Механизмы синхронизации. Семафоры Дейкстры
- •13. Механизмы синхронизации. Решение задачи реактивации
- •14. Механизмы синхронизации. Модификации семафоров
- •15. Механизмы синхронизации. Семафороподобные средства
- •16. Организация и управление подпроцесами в Java
- •17. Решение задачи взаимного исключения в Java
- •18. Событийные переменные в java.
- •19. Семафоры в java.
- •20. Организация подзадач в Win
- •21. Организация подзадач в Win32. Класс tThread
- •22. Механизмы синхронизации Win32. Мьютексы
- •23. Механизмы синхронизации Win32. События
- •24. Механизмы синхронизации Win32. Семафоры
- •25. Монитороподобные средства синхронизации. Критическая область.
- •26. Критическая область. Основные модификации
- •27. Мониторы Хоара
- •28. Распределенное программирование. Основные понятия
- •Каналы и передача сообщений
- •Распределенное программирование. Фильтры и сети
- •Распределенное программирование. Схемы взаимодействия
- •Распределенное программирование. Сети и сокеты.
28. Распределенное программирование. Основные понятия
Распределенные системы обладают принципиальными отличиями от систем, использующих общую память. Если для локального взаимодействия процессы имеют возможность непосредственно обратиться к разделяемой памяти, как следствие имеет возможность использовать соответствующие механизмы синхронизации, основанные на разделяемых переменных, в распределенных системах каждый процесс использует свою собственную локальную память.
П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 получатель и несколько отправителей используется порт.
Распределенное программирование. Фильтры и сети
Фильтр — процесс который получает сообщение из одного или нескольких входных каналов и отправляет сообщение в 1 или несколько входных каналов и отправляет сообщение в 1 или несколько выходных каналов. Выход фильтра является функцией от его входа и текущего состояния.
Пример на процесс сортировки
process Sort{
получает все числа из канала input отсортирует числа
отрыв. Все числа в канале output}
Сортирующая суть
Для сортировки больших массивов данных используется сортировка слияния
мас. На части
кажд. Часть сортировки одельно
запись объеденяется части
Приемущества: сортировка на каждом уровне осуществляется паралельно.
Процесс — фильтр слияния
chan in1(int), in2(int), out(int);
Совокупность фильтров и каналов образующих сорт. Сеть. Для построения можно использовать как статические каналы. Так и динамически-определяемые.
Во 2 случае необходимо выделить специальный процесс (главный), который динамически создает кол-во входных каналов и распределяет их между элементами сети.