- •Введение
- •Раздел 1. Предмет распределенных вычислений
- •1.1. Понятия распределенных вычислений и распределенной системы
- •1.2. Цели построения распределенных систем
- •1.3. Требования к распределенным системам
- •1.3.1. Прозрачность (Transparency)
- •1.3.2. Открытость (Openness)
- •1.3.3. Масштабируемость (Scalability)
- •1.3.4. Сложности разработки распределенных систем
- •1.4. Понятие и назначение программного обеспечения промежуточного уровня
- •1.5. Взаимодействие в распределенных системах
- •1.5.1. Физическое время
- •1.5.2. Синхронные и асинхронные распределенные системы
- •1.5.3. Упорядочивание событий
- •1.5.4. Примитивы взаимодействия
- •1.5.5. Синхронный и асинхронный обмен сообщениями
- •Раздел 2. Модель распределенного вычисления
- •2.1. Модель распределенной системы
- •2.2. Причинно-следственный порядок событий
- •2.3. Эквивалентные выполнения
- •2.4. Конус прошлого и конус будущего для события
- •2.5. Свойства каналов
- •Раздел 3. Логические часы
- •3.1. Общие принципы построения логических часов
- •3.2. Скалярное время Лэмпорта
- •3.2.1 Основные свойства
- •3.2.2 Примеры использования
- •3.3. Векторное время
- •3.3.1 Основные свойства
- •3.3.2 Пример использования
- •3.4. Методы эффективной реализации векторных часов
- •3.4.1 Дифференциальная пересылка векторного времени
- •3.4.2 Часы, фиксирующие прямую зависимость
- •3.4.3 Адаптивный метод Жарда-Жордана
- •3.5. Матричное время
- •3.5.1 Основные свойства
- •Раздел 4. Взаимное исключение в распределенных системах
- •4.1. Общие концепции
- •4.2. Централизованный алгоритм
- •4.3. Алгоритмы на основе получения разрешений
- •4.3.1 Алгоритм Лэмпорта
- •4.3.2 Алгоритм Рикарта-Агравала
- •4.3.3 Алгоритм обедающих философов
- •4.4. Алгоритмы на основе передачи маркера
- •4.4.1 Широковещательный алгоритм Сузуки-Касами
- •4.4.2 Алгоритм Реймонда на основе покрывающего дерева
- •Список литературы
- •Основная литература
- •Дополнительная литература
1.2. Цели построения распределенных систем
За последние несколько лет распределенные системы становились все более популярными и их роль только возрастала. Среди основных причин роста их значимости можно выделить следующие:
Географически распределенная вычислительная среда. Сегодня в большинстве случаев сама вычислительная среда по своей природе представляет собой территориально распределенную систему. В качестве примера можно привести банковскую сеть. Каждый банк обслуживает счета своих клиентов и обрабатывает операции с ними. В случае же перевода денег из одного банка в другой требуется осуществление межбанковской транзакции и взаимодействие систем банков друг с другом. Другим примером географически распределенной вычислительной среды является всем хорошо знакомая сеть Интернет.
Требование увеличения производительности вычислений.
Быстродействие традиционных однопроцессорных систем стремительно приближается к своему пределу. Различные архитектуры (такие как суперскалярная архитектура, матричные и векторные процессоры, однокристальные многопроцессорные системы) призваны увеличивать производительность вычислительных систем за счет различных механизмов параллельного исполнения команд. Однако все эти приемы способны повысить производительность максимум в десятки раз по сравнения с классическими последовательными решениями. Кроме того, масштабируемость подобных подходов оставляет желать лучшего. Чтобы повысить производительность в сотни или тысячи раз и при этом обеспечивать хорошую масштабируемость решения необходимо свести воедино многочисленные процессоры и обеспечить их эффективное взаимодействие. Этот принцип реализуется в виде больших многопроцессорных систем и многомашинных комплексов.
Совместное использование ресурсов. Важной целью создания и использования распределенных систем является предоставление пользователям (и приложениям) доступа к удаленным ресурсам и обеспечение их совместного использования. В данной формулировке термин ресурс относится как к компонентам аппаратного обеспечения вычислительной системы, так и к программным абстракциям, с которыми работает распределенная система. Например, пользователь компьютера 1 может использовать дисковое пространство компьютера 2 для хранения своих файлов. Или приложение А может использовать свободную вычислительную мощность нескольких компьютеров для ускорения собственных расчетов. Распределенные базы данных и распределенные системы объектов могут быть отличным примером совместного использования программных компонентов, когда соответствующие программные абстракции распределены по нескольким компьютерам и
12