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

6.3. Распределенная служба имен

В случае если служба имен хранит большое количество записей процедура поиска в ней, с учетом большого количества обращений к службе, может занимать достаточно длительный промежуток времени. Так как в процессе работы любой распределенный компонент достаточно часто долен взаимодействовать с другими компонентами, следовательно и обращаться к службе имен он будет часто. По этой причине служба имен может стать «узким» местом всей РПС. Любые задержки службы будут приводить к задержкам работы в РПС.

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

Хорошим примером распределения службы имен является система доменных имен Интернета (DNS). Пространство DNS-имен организовано иерархически, в виде дерева доменов (domains), которые разбиты на неперекрывающиеся зоны (zones), как показано на рис. 6.2. Имена каждой зоны обрабатываются одним сервером имен. Каждое доменное имя является именем хоста в Интернете и ассоциируется с сетевым адресом этого хоста. В основном интерпретация имени означает получение сетевого адреса соответствующего хоста. Рассмотрим, к примеру, имя nl.vu.cs.flits. Для интерпретации этого имени оно сначала передается на сервер зоны Z1 (рис. 6.2), который возвращает адрес сервера зоны Z2, который, вероятно, сможет обработать остаток имени, vu.cs.flits. Сервер зоны Z2 вернет адрес сервера зоны Z3, который способен обработать последнюю часть имени и вернуть адрес соответствующего хоста.

Рис. 6.2. Пример разделения пространства DNS-имен на зоны

Эти примеры демонстрируют, как служба именования, предоставляемая DNS, распределена по нескольким машинам и как это позволяет избежать обработки всех запросов на интерпретацию имен одним сервером.

Тема .7 Синхронизация

7.1. Задачи синхронизации

При создании РПС решающих общие задачи и состоящих из распределенных компонентов встает важная проблема их синхронизации. При этом синхронизации подлежат различные аспекты работы РПС.

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

Взаимодействие. Синхронное взаимодействие (которое требует блокировки работы компонента до получения ответа) нескольких компонентов требует согласования для избегания взаимоблокировки и «зависания» работы.

Время. Распределенные компоненты работающие на разных компьютерах используют локальное системное время, которое часто может быть несинхронизированое. Следствием этого является, то что для разных компонентов понятие «раньше» и «позже» может не совпадать

7.2. Синхронизация доступа к данным

7.2.1. Гонки

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

Ситуация при которой несколько задач одновременно попытаются изменить некоторую общую область данных, а конечное значение данных при этом зависит от того, какая задача обратится к этой области первой называется гонкой (race condition).

Когда процесс обращается к разделяемым данным, говорят, что он находится в своем критическом участке.

Для решения задачи синхронизации необходимо, в случае если один процесс находится в критическом участке, исключить возможность вхождения для других процессов в их критические участки, т.е. блокировать их выполнение. Когда процесс выходит из своего критического участка, то одному из остальных процессов, ожидающих входа в свои критические участки, должно быть разрешено продолжить работу (разблокирование процесса).

Процессы должны как можно быстрее проходить свои критические участки и не должны в этот период блокироваться.

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

Для синхронизации обращения процессов к общим ресурсам используют семафоры и мониторыю..