Редактирование: Векторные часы

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

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
 
[[Категория: Параллельное программирование]]
 
[[Категория: Параллельное программирование]]
 +
'''Логическими векторными часами''' называется функция из множества событий распределенных систем (внутреннее событие, событие отправки сообщения и событие приема сообщения) в вектор из целых чисел.
  
{{Определение
+
* каждый поток имеет целочисленный n-мерный вектор (n количество потоков), проинициализированный нулями.
|id = vector_clock
 
|definition =
 
'''Векторные часы''' — это функция $VC(e) \colon E \to \mathbb R^n$ (из событий в вектор константного размера) такая, что для любых двух событий $e$ и $f$ следующие утверждения равносильны:
 
* $e \to f$ ($e$ [[Частичный порядок|произошло-до]] $f$)
 
* $VC(e) < VC(f)$ (все компоненты $VC(e)$ меньше всех компонент $VC(f)$)
 
}}
 
 
 
Алгоритм векторных часов можно построить из [[Логические часы Лампорта|логических часов Лампорта]], если попросить каждый процесс помнить счётчики всех процессов, а не только свой:
 
 
 
* каждый поток имеет целочисленный $n$-мерный вектор ($n$ — количество потоков), проинициализированный нулями.
 
 
* в случае внутреннего события счётчик текущего процесса увеличивается на 1;
 
* в случае внутреннего события счётчик текущего процесса увеличивается на 1;
 
* перед отправкой сообщения внутренний счётчик, соответствующий текущему процессу, увеличивается на 1, и вектор целиком прикрепляется к сообщению;
 
* перед отправкой сообщения внутренний счётчик, соответствующий текущему процессу, увеличивается на 1, и вектор целиком прикрепляется к сообщению;
* при получении сообщения счётчик текущего процесса увеличивается на 1, далее значения в текущем векторе выставляются в покомпонентный максимум от текущего и полученного.
+
* при получении сообщения счётчик текущего процесса увеличивается на 1, далее значения в текущем векторе выставляются в максимум от текущего и полученного.
  
 
Значением вышеупомянутой функции на событии является значение переменной, принадлежащей тому же потоку, что и событие. Стоит заметить, что векторное время уникально для каждого события.
 
Значением вышеупомянутой функции на событии является значение переменной, принадлежащей тому же потоку, что и событие. Стоит заметить, что векторное время уникально для каждого события.
  
 
Оказывается, что если в распределенной системе ввести [[Параллельное программирование: Частичный порядок|частичный порядок предшествования на событиях]], то имеет место следующее утверждение:<br>
 
Оказывается, что если в распределенной системе ввести [[Параллельное программирование: Частичный порядок|частичный порядок предшествования на событиях]], то имеет место следующее утверждение:<br>
''a'' предшествует ''b'', тогда и только тогда, когда логическое время векторных часов события ''a'' меньше логического времени события ''b'' (при этом вектор ''x'' меньше вектора ''y'' покомпонентно с одной строгостью, т.е если для каждой компоненты выполяется <tex>x_i \le y_i</tex> и <tex>\exists j: x_j < y_j</tex>).
+
''a'' предшествует ''b'', тогда и только тогда, когда логическое время векторных часов события ''a'' меньше логического времени события ''b'' (при этом вектор ''x'' меньше вектора ''y'', если для каждой компоненты выполяется <tex>x_i \le y_i</tex> и <tex>\exists j: x_j < y_j</tex>).
  
 
Важным свойством векторных часов в распределенных системах с введенным [[Параллельное программирование: Частичный порядок|частичным порядком предшествования]] оказывается то, что при сравнении векторов времени двух событий достаточно сравнивать только компоненты процессов, которым эти события принадлежат.
 
Важным свойством векторных часов в распределенных системах с введенным [[Параллельное программирование: Частичный порядок|частичным порядком предшествования]] оказывается то, что при сравнении векторов времени двух событий достаточно сравнивать только компоненты процессов, которым эти события принадлежат.

Пожалуйста, учтите, что любой ваш вклад в проект «Викиконспекты» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Викиконспекты:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)

Шаблон, используемый на этой странице: