
- •Распределённые алгоритмы План
- •1. Распределенные системы. Архитектура и функционирование
- •1.1. Поддержка Языка
- •Параллелизм.
- •2. Распределенные Алгоритмы
- •Распределенные алгоритмы против Централизованных алгоритмов
- •Пример: Связь с одиночным сообщением
- •3. Балансировка нагрузки в распределенных системах
- •Выборы координатора
- •4.7. Механизмы обеспечения синхронизации
- •Низкоуровневые средства синхронизации
- •4.8. Атомарные транзакции
- •4.8.2. Двухфазный протокол утверждения
- •5. Тупики в распределенных системах
РИС Л.11. гр.445. (11.11.15)
Распределённые алгоритмы План
1. Распределенные системы. Архитектура и функционирование………………..2
1.1. Поддержка Языка……………………………………………………………….2
2. Распределенные Алгоритмы……………………………………………………..6
3. Балансировка нагрузки в распределенных системах…………………………..19
4. Синхронизация в распределенных системах………………………….20
4.1. Алгоритм синхронизации логических часов…………………………….21
4.2. Алгоритмы взаимного исключения……………………………………..24
4.3. Централизованный алгоритм…………………………………………….25
4.4. Распределенный алгоритм………………………………………………….25
4.5.Алгоритм Token Ring…………………………………………………………26
4.6.Неделимые транзакции……………………………………………………….29
4.7. Механизмы обеспечения синхронизации…………………………………..31
4.8. Атомарные транзакции……………………………………………………..32
4.8.1. Реализация и свойства транзакций…………………………………33
4.8.2. Двухфазный протокол утверждения………………………………….……35
5. Тупики в распределенных системах…………………………………………..37
1. Распределенные системы. Архитектура и функционирование
На предыдущих лекциях мы рассмотрели различные типы распределенных систем, причины и преимущества их использования.
Одной из главных задач понимания принципов функционирования РИС – это определить как работают распределенные алгоритмы в этих системах.
Конечно, целиком структуру и функционирование распределенной системы нельзя полностью понять изучением только алгоритмов самих по себе. Чтобы понять такую систему полностью нужно также изучить ее архитектуру и программное обеспечение, то есть, разбиение цельной функциональности по модулям.
Также, важное значение имеет изучение вопросов, относящихся к свойствам языков программирования, используемых для разработки программного обеспечения распределенных систем. Но эти вопросы требуют самостоятельного изучения.
1.1. Поддержка Языка
Реализация одного из программных уровней сети связей РИС или распределенной прикладной программы требует, чтобы распределенный алгоритм, используемый в том или ином уровне или прикладной программе был кодирован на языке программирования. На фактическое кодирование высоко влияет язык и особенно примитивы, которые он предлагает.
В этом курсе лекций рассматриваются алгоритмы а не их принцип кодирования как программы. Поэтому мы будем рассматривать базисную модель процессов, основанную на состояниях процессов и переходах из этих состояний, а не на выполнении команд, принимаемых из предписанного набора.
Конечно, неизбежно, чтобы там, где мы представляем алгоритмы, требуется некоторая формальная запись программирования.
В этой лекции будут описаны некоторые из конструкций, которые можно наблюдать в фактических языках программирования, разработанных для распределенных систем. Мы ограничиваемся здесь кратким описанием этих конструкций;
Для большего количества деталей и примеров фактических языков, которые используют различные конструкции, язык для программирования распределенных прикладных программ, должен обеспечить средства, чтобы выразить параллелизм, обработку взаимодействий, и недетерминизм.
Параллелизм требуется для программирования различных узлов системы способом, которым узлы выполняют свою часть программы одновременно.
Связь (взаимодействие) между узлами должна также быть поддержана в соответствии с языком программирования.
Недетерминизм необходим, потому что узел должен иногда быть способен получить сообщение от различных узлов, или быть способным либо посылать, либо получать сообщение.