1632
правки
Изменения
м
TODO* [[Диффундирующие вычисления]]* [[Алгоритм Дейкстры и Шолтена в английской википедии<ref>http://en.wikipedia.org/wiki/Dijkstra-Scholten_algorithm</ref>.]]
TODO
Чтобы отправить сообщение большему процессу <tex>P_j</tex>, процесс <tex>P_i</tex> сначала посылает служебное сообщение===17-19 билеты. Упорядочивание сообщений. Определения, ''запрос''иерархия порядков. В ответ <tex>P_j</tex> отправляет ''разрешение''; он может сделать это только в активном состоянииАлгоритм для FIFO. Разрешив, он становится пассивным и остается в этом состоянии, пока не получает сообщение, которое разрешилАлгоритм для причинно-согласованного порядка.Алгоритм для синхронного порядка ===* [[Иерархия порядков сообщений]]* [[Алгоритм для FIFO порядка]]* [[Алгоритм для причинно-согласованного порядка]]* [[Алгоритм для синхронного порядка]]
TODO? (CHECK) *[[Total orderОбщий порядок сообщений]]
===?? билет. Выбор лидера. Алгоритм Чанди-Робертса, и алгоритм Хирчберга-Синклера===
'''Алгоритм Чанди-Робертса''' (Chang and Roberts) выбора лидера <ref>http://en.wikipedia.org/wiki/Chang_and_Roberts_algorithm</ref>.
Пусть процессы находятся в кольце.
Посылаем свой номер налево по кольцу.
При получении номера справа посылаем налево максимум из своего номера и полученного справа.
Если полученный справа номер является нашим номером, то заканчиваем работу.
'''Алгоритм Хирчберга-Синклера''' <ref>http://en.wikipedia.org/wiki/HS_algorithm</ref> <ref>http://web.cs.gc.cuny.edu/~vmitsou/presentation.pdf слайды 16-18</ref>.
TODO
#Отказ одного или нескольких узлов (crash)
#Отказ одного или нескольких каналов (link failure)
#Ненадежная доставка сообщений (omission)
#Византийская ошибка (byzantine failure) (сломавшийся процесс может слать любой мусор)
Теорема FLP (Фишер-Линч-Патерсон):
Для асинхронной системы N потоков с хотя бы одним сбойным потоком нельзя построить решение задачи консенсуса. Разрешением утверждения, которое постулируется * [[Иерархия ошибок в теореме выше, могут стать следующие изменения:распределённых системах]]* Сделать сеть синхронной (ограничить время доставки сообщений)[[Асинхронные и синхронные распределённые системы]]* Сделать алгоритм недетерминированным (случайным)[[Консенсус в распределённой системе]]* Ослабить требования при которых в алгоритме обязан быть прогресс [[Теорема Фишера-Линча-Патерсона (т.е. он обязан завершатьсяFLP) Инфо: http://bailonga.es/tpmtp/lecture09.pdf + презентация Р.Елизарова]]
TODO Результат FLP о невозможности консенсуса верен даже если, процессу разрешено делать операцию «атомарной передачи» сообщения сразу несколько процессам, ибо нет гарантии что все процессы обработают его. Если есть гарантия получения сообщения всеми процессами (или ни одним), то такая операция называется Terminating Reliable Broadcast (TRB). Имея TRB можно тривиально на его основе написать алгоритм консенсуса (процесс <tex>P_0</tex> рассылает всем свой бит, они соглашаются на этот бит, если получили сообщение, иначе на 0). Применение консенсуса: 1) Выбор лидера* [[Иерархия ошибок в распределённых системах]]* [[Асинхронные и синхронные распределённые системы]]* Каждый процесс предлагает себя. [[Консенсус определяет лидера для последующего распределенного алгоритма 2) Terminating Reliable Broadcast * Надо прийти к консенсусу о том, надо ли обрабатывать полученное сообщениев распределённой системе]]* Таким образом, задача TRB эквивалентна задаче [[Переформулировки консенсусав распределённой системе]]
TODO
Пусть * [[Иерархия ошибок в системе имеется ''n'' узлов.Пусть из них максимум ''f'' не работают.Тогда можно решить задачу консенсуса:распределённых системах]]*Каждый узел посылает каждому свое число;[[Асинхронные и синхронные распределённые системы]]*Процессы запоминают пришедшие числа;[[Консенсус в распределённой системе]]*Новые для себя числа процессы рассылают дальше;*Каждый процесс выбирает минимально известное ему число.[[Консенсус в синхронных системах]]
'''Задача двух генералов''' — мысленный эксперимент, призванный проиллюстрировать проблему синхронизации состояния двух систем по ненадежному каналу связи. (* [[https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%B4%D0%B2%D1%83%D1%85_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D0%BB%D0%BE%D0%B2 ВикипедияАсинхронные и синхронные распределённые системы]]) Два процесса в случае ненадежного канала не могут достичь * [[консенсус|консенсусаПроблема византийских генералов]]. Consider the last such message that was successfully delivered. If that last message had not been successfully delivered, then one general at least (presumably the receiver) would decide not to attack. From the viewpoint of the sender of that last message, however, the sequence of messages sent and delivered is exactly the same as it would have been, had that message been delivered. Для недетерминнированного * [[Алгоритм Лампорта- аналогично. Посмотрим на "успешную" последовательность.И отменим успешность последнего сообщения. Для 1Шостака-ого все ок, Пиза]] для 2-ого все испортилось.решения проблемы
'''Задача византийских генералов''' — мысленный эксперимент, призванный проиллюстрировать проблему синхронизации состояния систем === 27 билет. Недетерминированные алгоритмы консенсуса. Алгоритм Бен-Ора. ===* [[Иерархия ошибок в случае, когда коммуникации считаются надёжными, а процессоры — нет. (Вики)распределённых системах]]* [[Асинхронные и синхронные распределённые системы]]* [[Консенсус в распределённой системе]]* [[Алгоритм Бен-Ора]]
Проблема византийских генералов формулируется так: имеется ''n'' генералов из которых ''f'' являются предателями=== 28-29 билеты. Как прийти к консенсусу честным генералам?Paxos. Алгоритм, его свойства. Общие принципы. Основные модификации.===* [[Консенсус в распределённой системе]]* [[Replicated State Machine]]* [[Paxos]]
Известно, что при ''n'' > 3''f'' задача решаема=== 30 билет. Raft. Алгоритм, а иначе нетего свойства.===* [[Консенсус в распределённой системе]]* [[Replicated State Machine]]* [[Raft]]
*Каждый рассылает каждому свое число;=== 31 билет. Транзакции в распределенных системах. 2 Phase Locking===*Каждый рассылает каждому собранные значения;[[Транзакции в распределённых системах]]*В полученных векторах каждый проводит голосование.[[2 Phase Locking]]
Можно доказать, например, что при ''n'' = 3, ''f'' = 1 консенсус невозможен= 32 билет. Транзакции в распределенных системах. 2 Phase Commit.===* [[Транзакции в распределённых системах]]* [[2 Phase Commit]]
Данный вопрос достаточно хорошо описан в английской версии. === 27 билет. Недетерминированные алгоритмы консенсуса. Алгоритм Бен-Ора. ====== 28 билет. Paxos. Алгоритм, его свойства.====== 29 билет. Paxos. Общие принципы. Основные модификации.====== 30 билет. Транзакции в распределенных системах. 2 Phase Locking====== 31 билет. Транзакции в распределенных системах. 2 Phase Commit.====== 32 33 билет. СAP теорема (концепции, подходы, без доказательства)====== 33 билет. Gossip. СRDT и дельта-CRDT (концепции, примеры алгоритмов, см. работу с семинара)===CRDT (Conflict-Free Replicated Data Type) — объект, который можно реплицировать на много узлов и обновлять параллельно без координации между узлами.'''Репликация на основе состояния'''Получив обновление от клиента, реплика сперва обновляет локальное состояние, затем отправляет это состояние другой реплике. Та применяет функцию merge, чтобы объединить свое состояние с полученным и отправляет его еще одной реплике, и т. д.. * [[CAP теорема]]
Достаточные условия согласованности:1=== 34 билет. Gossip. Множество возможных состояний образует полурешеткуСRDT и дельта-CRDT (концепции, примеры алгоритмов, тсм.е. частично упорядоченное множество работу с операцией наименьшей верхней грани, причем merge реализует эту операцию;семинара)===* [[Gossip-протоколы]]2. Обновления возрастают* [[CRDT]]
'''Репликация на основе операций'''Реплика посылает не все состояние, а только обновление всем репликам=== 35 билет. Самостабилизирующиеся алгоритмы. Согласованность можно гарантировать, если обновления коммутативныИдея.Алгоритмы взаимного исключения и поиска остовного дерева ===* [[Иерархия ошибок в распределённых системах]]* [[Самостабилизирующиеся алгоритмы]]
rollbackEdits.php mass rollback
[[Категория: Параллельное программирование]]
=Программирование параллельных и распределенных систем=
*[[Базовые определения и формализм]]
*[[Алгоритмы взаимного исключения]]
*[[Стек Трайбера]]
*[[Формализм распределённых систем]]
==6 семестр==
===Введение. Масштабируемость распределенных и параллельных систем, закон Амдала. Отличия распределенных систем от систем с разделяемой памятью===
===3-4 билеты. Часы с прямой зависимостью (и их свойства) и матричные часы===
*[[Параллельное программирование: Часы с прямой зависимостью|Часы с прямой зависимостью]]
*[[Параллельное программирование: Матричные часы|Матричные часы]](билет весной 2019 года убран)
===5-7 билеты. Взаимное исключение в распределенной системе. Централизованный, алгоритм Лампорта, алгоритм Рикарта и Агравалы===
===15 билет. Диффундирующие вычисления. Останов. Алгоритм Дейкстры и Шолтена===
===16 билет. Локально-стабильные предикаты, согласованные интервалы, барьерная синхронизация (3 алгоритма). Применение для определения взаимной блокировки===
*[[Локально стабильный предикат]]
*[[Согласованный интервал]]
*[[Барьерная синхронизация (3 алгоритма)]]
* Применение для определения дедлока. Каждый процесс <tex>P_i</tex> поддерживает свою часть графа ожидания (ребра, которые из него исходят), а также флажок changed, который равен true, если его часть графа поменялась с последнего сообщения координатору. Координатор периодически опрашивает процессы, получая их графы. Процесс отвечает новым графом, если есть изменение, а иначе шлет notChanged. Координатор собирает весь граф ожидания. Если в нем есть цикл, он отправляет процессам запрос на изменение. Если все процессы в цикле ответили notChanged, дедлок найден. Рассмотрим два среза: * когда взаимно блокирующие процессы прислали координатору свои графы;* когда они прислали ему notChanged.Эти срезы не обязательно согласованны, но они барьерно-синхронизированы (из-за сообщений координатору и обратно), а значит образуют согласованный интервал. Поэтому между ними есть согласованный срез <tex>G</tex>, а так как состояние процессов в цикле не менялось на всем интервале, и в первом срезе предикат выполнен, для <tex>G</tex> он также выполнен. ===17-18 билеты. Упорядочивание сообщений. Определения, иерархия порядков. Алгоритм для FIFO. Алгоритм для причинно-согласованного порядка ===TODO Порядок сообщений:# асинхронный (нет порядка) # FIFO (сообщения доходят получателю в том порядке, в котором они были ему отправлены в смысле одного потока)# причинно-следственный (если одно сообщение было отправлено раньше другого, то оно будет доставлено раньше другого (в системе целиком, а не в смысле одного потока, как в FIFO)# синхронный (можно выстроить ребра передачи сообщений без пересечений) Алгоритм FIFO основан на нумерации сообщений.<br>Псевдокод алгоритма для причинно-согласованного порядка. Вместе с сообщением отправляем матрицу M: M[i, j] — количество сообщений, отправленных процессом i процессу j. '''var''' M:array[l..N, 1..N] of integer initially 0; To send a message to <tex>P_j</tex>: M [i,j] := M[i,j] + 1; send M as part of the message; To receive a message with matrix W from Pj: '''enabled if''' W[j,i] = M [j,i] + 1 <tex>\land</tex> <tex> \forall k \neq j</tex> <tex>M[k, iОпределение взаимной блокировки] \geqslant W[k, i]</tex> M := max(M, W) ===19 билет. Упорядочивание сообщений. Определения, иерархия порядков. Алгоритм для синхронного порядка=== Алгоритм для синхронного порядка основан на иерархии процессов.Упорядочим процессы по номеру, назовем сообщение ''большим'', если номер отправителя больше номера получателя, и ''малым'' иначе.Процесс может быть в ''активном'' или ''пассивном состоянии''. Изначально все активны.Процесс может отправить большое сообщение, только если он активен. После отправки он становится пассивным и не может ни отправлять, ни принимать сообщения, пока не получит от получателя ack.
===20-21 билеты. Общий порядок (total order). Алгоритмы Лампорта и Скина===
*[[Алгоритм Лампорта]]
*[[Алгоритм Скина]]
===22 билет. Иерархия ошибок в распределенных системах. Отказ узла в асинхронной системе - невозможность консенсуса (доказательство Фишера-Линча-Патерсона)===
===23 билет. Консенсус в распределенных системах. Применение консенсуса: выбор лидера, terminating reliable broadcast===
===24 билет. Синхронные системы. Алгоритм для консенсуса в случае отказа заданного числа узлов===
===25 билет. Синхронные системы. Проблема византийских генералов. Алгоритм для N >= 4, f = 1. Объяснить идею обобщения для f > 1===
===26 билет. Синхронные системы. Проблема византийских генералов. Невозможность решения при N = 3, f = 1===
* [[Асинхронные и синхронные распределённые системы]]
* [[Проблема византийских генералов]]
* [[Невозможность византийского консенсуса]] при N=3, f=1.
==Ссылки==
<references/>