Барьерная синхронизация (3 алгоритма) — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Определение и полезность)
м (rollbackEdits.php mass rollback)
 
(не показано 5 промежуточных версий 2 участников)
Строка 1: Строка 1:
 +
[[Категория: Параллельное программирование]]
 
== Определение и полезность ==
 
== Определение и полезность ==
 
+
{{Определение
Интервал <tex>[G, H]</tex> (<tex>G \subseteq H</tex>) называется барьерно синхронизирующим(?), если для любых событий <tex>e \in G</tex> и <tex>f \notin H</tex> верно, что $e \rightarrow f$.
+
|definition=
 
+
Интервал <tex>[G, H]</tex> (<tex>G \subseteq H</tex>) называется '''барьерно-синхронизированным''', если для любых событий <tex>e \in G</tex> и <tex>f \notin H</tex> верно, что $e \rightarrow f$.
 +
}}
 +
Другими словами, все события слева от интервала произошло до всех событий справа от интервала.
 
Это сильнее [[Согласованный интервал|согласованных интервалов]]: те требуют лишь отсутствия стрелок справа налево (коих в барьере не может быть, потому что есть вообще все возможные стрелки слева направо, а в две стороны стрелки не бывает).
 
Это сильнее [[Согласованный интервал|согласованных интервалов]]: те требуют лишь отсутствия стрелок справа налево (коих в барьере не может быть, потому что есть вообще все возможные стрелки слева направо, а в две стороны стрелки не бывает).
  
Как следствие, внутри любого барьерно-синхронизирующего интервала тоже есть согласованный срез (где-то, не знаем, где).
+
Как следствие, внутри любого барьерно-сихнронизированного интервала тоже есть согласованный срез (где-то, не знаем, где).
А искать такой интервал намного проще, чем [[Алгоритм Чанди-Лампорта|искать срез]] и по коду, и по количествуи сообщений (линия вместо квадрата).
+
А искать такой интервал намного проще, чем [[Алгоритм Чанди-Лампорта|искать согласованный срез]] и по коду, и по количеству сообщений (линия вместо квадрата).
  
 
== Алгоритмы ==
 
== Алгоритмы ==
  
*[[Централизованный]]: все посылают токен координатору, затем он посылает всем. <tex>O(N)</tex> сообщений, низкая задержка;
+
*[[Централизованный]]: все посылают токен координатору, затем он посылает всем. <tex>2N</tex> сообщений, низкая задержка;
* Каждый посылает каждому токен. <tex>O(N^2)</tex> сообщений, низкая задержка;
+
* Каждый посылает каждому токен. <tex>N^2</tex> сообщений, низкая задержка;
* Token по кольцу, <tex>O(N)</tex> сообщений, высокая задержка.
+
* Token по кольцу два раза, <tex>2N-1</tex> сообщение, высокая задержка (вроде можно $2N-2$ сообщений).
 
[[Файл:Token_ring.png|200px|thumb|left]]
 
[[Файл:Token_ring.png|200px|thumb|left]]

Текущая версия на 19:05, 4 сентября 2022

Определение и полезность

Определение:
Интервал [math][G, H][/math] ([math]G \subseteq H[/math]) называется барьерно-синхронизированным, если для любых событий [math]e \in G[/math] и [math]f \notin H[/math] верно, что $e \rightarrow f$.

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

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

Алгоритмы

  • Централизованный: все посылают токен координатору, затем он посылает всем. [math]2N[/math] сообщений, низкая задержка;
  • Каждый посылает каждому токен. [math]N^2[/math] сообщений, низкая задержка;
  • Token по кольцу два раза, [math]2N-1[/math] сообщение, высокая задержка (вроде можно $2N-2$ сообщений).
Token ring.png