Редактирование: Векторные часы
Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
[[Категория: Параллельное программирование]] | [[Категория: Параллельное программирование]] | ||
+ | '''Логическими векторными часами''' называется функция из множества событий распределенных систем (внутреннее событие, событие отправки сообщения и событие приема сообщения) в вектор из целых чисел. | ||
− | + | * каждый поток имеет целочисленный n-мерный вектор (n – количество потоков), проинициализированный нулями. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | * каждый поток имеет целочисленный | ||
* в случае внутреннего события счётчик текущего процесса увеличивается на 1; | * в случае внутреннего события счётчик текущего процесса увеличивается на 1; | ||
* перед отправкой сообщения внутренний счётчик, соответствующий текущему процессу, увеличивается на 1, и вектор целиком прикрепляется к сообщению; | * перед отправкой сообщения внутренний счётчик, соответствующий текущему процессу, увеличивается на 1, и вектор целиком прикрепляется к сообщению; | ||
− | * при получении сообщения счётчик текущего процесса увеличивается на 1, далее значения в текущем векторе выставляются в | + | * при получении сообщения счётчик текущего процесса увеличивается на 1, далее значения в текущем векторе выставляются в максимум от текущего и полученного. |
Значением вышеупомянутой функции на событии является значение переменной, принадлежащей тому же потоку, что и событие. Стоит заметить, что векторное время уникально для каждого события. | Значением вышеупомянутой функции на событии является значение переменной, принадлежащей тому же потоку, что и событие. Стоит заметить, что векторное время уникально для каждого события. | ||
Оказывается, что если в распределенной системе ввести [[Параллельное программирование: Частичный порядок|частичный порядок предшествования на событиях]], то имеет место следующее утверждение:<br> | Оказывается, что если в распределенной системе ввести [[Параллельное программирование: Частичный порядок|частичный порядок предшествования на событиях]], то имеет место следующее утверждение:<br> | ||
− | ''a'' предшествует ''b'', тогда и только тогда, когда логическое время векторных часов события ''a'' меньше логического времени события ''b'' (при этом вектор ''x'' меньше вектора ''y'' | + | ''a'' предшествует ''b'', тогда и только тогда, когда логическое время векторных часов события ''a'' меньше логического времени события ''b'' (при этом вектор ''x'' меньше вектора ''y'', если для каждой компоненты выполяется <tex>x_i \le y_i</tex> и <tex>\exists j: x_j < y_j</tex>). |
Важным свойством векторных часов в распределенных системах с введенным [[Параллельное программирование: Частичный порядок|частичным порядком предшествования]] оказывается то, что при сравнении векторов времени двух событий достаточно сравнивать только компоненты процессов, которым эти события принадлежат. | Важным свойством векторных часов в распределенных системах с введенным [[Параллельное программирование: Частичный порядок|частичным порядком предшествования]] оказывается то, что при сравнении векторов времени двух событий достаточно сравнивать только компоненты процессов, которым эти события принадлежат. |