Главная » Просмотр файлов » Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)

Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 77

Файл №1162619 Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)) 77 страницаЭ. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619) страница 772019-09-20СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 77)

Если были получены только сообщения ГОТОВО, топонятно, что обычный обмен сообщениями отсутствует, а значит, вычислениязавершены. В противном случае процесс Р инициирует создание нового снимкасостояния и продолжает делать это, пока не получит полного комплекта сообще­ний ГОТОВО.Были разработаны и другие решения задачи определения момента заверше­ния вычислений, рассмотренной в этом пункте. Дополнительные ссылки и при-296Глава 5. Синхронизациямеры можно почерпнуть из [17, 421]. Обзор и сравнение различных решенийможно найти также в [285, 372].5.4. Алгоритмы голосованияМногие распределенные алгоритмы требуют, чтобы один из процессов был коор­динатором, инициатором или выполнял другую специальную роль. Обычно неважно, какой именно процесс выполняет эти специальные действрш, главное, что­бы он вообще существовал.

В этом разделе мы рассмотрим алгоритмы, предна­значенные для выбора координатора (это слово мы будем использовать в качест­ве обобщенного имени специального процесса).Если все процессы абсолютно одинаковы и не имеют отличительных характе­ристик, способа выбрать один из них не существует. Соответственно, мы должнысчитать, что каждый процесс имеет уникальный номер, например сетевой адрес(для простоты будем считать, что на каждую машину приходится по процессу).В общем, алгоритмы голосования пытаются найти процесс с максимальнымномером и назначить его координатором. Алгоритмы разлршаются способамипоиска.Мы также считаем, что каждый процесс знает номера всех остальных процес­сов. Чего процессы не знают, так это то, какие из них в настоящее время работают,а какие нет. Алгоритм голосования должен гарантировать, что если голосованиеначалось, то оно, рассмотрев все процессы, решит, кто станет новым координато­ром. Известны различные алгоритмы, например, [153, 159, 419].5 .

4 . 1 . Алгоритм забиякив качестве первого примера рассмотрим алгоритм забияки {bully algorithm), пред­ложенный в [159]. Когда один из процессов замечает, что координатор больше неотвечает на запросы, он инициирует голосование. Процесс, например Р, проводитголосование следующим образом.1. Р посылает всем процессам с большими, чем у него, номерами сообщениеГОЛОСОВАНИЕ.2. Далее возможно два варианта развития событий:> если никто не отвечает, Р выигрывает голосование и становится координа­тором;^ если один из процессов с большими номерами отвечает, он становится ко­ординатором, а работа Р на этом заканчивается.В любой момент процесс может получить сообщение ГОЛОСОВАНИЕ от од­ного из своих коллег с меньшим номером.

По получении этого сообщения полу­чатель посылает отправителю сообщение ОК, показывая, что он работает и готовстать координатором. Затем получатель сам организует голосование. В концеконцов, все процессы, кроме одного, отпадут, этот последний и будет новым ко-5.4. Алгоритмы голосования297ординатором.

Он уведомит о своей победе посылкой всем процессам сообщения,гласящего, что он новый координатор и приступает к работе.Если процесс, который находился в нерабочем состоянии, начинает работать,он организует голосование. Если он оказывается процессом с самым большим изработающих процессов номером, он выигрывает голосование и берет на себяфункции координатора. Итак, побеждает всегда самый большой парень в горо­дишке, отсюда и название «алгоритм забияки».На рис. 5.11 приведен пример работы алгоритма забияки. Группа состоит извосьми процессов, пронумерованных от О до 7.

Ранее коордршатором был про­цесс 7, но он завис. Процесс 4 первым замечает это и посылает сообщениеГОЛОСОВАНИЕ всем процессам с номерами больше, чем у него, то есть процес­сам 5, 6 и 7, как показано на рис. 5.11, а. Процессы 5 и 6 отвечают ОК, как пока­зано на рис. 5.11, б.

После получения первого из этих ответов процесс 4 понима­ет, что «ему не светит» и коордршатором будет одна из этих более важныхличностей. Он садится на место и ожидает, кто станет победителем (хотя ужесейчас он может сделать довольно точное предположение).© 0D^*» ©© ^ ©©Предыдущийкоординатор «завис»©© ^ ©©© ^ ©гаРис.

5 . 1 1 . Голосование по алгоритму забиякиНа ppic. 5.11, в показано, как оба оставшихся процесса, 5 и 6, продолжают го­лосование. Каждый посылает сообщения только тем процессам, номера у кото­рых больше их собственных. На рис. 5.11, г процесс 6 сообгцает процессу 5, что298Глава 5. Синхронизацияголосование будет вести он. В это время 6 понимает, что процесс 7 мертв, а зна­чит, победитель — он сам.

Если информация о состоянии сохраняется на дискеили где-то еще, откуда ее можно достать, когда с прежним координатором чтонибудь случается, процесс 6 должен записать все что нужно на диск. Готовый за­нять свою должность процесс 6 заявляет об этом путем рассылки сообщенияКООРДИНАТОР всем работающим процессам. Когда 4 получит это сообщение,он продолжит работу с той операции, которую пытался выполнить, когда обна­ружил, что процесс 7 мертв, используя теперь в качестве координатора процесс 6.Таким образом, мы обошли сбой в процессе 7, и работа продолжается.Если процесс 7 запустится снова, ему будет достаточно послать всем осталь­ным сообщение КООРДИНАТОР и вынудить их подчиниться.5.4.2. Кольцевой алгоритмДругой алгоритм голосования основан на использовании кольца.

В отличие отнекоторых других кольцевых алгоритмов в этом не требуется маркер. Мы пред­полагаем, что процессы физически или логически упорядочены, так что каждыйиз процессов знает, кто его преемник. Когда один из процессов обнаруживает, чтокоординатор не функционирует, он строит сообщение ГОЛОСОВАНИЕ, содержа­щее его номер процесса, и посылает его своему преемнику. Если преемник не ра­ботает, отправитель пропускает его и переходит к следующему элементу кольцаили к следующему, пока не найдет работающий процесс. На каждом шаге отпра­витель добавляет свой номер процесса к списку в сообщении, активно продвигаясебя в качестве кандидата в координаторы.В конце концов, сообщение вернется к процессу, который начал голосование.Процесс распознает это событие по приходу сообщения, содержащего его номерпроцесса.

В этот момент тип сообщения изменяется на КООРДИНАТОР и вновьотправляется по кругу, на этот раз с целью сообщить всем процессам, кто сталкоординатором (элемент списка с максимальным номером) и какие процессы вхо­дят в новое кольцо. После того как это сообщение один раз обойдет все кольцо,оно удаляется и процессы кольца возвращаются к обычной работе.Сообщениео голосовании[2]Предыдущийкоординаторвыбыл из строяНе отвечаетРис.

5.12. Кольцевой алгоритм голосования5.5. Взаимное исключение299На рис. 5.12 мы видим, что происходит, когда два процесса, 2 и 5, одновре­менно обнаруживают, что предыдущий координатор, процесс 7, перестал рабо­тать. Каждый из них строит сообщение ГОЛОСОВАНИЕ и запускает это сообще­ние в путь по кольцу независимо от другого. В конце концов, оба сообщенияпроходят все кольцо, и процессы 2 и 5 превращают их в сообщения КООРДИ­НАТОР, которые пересылаются тем же элементам кольца и в том же порядке.Когда эти сообщения, в свою очередь, совершают полный круг, они удаляются.Больше не происходит ничего такого, что потребовало бы дополнительного об­мена сообщениями.

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

Теперь мы рассмотримнесколько примеров того, как именно критические области и взаимные исключе­ния реализуются в распределенных системах. Описание этих методов и библио­графию по ним можно найти в [373, 420].5 . 5 . 1 . Централизованный алгоритмНаиболее простой способ организации взаимных исключений в распределенныхсистемах состоит в том, чтобы использовать методы их реализации, принятые воднопроцессорных системах. Один из процессов выбирается координатором (на­пример, процесс, запущенный на машине с самым большим сетевым адресом).Каждый раз, когда этот процесс собирается войти в критическую область, он по­сылает координатору сообщение с запросом, в котором уведомляет, в какую кри­тическую область он собирается войти, и запрашивает разрешение на это.

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

Конкрет­ный способ запрещения доступа зависит от особенностей системы. На рис. 5.13, бкоординатор просто не отвечает, блокируя этим процесс 2, который ожидает от­вета. Он также может послать ответ, гласящий «доступ запрещен». В любом случаеон ставит запрос от процесса 2 в очередь и ожидает дальнейших сообщений.300Глава 5. Синхронизация©0©Запрос©©©Запрос /^ОтветанетОчередьпуста©Освобождениекритической >1г / О КобластиШКоординаторРис.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6532
Авторов
на СтудИзбе
301
Средний доход
с одного платного файла
Обучение Подробнее