
- •Распределённые алгоритмы План
- •1. Распределенные системы. Архитектура и функционирование
- •1.1. Поддержка Языка
- •Параллелизм.
- •2. Распределенные Алгоритмы
- •Распределенные алгоритмы против Централизованных алгоритмов
- •Пример: Связь с одиночным сообщением
- •3. Балансировка нагрузки в распределенных системах
- •Выборы координатора
- •4.7. Механизмы обеспечения синхронизации
- •Низкоуровневые средства синхронизации
- •4.8. Атомарные транзакции
- •4.8.2. Двухфазный протокол утверждения
- •5. Тупики в распределенных системах
5. Тупики в распределенных системах
Подобны тупикам в централизованных системах, только их еще сложнее обнаруживать и предотвращать.
Стратегии, применяемые при борьбе с тупиками, таковы:
Полное игнорирование проблемы ("алгоритм страуса"). Этот подход в распределенных системах так же популярен, как и в централизованных
Обнаружение тупиков. Для этого существует два основных метода:
централизованное обнаружение тупиков заключается в распространении идеи графа распределения ресурсов на распределенную систему. Координатор строит единый граф для всех узлов системы и на нем выполняет редукцию (приведение)
распределенное обнаружение тупиков. В этом методе инициирование задачи обнаружения тупика начинает процесс, который подозревает, что система находится в тупике. Он посылает тем процессам, которые держат нужный ему ресурс, сообщение из трех информационных полей. Первое поле содержит номер процесса, инициировавшего поиск, и оно не меняется при дальнейшей пересылке. Второе и третье поля содержат соответственно номер процесса, который зависит от ресурса, и номер процесса, который держит этот ресурс. Если, в конце концов, сообщение вернется к тому процессу, который инициировал поиск, то он приходит к выводу, что система зациклена и он должен предпринять действия по ликвидации тупика
Предотвращение тупиков в распределенных системах базируется на идее упорядочивания процессов по их временным меткам. Допустимой будет ситуация, когда "старший" процесс ждет ресурсы, которые захватил "младший" процесс. В обратном случае "младший" процесс должен отказаться от ожидания.