Изменения

Перейти к: навигация, поиск

Кворум

1666 байт добавлено, 19:28, 4 сентября 2022
м
rollbackEdits.php mass rollback
[[Категория: Параллельное программирование]]
{{Определение|definition='''Кворум''' - это семейство $Q$ подмножеств множества процессов $2^\mathbb P$ причем такое:* $Q$ замкнуто относительно взятия надмножества, что любые т.е. если $Q \ni A \subseteq B$, то $B \in Q$* Любые два элемента (т.е подмножества относительно множества процессов) этого семейства имеют непустое пересечение. }}Кворум позволяет решить проблему отсутствия взаимного исключения в CS : выбираем кворум $Q$, а дальше каждая вершина должна получить разрешение на вход в критическую секцию у кворума.Фишка в том, что каждая вершина может выбрать свой собственный кворум.Например, при оптимизации задержки можно послать запрос всем, а войти в секцию, как только получили подтверждение от хоть какого-нибудь семейства из кворума. Тонкость: если каждая вершина просто разрешает войти в критическую секцию первому приславшему запрос,то получаем deadlock из- за проблем с порядком сообщений при broadcast (например, если у нас кворум — это два выделенных координатора).Так что нам нужно лишь спросить все процессы кворуматребовать total order multicast, например, [[Алгоритм Скина|алгоритмом Скина]] (дальше в билетах, тут на него просто ссылаемся). == Пример ==Рассмотрим 5 процессов — P1, P2, P3, P4, P5.
Пример:
Рассмотрим 5 процессов -- P1, P2, P3, P4, P5.
Кворумом для них будет следующее семейство: {[P1, P2, P3], [P3, P4, P5]}.
Такое Кстати, такое семейство тоже будет кворумом: {[P1, P2, P3, P4, P5]}.
Кворум замкнут по надмножеству.
ПриЕще примеры: централизованный алгоритм (кворум — все подмножества, содержащие лидера), [[Кворум простого большинства|кворум простого большинства]], [[Кворум рушащейся стенки|"рушащаяся" стенка]].
1632
правки

Навигация